如何在Elastic栈ingest pipeline中按条件添加自定义字段?
Filebeat 新增app_statuscode字段配置方案
你可以通过Filebeat内置的processors处理器实现该需求,具体有两种常用配置方式:
方案1:条件判断+add_fields处理器(推荐,配置简单易维护)
该方案直接用Filebeat原生的条件匹配规则实现,无需额外依赖,配置直接添加到对应filebeat.yml的input块内(仅对当前输入生效),或全局processors块下(对所有输入生效)即可:
processors: # 匹配message含404/502的场景,标记为failed - add_fields: fields: app_statuscode: "failed" when: or: - contains: message: "404" - contains: message: "502" # 匹配message含200 OK的场景,标记为successful - add_fields: fields: app_statuscode: "successful" when: contains: message: "200 OK"
注意事项:
- 如果你的日志中存储状态码的字段名是大写的
Message,请将配置中的message替换为实际的字段名 - 若需要开启大小写严格匹配,可在
contains下添加参数case_sensitive: true
方案2:script脚本处理器(适合后续规则复杂扩展场景)
如果后续需要新增更多状态码的映射规则,可以用内置的javascript脚本处理器实现,配置示例如下:
processors: - script: lang: javascript id: calculate_app_statuscode source: > function process(event) { // 读取日志的message字段内容 var msg = event.Get("message") || ""; if (msg.includes("404") || msg.includes("502")) { event.Put("app_statuscode", "failed"); } else if (msg.includes("200 OK")) { event.Put("app_statuscode", "successful"); } }
配置生效验证
修改完配置后,先执行以下命令校验配置语法合法性:filebeat test config
返回Config OK后重启Filebeat进程即可生效。
内容的提问来源于stack exchange,提问作者sidharth vijayakumar
相关产品推荐
相关产品推荐

