美文网首页
logstash使用filter删除不需要的日志

logstash使用filter删除不需要的日志

作者: 哆来咪发都不会 | 来源:发表于2019-08-10 15:25 被阅读0次

数据流

日志的流转路径:
logstash收集log4j的日志,并对日志进行过滤,输出给elasticsearch,kibana从es的索引中查询数据进行展示。

问题

有一部分日志没有多大的意义,但是占据了很大的磁盘空间,因此想通过filter将其过滤掉,再将有用的日志输出给es。

filter

filter的过滤插件很多,用得最多的就是grok,感兴趣的可以学一下。本次需求实现用不到grok,就不赘述了。以下是logstash的配置文件。

 input {
     gelf {
         port => 7999
         codec => "json"
     }
 }
 
 
 filter {
     #过滤所有 tenant 为 unmarked 的日志
     if [tenant] == "unmarked" {
         drop {}
     }

     #过滤 message 中所有以 "应变数据已经被采集" 开头的日志
     if ([message] =~ "应变数据已经被采集") {
         drop {}
     }
 }
 
 
 output {
     elasticsearch {
         hosts => "192.168.0.123:9200"
         index => "logstash-%{tenant}-%{+YYYY.MM.dd}"
     }
 }

过滤掉tenant为“unmarked”的日志,以及message以“应变数据已经被采集”开头的日志并删除。


kibana.png

报错回顾

修改配置文件后,启动logstash出现了一个报错如下:

[root@www bin]# ./logstash -f ../conf/logstash.conf 
fetched an invalid config {:config=>"input {\n\tgelf {\n\t\tport => 7999\n\t\tcodec => \"json\"\n\t}\n}\n\n\nfilter {\n\tif [tenant]=\"unmarked\" {\n\t\tdrop {}\n\t}\n}\n\n\noutput {\n\telasticsearch {\n\t\thosts => \"192.168.0.123:9200\"\n\t\tindex => \"logstash-%{tenant}-%{+YYYY.MM.dd}\"\n\t}\n}\n\n\n\n", :reason=>"Expected one of [, #, in, not , ==, !=, <=, >=, <, >, =~, !~, and, or, xor, nand, { at line 10, column 13 (byte 78) after filter {\n\tif [tenant]", :level=>:error}

从中可以看出:配置文件的第10行、第13列有错误。错误为符号错误;
因为我之前写的是:

 filter {
     if [tenant] = "unmarked" {
         drop {}
     }
 }

不能写=,要写==才行。

相关文章

网友评论

      本文标题:logstash使用filter删除不需要的日志

      本文链接:https://www.haomeiwen.com/subject/jrsrjctx.html