最近在使用elk收集日志的时候,发现日志顺序是错乱的,网上查了下,确实存在这种问题,日志的顺序错乱,会直接导致开发在通过elk查找日志上下文的时候,找不到对应正确的上下文片段,导致开发不能正确的定位问题,我在网上也查看了一些资料,说实话,这方便的资料很少。经过网上资料,再结合自己的测试,最后终于找到了解决方案。就是对es的@timestamp字段重新赋值,把日志的时间字段作为新的数值赋值给@timestamp字段。(也不确定这种说法正确不,请大家包涵)。具体实现方法如下:
1、环境
我的ELK的环境是
客户端通过filebeat收集日志,存入redis;
logstash读取redis的日志数据存入es。
2、es时间格式化
在logstash的配置文件中添加如下内容:
filter {
grok {
match => [“message”, “%{TIMESTAMP_ISO8601:logdate}”]
}
date {
match => [“logdate”, “yyyy-MM-dd HH:mm:ss.SSS”]
target => “@timestamp”
timezone => “Asia/Shanghai”
remove_field => [ “logdate” ]
}
}
说明:此方法不一定适合所有日志,比如nginx日志,还又tomcat保存日志的时间格式不一样,在这里都需要做相应的修改才能达到实际的效果
转载请注明:IT运维空间 » linux » ELK日志时间格式化
发表评论