我尝试使用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小时的偏移,我无法弄清楚原因。 我尝试过不同的事情,比如改变时区等没有成功。
关于这个的任何想法?
谢谢
答案 0 :(得分: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')
"
}
}
希望这可以帮到你。
答案 1 :(得分:0)
timezone
应该有效。
你的结果出了什么问题?以下两个字段中的值表示相同的时间点。
"@timestamp": "2014-05-21T13:29:53.000Z"
"timestamp": "21/May/2014:15:29:53 +0200"
其中Z代表+0000。