为什么kibana中没有logstash索引

时间:2017-01-18 15:15:22

标签: indexing logstash elastic-stack filebeat

我按照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      -  

2 个答案:

答案 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