我正在尝试使用redis和elasticsearch配置logstash.
我的@timestamp字段有问题.
@timestamp的值始终是实际事件时间戳-2小时.
我有一个像这样配置的托运人:
input{ file {...}}
filter{
if [type]=="apachelogs"{
grok{
match => [ "message", "%{COMBINEDAPACHELOG}"]
}
date {
locale => "en"
timezone => "Europe/Brussels"
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
}
output{ redis{...}}
和像这样的logstash-indexer:
input{ redis {...}}
output { elasticsearch {...}}
ES中事件的结果如下所示:
"@timestamp": "2014-05-21T13:29:53.000Z"
...
"timestamp": "21/May/2014:15:29:53 +0200"
所以你可以看到@timestamp总是有2小时的偏移,我无法弄清楚原因.
我尝试了不同的事情,比如改变时区等没有成功.
对这一个有什么看法吗?
谢谢
最佳答案 您可以使用此过滤器更改时区.
更改
“@timestamp”: “2014-04-23T13:40:29.000Z”
至
“@timestamp”: “2014-04-23T15:40:29.000+0200”
尝试使用此过滤器
filter {
ruby {
code => "
event['@timestamp'] = event['@timestamp'].localtime('+02:00')
"
}
}
希望这可以帮到你.