我正在使用带有节点应用程序的麋鹿堆栈。我正在使用文件拍,logstash格式将日志从主机发送到logstash,并将数据发送到elastic和kibana从elastic读取。在kibana中,我看到了默认的索引模式,例如filebeat-2019.06.16
。
我想将其更改为application-name-filebeat-2019.06.16
。但这不起作用。我正在寻找一种在文件拍中执行此操作的方法,因为会有多个应用程序/文件拍,但只有一个logstash / elasticsearch / kibana。
我已经尝试过filebeat.yml
上的文件拍配置。
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
fields:
- app_name: myapp
output.logstash:
index: "%{fields.app_name}-filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
hosts: ["${ELK_ENDPOINT}"]
ssl.enabled: true
ssl:
certificate_authorities:
- /etc/pki/tls/certs/logstash-beats.crt
setup.template.name: "%{fields.app_name}-filebeat-%{[agent.version]}"
相同类型的文件将与节点应用程序主机和filebeat一起使用。
logstash也使用此配置初始化
02-beats-input.conf
input {
beats {
port => 5044
codec => "json"
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-beats.crt"
ssl_key => "/etc/pki/tls/private/logstash-beats.key"
}
}
30-output.conf
filter {
json {
source => "message"
}
}
output {
elasticsearch {
hosts => ["localhost"]
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
它正在像filebeat-2019.06.16
那样建立索引模式。我想要类似application-name-filebeat-2019.06.16
的东西。
答案 0 :(得分:2)
您要将文件拍日志发送到logstash,需要在logstash管道而不是filebeat配置文件中定义索引名称。
尝试以下输出:
output {
elasticsearch {
hosts => ["localhost"]
manage_template => false
index => "%{[fields][app_name]}-%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
要在filebeat上设置索引名称,您需要将日志直接发送到elasticsearch。
如果您还有其他拍子将数据发送到同一端口,并且其中一些拍子没有字段[fields][app_name]
,则可以在输出中使用条件拍子或在管道上创建字段。