背景
:之前搭建ELK时候经常听开发人员反馈说日志的数据和服务器的日志顺序不一致
, 看日志给他们带来许多烦恼.
问题分析
:kibana向es(elasticsearch)发送请求的时候默认排序为@timestamp
字段,然而@timestamp字段的精度是毫秒
, 也就是说如果同一毫秒内输出多条
日志则在kibana展示的日志就会出现和服务器日志不一致
的问题。
一、datafiler 插件
datafiler插件的作用是把timestamp
转换为@timestamp
的格式并存入@timestamp内,并把timestamp删除
@timestamp" => 2018-06-20T14:50:05.061Z, #获取日志时间
timestamp" => "20/Jun/2018:22:50:04 +0800 #日志用户访问时间
logstash 示例:
input {
beats {
port => 5044
}
}
filter {
date {
match => ["timestamp","yyyy-MM-dd HH:mm:ss"] #根据上面日志格式确定
remove_field => "timestamp" #移除老的timestamp
}
}
output {
if [fields][log_source] == "client-qyt" {
elasticsearch {
hosts => "es服务器内网地址:9200"
index => "client_qyt-%{+YYYY.MM.dd}"
}
}
重启logstash
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/01-syslog.conf & >/dev/null
查看效果
解决日志排序问题
- QQ精品交流群
-
- 微信公众号
-
2019年5月14日 下午2:44 沙发
兄弟,我的友情链接你做了,但是我的名字你写错了,不是裘月,是裘悦,能否改下,谢谢,另外你的我也做好了
2019年5月14日 下午2:45 1层
@裘悦 不好意思,我打字水平一般,您见谅~~~