ELK|logstash默认索引东八区问题


使用logstash做日志采集有个问题:@timestamp时间格式是UTC,这样造成问题就是,今天的0点到8点的数据都被写到昨天的index里去了,这样查询的时候很不方便.想清楚原因,解决也不难,就是调整@timestamp的日期是今天的便好了.
其实有两种解决办法
日志里有正常日期时间
这个时候,我们直接把日志的时间写到@timestamp就可以了

filter {
    grok {
        match => ["message", "%{TIMESTAMP_ISO8601:log_date}"
    }
    date {
        match => ["log_date", "yyyy-MM-dd HH:mm:ss,SSS"]
        target => "@timestamp"
    }
    mutate {
        remove_field => ["log_date"]
    }
}

日志里没有日志时间,@timestamp取当前时间的情况

filter {
    ruby { 
        code => "event.set('index_day', event.timestamp.time.localtime.strftime('%Y.%m.%d'))" 
    } 
}
output {
    elasticsearch {
        ...
        index => "nginx-%{index_day}"
    }
}

相关博文

About rainbird

IOS攻城狮
This entry was posted in ELK and tagged , , , , , , , , , , . Bookmark the permalink.

发表评论