我按照digitalocean教程设置了ELK堆栈和filebeat,我的ELK节点作为RedHat服务器。 Kibana启动并运行,但当我将索引模式配置为logstash时,我没有看到任何logstash索引 - *:
Unable to fetch mapping. Do you have any indices matching the pattern?
当我做一个curl来查看我拥有的索引时,它们只是filebeat索引。 Filebeat应该将数据推送到正在监听5014的logstash
$curl 'localhost:9200/_cat/indices?v'
health status index pri rep docs.count docs.deleted store.size pri.store.size
yellow open filebeat-2017.01.10 5 1 3864 0 1.7mb 1.7mb
yellow open filebeat-2017.06.17 5 1 1848 0 740.1kb 740.1kb
yellow open filebeat-2017.01.18 5 1 77062 0 33mb 33mb
yellow open filebeat-2017.09.14 5 1 1932 0 1.1mb 1.1mb
yellow open filebeat-2017.01.11 5 1 19094 0 3.6mb 3.6mb
yellow open .kibana
你可以看到我只有文件串索引。根据教程,我检查了我的端口是否打开,我的配置文件是否正确。可能有什么不对? Filebeat应该将日志从/var/log/*.log发送到logstash,再发送到elasticsearch。
当我
tail /var/log/logstash/logstash.log
我的logstash日志中没有任何内容。我已经检查过,logstash,filebeat,kibana和elasticsearch都在运行。我也完成了配置文件测试,它说没关系:
$sudo service logstash status
logstash is running
在我的ELK节点上,我可以清楚地看到端口5044正在侦听:
$ netstat -tulpn | grep -i listen | grep -v tcp6
tcp 0 0 :::5044 :::* LISTEN -
答案 0 :(得分:1)
您是Kibana
中的define索引,来自管理>索引模式>添加新?
很明显,您无法在Kibana中找到您使用logstash
创建的索引,除非您在其中手动创建该索引。 Managemen
的{{1}}部分。
确保您使用Kibana
创建的indice名称相同。看一下传达的doc:
定义索引模式时,必须与该模式匹配的索引 存在于Elasticsearch中。这些指数必须包含数据。
这几乎说明了你应该存在在logstash
中创建索引的指数。 Kibana
所做的只是在logstash
本身创建索引,您必须在Elasticsearch
中手动创建它们才能访问和可视化数据。
希望它有所帮助!
答案 1 :(得分:1)
Filebeat使用filebeat-YYYY.MM.dd
模式创建每日索引,因此您不应期望在Elasticsearch中看到logstash索引。
Filebeat文档中建议的Logstash configuration将数据写入基于"%{[@metadata][beat]}-%{+YYYY.MM.dd}"
的索引,其中[@metadata][beat]
默认为节拍名称(filebeat),除非output.logstash.index
是在Filebeat配置中配置。这是Logstash的基本配置。
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
您可以检查这些索引中的数据,看看它是否是您希望通过以下命令从filebeat获得的内容:
curl http://localhost:9200/filebeat-*/_search?pretty&size=100