美文网首页
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