即使是不成熟的尝试,也胜于胎死腹中的策略。

关于logstash和elasticsearch的时区问题

Logstash | 作者 langlang1234 | 发布于2015年03月29日 | 阅读数:20775

大家好!
我在使用logstash->redis->elasticsearch发送日志时,
es总是使用UTC时区,而不是本地时区
我按照网上说的,修改过event.rb文件,换成getDefault(),不起作用。
然后我使用了过滤器,用配置ruby的方法。
结果是有一点效果:
打印到控制台和文件里的日志时间已经成功是本地时区了,但是输出到es里的@timestamp,还是自动转化成了utc时间。
(我是centos系统)
请大家指教如何调整时区呢?搞了一个礼拜没搞出来,急死了。
已邀请:

rockybean - Elastic Certified Engineer, ElasticStack Fans,公众号:ElasticTalk

赞同来自: Rubricate stab xzy

这个问题我遇到过,可以参见[这篇文章](http://rockybean.info/2015/02/ ... e-type),其实就是date类型存储的问题,不必纠结。

stab - freshman

赞同来自: Rubricate

你要可以考虑自己搞一个timestamp的域

langlang1234 - 85后 coding

赞同来自: Rubricate

filter{

ruby {
code => "event['@timestamp'] = event['@timestamp'].getlocal"
}
}
我是这样加的一个过滤器,输出到文件里的测试内容都是正确的。
请问您能详细说一下吗?

langlang1234 - 85后 coding

赞同来自: elkzc890205

input {
stdin{
type => "testlog"
}
}

filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}

output {
stdout { codec => rubydebug }
}
我现在这样弄,加个字段,谢谢楼上各位!

langlang1234 - 85后 coding

赞同来自:

谢谢楼上的指点,但是我是使用logstash往ES插数据,没搞什么mapping(应该是logstash自动建的?)
这如何是好?

stab - freshman

赞同来自:

kibana_time.png

langlang1234 - 85后 coding

赞同来自:

感谢stab大神!
求配置文件!
或者能加俺的QQ:531236971

要回复问题请先登录注册