elasticsearch - 为什么 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}"
}
}
在删除现有索引模式并创建新的索引模式后,我看到了最新的日志。但我认为这不是解决方案。
解决方案
关注评论中的讨论。这里的问题是一个非常普遍的问题。
Kibana 中的索引模式非常具体:
ts_services-2020-08*
因此,Kibana 忽略了 9 月份的数据,即使它们在 Elasticsearch 中也是如此。
更改 Kibana 索引模式将解决问题:
ts_services*
但是您必须更正所有自定义可视化。
推荐阅读
- python - 将numpy数组行列值设置为另一个数组的列值
- java - 由于 Git 中不相关的冲突,无法提取原始开发人员
- events - 如何在 rabbitmq 中组织交换和队列以与异步 CQRS 总线一起使用
- java - 如何使用 BigDecimal 来提高此方法的准确性?
- python - PuLP - 为什么不能对 UpBounds 使用生成器/列表表达式?“TypeError:必须是实数,不是列表”
- javascript - 从承诺的 Postgres 查询中检查数据库的列中是否存在值
- java - 如何将条带支付网关添加到 android studio 应用程序中?
- python - numpy.einsum 对 cv2 加载的数组的作用是否不同?
- sql-server - 尝试访问 WCF 服务的 SQL Server CLR 函数,我不断收到“System.Security.HostProtectionException”错误返回
- design-patterns - 如何构建我的所有数据源共享相同结构的管道架构?