在使用elk的时候遇到的一个问题。就是如果使用logstash output到elasticsearch的时候,根据日期自动创建索引。但是由于logstash是使用utc时间。所以造成的结果就是每天早上八点才创建出当天的索引。结果就像这样。
drwxr-xr-x 8 elasticsearch elasticsearch 4096 Aug 22 09:29 local3-2016.08.22
drwxr-xr-x 8 elasticsearch elasticsearch 4096 Aug 23 08:00 local3-2016.08.23
drwxr-xr-x 8 elasticsearch elasticsearch 4096 Aug 24 08:00 local3-2016.08.24
drwxr-xr-x 8 elasticsearch elasticsearch 4096 Aug 25 08:00 local3-2016.08.25
在使用kibana查看的时候其实这样是没有关系的,而且官方也推荐使用utc时间。但是由于我有脚本要定时执行,所以这样就会在使用时给我带来麻烦。
后来网上参考了一些方法结合着使用,现记录下来。
就是在logstash的filterplugin中加上如下这个。
filter { ruby { code => "event.timestamp.time.localtime" } }
我试了下,只改这个无效。。。。。但是记录的文档里面[_source] [@timestamp] 确实是从2016-08-24T03:00:59.935Z 格式变为 2016-08-24T11:26:07.464+08:00格式了
这种是改logstash源码。网上说的是改event.rb文件,但是我找了下logstash的目录没找到。。。。。。所以网上所说的应该是针对比较老的logstash1.x 版本,而现在我使用的是Logstash 2.3.4。
那么我这个版本的话,需修改的文件位置如下,这个是个相对路径,前面是logstash的路径。
** $LOGSTASH/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.4-java/lib/logstash/string_interpolation.rb **
修改内容
.withZone(org.joda.time.DateTimeZone::UTC)
变为
.withZone(org.joda.time.DateTimeZone::getDefault())
总之我两种方法同时结合着使用了,问题解决。
Cloudhu 个人随笔|built by django|
沪ICP备16019452号-1