Timestamps don`t match 我和ELK(Elasticsearch,Logstash和Kibana)实例一起运行,Filebeat从其他机器发送日志,我注意到Kibana中的日志以不同的顺序显示它们到达服务器(如附图所示),例如,这是Kibana中显示的内容,第二列是kibana时间戳,第三列是服务器时间戳:
February 9th 2017, 11:53:11.714 11:53:04,904
February 9th 2017, 11:53:11.714 11:53:05,579
February 9th 2017, 11:53:11.714 11:53:05,581
February 9th 2017, 11:53:11.714 11:53:05,591
February 9th 2017, 11:53:11.714 11:53:04,441
February 9th 2017, 11:53:11.714 11:53:05,589
我在日志文件中看到的是:
11:53:04,441
11:53:04,904
11:53:05,579
11:53:05,581
11:53:05,589
11:53:05,591
是否有任何选项可以按照服务器中显示的顺序查看Kibana中的日志? 我一直在寻找它,但我没有看到任何关于这个主题的问题,但我看到它可能正在改变Logstash配置文件10-syslog-filter.conf,这是我的:
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
提前致谢。
答案 0 :(得分:0)
我认为这是因为当您正在创建索引时,您还没有timestamp
在Kibana
上显示事件在Kibana。你可以这样做:
mutate {
add_field => { "received_time" => "%{syslog_timestamp}" }
remove_field => ["syslog_timestamp"] <-- since you'll be using the recieved_time field here after
}
date {
match => [ "received_time", "MMM d HH:mm:ss", "MMM dd HH:mm:ss"]
target => "received_time"
locale => "en"
timezone => "UTC"
}
以上只是一个示例,以便您可以重现。 注意我假设syslog_timestamp
为您在Q中提到的服务器时间。
因此,当您在Kibana
中创建新索引时,系统会要求您选择时间字段名称以过滤事件。 Kibana
的作用是,它会根据浏览器的时间显示事件,除非您从下拉列表中选择它。
因此,一旦您处理 logstash 配置文件,您就应该能够看到我们在下拉菜单中创建的字段 received_time 。因此,您只需从drop down中选择它,以便Kibana
根据您选择的timestamp
显示事件。同时确保您也没有任何时区问题。如果您正在使用UTC
,请同时更改浏览器时区高级设置&gt; Kibana
中的dateFormat:tz 。希望它有所帮助!