优化logstash配置以降低CPU利用率

时间:2016-06-30 03:02:55

标签: logstash elastic-stack logstash-grok logstash-configuration

目前我的过滤器如下:

filter {
    grok {
        match => {
                "message" => '%{SYSLOG5424SD:logLevel}\t<%{JAVACLASS:Job} *>\t%{TIMESTAMP_ISO8601:Date}\t%{GREEDYDATA:kvmessage}'
        }
    }
    if ([message] !~ "LogstashEvent") {
         drop { }
     }
    grok {
        match => {
                "kvmessage" => '%{SYSLOG5424SD}%{GREEDYDATA:kvmess}'
        }
    }
    kv {
        source => "kvmess"
        field_split => "|"
    }
}

我正在使用输入过滤器从大量文件中获取输入。最大可能是大约6000个文件。但是,在生成的大量日志中,我感兴趣的日志只是其中包含“LogstashEvent”的日志 - 这甚至还不到总日志的1%。我猜测必须有更快的方式来做这件事,而不是我现在正在做的事情。现在,logstash的CPU利用率约为20%,这比我预期的要高得多 - 考虑到我的过滤器不是很大(虽然输入量很大)

我还在上面生成kvmessage以在第二个grok中使用它。我最后不需要那个。无论如何都要丢弃映射?

虚拟日志,说明我在此处尝试分析的日志类型:

  

[INFO] 2016-06-28 17:20:49,308 [LogstashEvent] a = 1 | b = talkischeap | c = showmecode | d = 24 | e = 0

我的每台主机上的logstash的CPU利用率是否可​​能很高,因为我的elascticsearch集群无法快速索引?

1 个答案:

答案 0 :(得分:2)

移动它:

if ([message] !~ "LogstashEvent") {
    drop { }
}

在第一个grok过滤器之前。你将保存你的第一个grok过滤器99%的先前工作。

您可以使用remove_field`选项删除字段,该选项存在于所有过滤器中。 (drop_field option

我不认为索引速度会产生负面影响。当elasticsearch无法为logstash编制足够快的索引时,logstash将等待它并停止读取文件。