我正在尝试将Zabbix日志数据提供给ELK堆栈以执行某些时序关联。但是,我没有得到我的Logstash集中式服务器配置指定的过滤器,如果它充当代理,我会得到它。我使用Filebeat将日志条目发送到Logstash进行处理。但是,Logstash不会确认fields.tags
行,但在Elasticsearch / Kibana中可见。这是我的配置。
filebeat:
prospectors:
-
paths:
- /var/log/zabbix/zabbix_proxy.log
input_type: log
fields:
tags: ["zabbix", "zabbix-proxy"]
registery_file: /var/lib/filebeat/registry
output:
logstash:
hosts: ["elkls.com:5044"]
logging:
files:
rotateeverybytes: 12345656
然后我的Logstash配置文件
input {
beats {
port => 5044
}
}
filter {
if "zabbix" in [fields.tags] {
grok {
match => {
"message" => {
"filter stuff here"
}
}
}
}
}
output {
elasticsearch {
hosts => [ "elkhost.com:9200"]
}
}
Logstash不会对fields.tags
行起作用,并过滤/切断从Filebeat传递给它的日志行。我是否正确访问了这些变量?我做了类似于其他文件的操作,但只有当Logstash充当代理并直接从文件中读取时。
答案 0 :(得分:2)
而不是
if "zabbix" in [fields.tags] {
使用
if "zabbix" in [fields][tags] {
要引用Logstash中的嵌套字段,请指定该字段的完整路径:[top-level field][nested field]
。