首页 > 解决方案 > 为什么 ElasticSearch 有时不显示 Logstash 发送的最新日志?

问题描述

我的 Logstash 将日志发送到 ElasticSearch,在 Logstash 输出文件中我看到新日志已发送,但在 Kibana Discover 页面中单击刷新时未显示它们。发现页面显示约 1 小时前的日志。

什么可能导致这个问题?有什么方法可以检查记录是否在 ElasticSearch 中而不是使用 Kibana?

我的日志文件中的时间戳是这样的:[2020-09-02 13:53:07,392Z]

这是我的 logstash 使用的 pipeline.yml:

input {
    #stdin {}
    beats {
        port => "5055"
    }
    # file {
}
filter {
    grok {
        patterns_dir => "C:\logstash-7.4.2\patterns"
        match => { "message" => "^\[%{TIMESTAMP_ISO8601:timestamp}\]\[%{LOGLEVEL:level}\]\[%{Thread:thread}\]\[%{JAVACLASS:class}\](\[\d*\])? %{GREEDYDATA:msg}" }
   }
   if "_grokparsefailure" in [tags] {
       drop{}
   }
}
output {
    file {
        path => "C:\logstash-7.4.2\logstash_output.txt"
    }
    elasticsearch {
        hosts => [ "localhost:9200" ]
        index => "ts_services-%{+YYYY.MM.dd}"
    }
}

在删除现有索引模式并创建新的索引模式后,我看到了最新的日志。但我认为这不是解决方案。

标签: elasticsearchlogstashkibana

解决方案


关注评论中的讨论。这里的问题是一个非常普遍的问题。

Kibana 中的索引模式非常具体:

ts_services-2020-08*

因此,Kibana 忽略了 9 月份的数据,即使它们在 Elasticsearch 中也是如此。

更改 Kibana 索引模式将解决问题:

ts_services*

但是您必须更正所有自定义可视化。


推荐阅读