【发布时间】:2016-01-06 23:04:11
【问题描述】:
我是 ELK 堆栈的新手,目前我想根据日志级别将日志推送到不同的弹性搜索索引中。例如,假设 logstash-error_logs 索引将仅包含错误日志(日志级别为 ERROR 的日志),logstash-ok_logs 索引将包含所有 INFO 日志()日志,日志级别为 INFO )等等。给定的是我的日志文件的格式:
[2016-01-06 13:29:49] staging.INFO:已发送回调
因此我使用的 grok 过滤器如下所示:
grok {
match => { "message" => "%{SYSLOG5424SD} %{JAVACLASS:LOGLEVEL}" }
}
这在日志的 JSON 中为我提供了一个额外的“LOGLEVEL”字段。使用此字段,我可以根据日志级别使用条件将日志路由到不同的索引。因此,我在输出过滤器中使用以下代码来相应地路由日志:
output {
if [LOGLEVEL] in ["staging.ERROR"] {
elasticsearch { hosts => ["localhost:9200"]
index => "logstash-error_logs"
}
}
else if [LOGLEVEL] in ["staging.INFO"] {
elasticsearch { hosts => ["localhost:9200"]
index => "logstash-ok_logs"
}
}
else {
elasticsearch { hosts => ["localhost:9200"]
index => "tech"
}
}
stdout { codec => rubydebug }
}
但不幸的是分期。 INFO 日志未路由到所需的索引。
【问题讨论】:
标签: logging elasticsearch architecture logstash