在我的情况下,logstash中的add_field无法正常工作

  

_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" } }
        }

}

请帮助您将add_field名称作为“网站”,值是“ ASE”

谢谢。

killyoucom 回答:在我的情况下,logstash中的add_field无法正常工作

问题来自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对象。

{ 
  "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对象,这是beats收集器存储数据的方式,第二个是名称中带有点的字段。

本文链接:https://www.f2er.com/3066865.html

大家都在问