创建自定义 grok 模式以在 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}"
}
}
]
}

中央管理增加了文件节拍模块其他配置

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

我的文件节拍没有错误,它工作正常,但我无法在索引中找到任何像 apm_application_message.agentId 这样的字段。

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

我建议使用dissect过滤器代替 grok,它更直观、更易于使用。

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

如果您使用的是 Filebeat,也可以使用dissect处理器:

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

相关内容

  • 没有找到相关文章

最新更新