在 elasticsearch 中为消息字段创建自定义 grok 模式

Create custom grok pattern to message filed in elasticsearch

我有一个与 grok 处理器相关的查询。 例如,这是我提交的消息

{
"message":"agentId:agent003"
}

我想理解这个,我的输出应该是这样的

{
"message":"agentId:agent003",
"agentId":"agent003"
}

有人可以帮我解决这个问题吗?如果我能够在一个领域做到这一点,我就可以管理我的其余领域。提前致谢。

这是我在elasticsearch中创建的管道

PUT _ingest/pipeline/dissectpipeline
{
  "description" : "split message content",
  "processors": [
    {
      "dissect": {
      "field": "message",
      "pattern" : "%{apm_application_message.agentId}:%{apm_application_message.agentId}"
   }
    }
  ]
}

中控新增filebeat模块其他配置

- pipeline:
    if: ctx.first_char == '{'
    name: '{< IngestPipeline "dissectpipeline" >}'

我的 filebeat 没有错误,它工作正常,但我无法在索引中找到任何字段,如 apm_application_message.agentId。

如何确保我的管道正常工作。另外,如果我做错了什么,请告诉我。

我建议使用 dissect filter 而不是 grok,这样更直观也更容易使用。

dissect {
  mapping => {
    "message" => "%{?agentId}:%{&agentId}"
  }
}

如果您使用的是 Filebeat,还可以使用 dissect processor:

processors:
  - dissect:
      tokenizer: "%{?agentId}:%{&agentId}"
      field: "message"
      target_prefix: ""