【问题标题】:Why ElasticSearch sometimes doesn't show latest log that Logstash sent?为什么 ElasticSearch 有时不显示 Logstash 发送的最新日志?
【发布时间】:2020-09-03 14:23:57
【问题描述】:

我的 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}"
    }
}

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

【问题讨论】:

  • 这可能是时间戳问题。 Kibana 会解释浏览器时区中的时间戳,因此如果您的日志最后没有时区,它们可能无法正确显示。您能否展示一下您的日志文件中的时间戳以及您的 Logstash 配置?
  • 这也可能是 Logstash 命名约定的问题,而不是在 Logstash/Kibana 中使用别名的方式。您能否也添加您的索引设置?
  • @Val 我在我的问题中添加了时间戳格式和 Logstash 配置。
  • @Jaycreation 在 Logstash yml 文件中的索引设置现在是我的问题。
  • 刚刚发现Kibana中定义的默认索引模式月份为08:someservice-2020.08*。删除“08”后,最新的日志显示在 Kibana 中。谢谢@Jaycreation。

标签: elasticsearch logstash kibana


【解决方案1】:

关注 cmets 中的讨论。 这里的问题很常见。

Kibana 中的索引模式很具体:

ts_services-2020-08*

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

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

ts_services*

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-02
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多