我使用logstash-forwarder和logstash并使用此配置创建带有标签的动态索引:
/etc/logstash/conf.d/10-output.conf
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "logstash-%{tags}-%{+YYYY.MM.dd}"
}
}
/etc/logstash-forwarder.conf
"files": [
{
"paths": [
"/var/log/httpd/ssl_access_log",
"/var/log/httpd/ssl_error_log"
],
"fields": { "type": "apache", "tags": "mytag" }
},
关联的filebeat配置为:
/etc/filebeat/filebeat.yml
filebeat:
prospectors:
-
paths:
- /var/log/httpd/access_log
input_type: log
document_type: apache
fields:
tags: mytag
在Kibana,而不是mytag
,我在所有索引上都看到了beats_input_codec_plain_applied
。
答案 0 :(得分:4)
我可以看到本主题中提到的两个问题。让我总结一下自己的利益,并希望其他访客也能解决这个问题。
坏:
fields:
tags: mytag
好:
fields:
tags: ["mytag"]
然而,还有更重要的问题
如果您只添加一个标记,则解决方法(根据hellb0y77)将删除filebeat添加的自动标记,在logstash(中央服务器端)中:
filter {
if "beats_input_codec_plain_applied" in [tags] {
mutate {
remove_tag => ["beats_input_codec_plain_applied"]
}
}
}
如果想在filebeat中添加多个标签,这将无效。
必须将logstash拆分为串联字符串,并将每个项目添加到标记中。也许在这种情况下,将filebeat end上的标签放入某个自定义字段,而不是"标签"字段并从logstash上的自定义字段中提取它们。
无论如何,似乎没有办法通过更改filebeat配置来使其工作。唯一的方法是在接收logstash过滤器链时进行一些解析。另请参阅https://github.com/elastic/filebeat/issues/220
如果您可以删除logstash,那么这也可能是解决方案。将日志从filebeat直接发送到elasticsearch时,标记会按预期显示在ES中。
答案 1 :(得分:1)
默认情况下,Filebeat会将您定义的字段添加到名为fields
的键下的事件中。要更改此行为并将字段添加到事件的根目录,您必须设置fields_under_root: true
。
此外,在Filebeat 5.X中,tags
是prospector下的配置选项。此标记列表与全局标记配置合并。对于Beats 5.X,此pull request包含使用fields
,fields_under_root
和tags
的几个示例。
以下是如何更改Filebeat 1.X的配置:
filebeat:
prospectors:
- paths:
- /var/log/httpd/access_log
input_type: log
document_type: apache
fields:
tags: ["mytag"]
fields_under_root: true
答案 2 :(得分:1)
我已经解决了在logstash中插入过滤器的问题:
filter {
if "beats_input_codec_plain_applied" in [tags] {
mutate {
remove_tag => ["beats_input_codec_plain_applied"]
}
}
}
答案 3 :(得分:0)
[xxxx @ yyyy init.d] #cat /etc/filebeat/filebeat.yml
filebeat: spool_size:1024 publish_async:false idle_timeout:10s registry_file:。filebeat config_dir:/etc/filebeat/conf.d
输出: logstash: 主机: - 1.1.1.1:5033
托运人: 标签: - foo-beta
以上指定标记的方式有效,但在logstash中,您仍会看到默认的" beats_input_codec_plain_applied"。不知道如何摆脱它。