使用filebeat和logstash标记索引
我使用logstash转发器和logstash,并使用以下配置创建带有标记的动态索引: /etc/logstash/conf.d/10-output.conf使用filebeat和logstash标记索引,logstash,logstash-forwarder,filebeat,Logstash,Logstash Forwarder,Filebeat,我使用logstash转发器和logstash,并使用以下配置创建带有标记的动态索引: /etc/logstash/conf.d/10-output.conf output { elasticsearch { hosts => "localhost:9200" manage_template => false index => "logstash-%{tags}-%{+YYYY.MM.dd}" } } /etc/logstash-forward
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\u input\u codec\u plain\u在我的所有索引上应用了。[xxxx@yyyyinit.d]#cat/etc/filebeat/filebeat.yml
filebeat:
prospectors:
-
paths:
- /var/log/httpd/access_log
input_type: log
document_type: apache
fields:
tags: mytag
###Puppet管理的Filebeat配置(Ruby 1.8版本)###
档案节拍:
线轴尺寸:1024
发布异步:false
空闲超时:10秒
注册表文件:.filebeat
配置目录:/etc/filebeat/conf.d
输出:
日志存储:
主持人:
-1.1.1.1:5033
托运人:
标签:
-福贝塔
上面指定标记的方法是有效的,但是在logstash中,您仍然会看到默认的“beats\u input\u codec\u plain\u applicated”。不知道如何摆脱它。默认情况下,在Filebeat中,您定义的那些字段被添加到名为字段的键下的事件中。若要更改此行为并将字段添加到必须设置的事件根目录中
此外,在Filebeat 5.X中,是“浏览”下的一个配置选项。这个标签列表与全局标签配置合并。这包含几个使用Beats 5.X的字段
、根下的字段和标记的示例
以下是您应该如何更改Filebeat 1.X的配置:
filebeat:
prospectors:
- paths:
- /var/log/httpd/access_log
input_type: log
document_type: apache
fields:
tags: ["mytag"]
fields_under_root: true
我已决定将过滤器插入日志存储:
filter {
if "beats_input_codec_plain_applied" in [tags] {
mutate {
remove_tag => ["beats_input_codec_plain_applied"]
}
}
}
我可以看到本主题中提到的两个问题。让我总结一下,这对我自己有好处,也希望对其他正在努力解决这个问题的访问者有好处
用于在filebeat“浏览”配置中添加标记的格式(根据a-j从5.0或1.2.3开始提供的“浏览”标记)
坏的:
好:
然而,还有一个更重要的问题
标签被连接起来了。我们希望标记是一个数组,但如果我们将新添加的标记发送到logstash,我们将看到它们是ES中的串联字符串李>
如果只添加一个标记,解决方法(根据hellb0y77)是删除filebeat在logstash(中央服务器端)中添加的自动标记:
如果要在filebeat中添加多个标记,这将不起作用
必须将logstash拆分为一个串联字符串,并将每个项添加到标记中。在这种情况下,最好是将filebeat端上的标记放入某个自定义字段,而不是“标记”字段,然后从logstash上的自定义字段中提取它们
无论如何,似乎没有办法通过更改filebeat配置使其工作。唯一的方法是对接收的logstash过滤器链进行一些解析。另见
如果您可以删除日志存储,那么这也可能是您的解决方案。当将日志从filebeat直接发送到elasticsearch时,标签会像预期的那样出现在ES中。谢谢,现在我的标签出现在索引名中,但通过这种方式logstash-mytagbeats\u input\u codec\u plain\u applicated-2016.05.27
,我也尝试使用{
而不是[
这很有效,但不使用“字段”。请参阅文档:
fields:
tags: ["mytag"]
filter {
if "beats_input_codec_plain_applied" in [tags] {
mutate {
remove_tag => ["beats_input_codec_plain_applied"]
}
}
}