[英]add_field is not working in my case in logstash
_source 是“tot_rjt_file_cnt:0 @version:1 log.file.path:/home/xxx/xxx-logs/ase/load01/xxxxx.xxx.com_SORT_dis_loader_daily_rpt.log log.offset:67,825 tot_rty_file_cnt:0 ecs.version:1.0。 0 agent.version:7.2.0 agent.ephemeral_id:0b7a5cff-79c8-4d45-9936-9d14db9eab54 agent.hostname:xxxxxx.xxxxx.com agent.id:fa4e2cd0-7ad4-"
这里我的日志文件路径是
/home/xxxx/xxx-logs/ase/load01/xxxxxx.xxxx.com_SORT_dis_loader_daily_rpt.log
我想用“ase”创建新文件。 添加logstash过滤器:
filter {
grok { match => { "message" => "%{WORD:timestamp}\s%{BASE10NUM:total_file_cnt:int}\s%{BASE10NUM:total_ld_ok_cnt:int}\s%{BASE10NUM:total_ld_time:float}\s%{BASE10NUM:sec_per_tot_file:float}\s%{BASE10NUM:sec_per_ld_file:float}\s%{BASE10NUM:tot_rty_file_cnt:int}\s%{BASE10NUM:tot_rjt_file_cnt:int}" }
overwrite => [ "message" ]
}
date {
locale => "en"
match => [ "timestamp", "yyyyMMdd" ]
}
if "ase" in [log.file.path] { mutate { add_field => { "site" => "ASE" } }
}
}
请您帮忙将字段名称添加为“站点”,值为“ASE”
谢谢。
问题来自if
中的条件:
if "ase" in [log.file.path] { }
将查看数组log.file.path
包含字符串ase
,显然不是这种情况(因为log.file.path
不是数组)。
如果要检查log.file.path
包含/ase/
,请使用:
if [log.file.path] =~ "\/ase\/" { }
您的log
字段是带有嵌套字段的 json object。
{
"log": {
"file": {
"path": "your-filename.log"
}
}
}
在logstash中访问嵌套字段的正确方法是使用方括号,尝试将条件更改为在字段名称中使用方括号。
if "ase" in [log][file][path] {
mutate {
add_field => { "site" => "ASE" }
}
}
[log][file][path]
与log.file.path
,第一个是 json object,这是beats
收集器存储数据的方式,第二个是名称中带有点的字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.