优化 logstash 配置以降低 CPU 利用率
Optimize logstash configuration to reduce CPU utilization
目前我的过滤器看起来像:
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%日志。我猜必须有比我现在正在做的更快的方法来做到这一点。现在 CPU logstash 的利用率约为 20%,这比我预期的要高得多 - 考虑到我的过滤器不是很大(尽管输入量很大)
我还生成了上面的 kvmessage
以在第二个 grok 中使用它。我终于不需要那个了。无论如何要删除映射?
一个虚拟日志,说明我在这里尝试分析的日志类型:
[INFO] 2016-06-28 17:20:49,308 [LogstashEvent]a=1|b=talkischeap|c=showmecode|d=24|e=0
是否有可能 CPU logstash 在我的每个主机上的利用率很高,因为我的 elascticsearch 集群无法快速索引它?
移动这个:
if ([message] !~ "LogstashEvent") {
drop { }
}
在第一个 grok 过滤器之前。您的第一个 grok 过滤器将节省其之前工作的 99%。
您可以使用 remove_field` 选项删除字段,该选项存在于所有过滤器中。 (drop_field option)
而且我认为索引速度不会产生负面影响。当 elasticsearch 无法为 logstash 足够快地索引时,logstash 将等待它并停止读取文件。
目前我的过滤器看起来像:
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%日志。我猜必须有比我现在正在做的更快的方法来做到这一点。现在 CPU logstash 的利用率约为 20%,这比我预期的要高得多 - 考虑到我的过滤器不是很大(尽管输入量很大)
我还生成了上面的 kvmessage
以在第二个 grok 中使用它。我终于不需要那个了。无论如何要删除映射?
一个虚拟日志,说明我在这里尝试分析的日志类型:
[INFO] 2016-06-28 17:20:49,308 [LogstashEvent]a=1|b=talkischeap|c=showmecode|d=24|e=0
是否有可能 CPU logstash 在我的每个主机上的利用率很高,因为我的 elascticsearch 集群无法快速索引它?
移动这个:
if ([message] !~ "LogstashEvent") {
drop { }
}
在第一个 grok 过滤器之前。您的第一个 grok 过滤器将节省其之前工作的 99%。
您可以使用 remove_field` 选项删除字段,该选项存在于所有过滤器中。 (drop_field option)
而且我认为索引速度不会产生负面影响。当 elasticsearch 无法为 logstash 足够快地索引时,logstash 将等待它并停止读取文件。