解析字符串编辑

dissect 处理器使用定义的模式对传入的字符串进行标记。

示例编辑

  - dissect:
      tokenizer: "%{key1} %{key2} %{key3|convert_datatype}"
      field: "message"
      target_prefix: "dissect"

有关完整示例,请参阅 解析示例

配置设置编辑

Elastic Agent 处理器在摄取管道之前执行,这意味着您的处理器配置不能引用由摄取管道或 Logstash 创建的字段。有关更多限制,请参阅 使用处理器的局限性是什么?

名称 必需 默认值 描述

tokenizer

用于定义 解析 模式的字段。您可以使用管道字符 (|) 作为分隔符在键后提供可选的转换数据类型,以将值从 string 转换为 integerlongfloatdoublebooleanIP

field

message

要标记的事件字段。

target_prefix

dissect

将提取值存储到的字段的名称。当定义为空字符串时,处理器将在事件的根目录下创建键。当目标键已存在于事件中时,处理器不会替换它并记录错误;您需要在使用 dissect 之前删除或重命名键,或者启用 overwrite_keys 标志。

ignore_failure

false

如果标记器无法匹配消息字段,是否返回错误。如果为 true,处理器会静默地恢复原始事件,允许执行后续处理器(如果有)。如果为 false,处理器会记录错误,阻止执行其他处理器。

overwrite_keys

false

是否覆盖现有键。如果为 true,处理器会覆盖事件中现有的键。如果为 false,如果键已存在,处理器将失败。

trim_values

none

启用提取值的修剪。用于删除前导和尾随空格。可能的值是

  • none:不执行修剪。
  • left:值在左侧(前导)进行修剪。
  • right:值在右侧(尾随)进行修剪。
  • all:值在前后进行修剪。

trim_chars

(" ") 用于修剪空格字符

trim_values 启用时,要从值中修剪的字符集。要修剪多个字符,请将此值设置为包含所有要修剪的字符的字符串。例如,trim_chars: " \t" 修剪空格和制表符。

为了使标记成功,必须找到并提取所有键。如果找不到键,则会记录错误,并且不会对原始事件进行任何修改。

键可以包含除保留的后缀或前缀修饰符以外的任何字符:/,&, +, #?

有关支持条件的列表,请参阅 条件

解析示例编辑

对于此示例,假设应用程序生成以下消息

"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.pidservice.nameservice.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 Common Schema 文档。