字符串解析
编辑字符串解析
编辑dissect
处理器使用定义的模式对传入的字符串进行分词。
示例
编辑- dissect: tokenizer: "%{key1} %{key2} %{key3|convert_datatype}" field: "message" target_prefix: "dissect"
有关完整示例,请参见 解析示例。
配置设置
编辑Elastic Agent 处理器在摄取管道 *之前* 执行,这意味着您的处理器配置不能引用由摄取管道或 Logstash 创建的字段。有关更多限制,请参阅 使用处理器的局限性有哪些?
名称 | 必需 | 默认值 | 描述 |
---|---|---|---|
|
是 |
用于定义解析模式的字段。您可以使用管道字符 ( |
|
|
否 |
|
要进行分词的事件字段。 |
|
否 |
|
将提取值写入的字段名称。当定义为空字符串时,处理器会在事件的根目录下创建键。当目标键已存在于事件中时,处理器不会替换它,而是会记录错误;您需要在使用 dissect 之前删除或重命名该键,或者启用 |
|
否 |
|
如果分词器无法匹配消息字段,是否返回错误。如果为 |
|
否 |
|
是否覆盖现有键。如果为 |
|
否 |
|
启用提取值的修整。有助于删除前导和尾随空格。可能的值为
|
|
否 |
( |
启用 |
为了使分词成功,必须找到并提取所有键。如果找不到键,则会记录错误,并且不会对原始事件进行任何修改。
键可以包含除保留的后缀或前缀修饰符之外的任何字符:/
、&
、+
、#
和 ?
。
有关支持的条件列表,请参见 条件。
解析示例
编辑在此示例中,假设应用程序生成以下消息
"321 - App01 - WebServer is starting" "321 - App01 - WebServer is up and running" "321 - App01 - WebServer is scaling 2 pods" "789 - App02 - Database will be restarted in 5 minutes" "789 - App02 - Database is up and running" "789 - App02 - Database is refreshing tables"
使用 dissect
处理器将每条消息拆分为三个字段,例如 service.pid
、service.name
和 service.status
- dissect: tokenizer: '"%{service.pid|integer} - %{service.name} - %{service.status}"' field: "message" target_prefix: ""
此配置会生成如下字段
"service": { "pid": 321, "name": "App01", "status": "WebServer is up and running" },
service.name
是一个 ECS 关键字字段,这意味着您可以在 Elasticsearch 中使用它进行过滤、排序和聚合。
如果可能,请使用与 ECS 兼容的字段名称。有关更多信息,请参见 Elastic 通用模式 文档。