首页 文章

为什么kibana中没有logstash索引

提问于
浏览
0

我根据digitalocean教程将ELK堆栈和filebeat设置为我的ELK节点作为RedHat服务器 . Kibana启动并运行,但是当我将索引模式配置为logstash- *时,我没有看到任何logstash索引:

Unable to fetch mapping. Do you have any indices matching the pattern?

当我做一个curl来查看我拥有的索引时,它们只是filebeat索引 . Filebeat应该将数据推送到正在监听5044的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索引 . 根据教程,我检查了我的端口是否打开,我的配置文件是否正确 . 可能有什么不对? 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 回答

  • 1

    Kibana 中的索引是 Kibana ,来自 Management > Index Patterns > Add New

    它's obvious that you won'能够在Kibana中找到您使用 logstash 创建的索引,除非您在 KibanaManagemen 部分内手动创建它 .

    确保您使用 logstash 创建的indice名称相同 . 看看doc,它传达了:

    定义索引模式时,Elasticsearch中必须存在与该模式匹配的索引 . 这些指数必须包含数据 .

    这几乎说明你应该在 Kibana 中创建索引 . logstash 的作用是,只在 Elasticsearch 本身创建索引,您必须在 Kibana 中手动创建它们才能访问和可视化数据 .

    希望能帮助到你!

  • 1

    Filebeat使用 filebeat-YYYY.MM.dd 模式创建每日索引,因此您不应期望在Elasticsearch中看到logstash索引 .

    Filebeat文档中推荐的Logstash configuration将数据写入基于 "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 的索引,其中 [@metadata][beat] 默认为节拍名称(filebeat),除非在Filebeat配置中配置 output.logstash.index . 这是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

相关问题