>我有一个与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: ""