elk-logstash時區問題


http://www.cnblogs.com/wangpei886/p/8043021.html

使用版本:elk6.0

配置文件:logstash.confg

output {
  elasticsearch {
    id => "logstash-%{+YYYY.MM.dd}"
  }
}

 

問題:如圖14號的數據,結果采集到了15號,慢了8小時,希望得到的結果,是凌晨0點索引自動切換

 

原因: 原來Logstash用的UTC時間, logstash在按每天輸出到elasticsearch時,因為時區使用utc,造成每天8:00才創建當天索引,而8:00以前數據則輸出到昨天的索引

         查看一些論壇,不建議更改源碼,因為logstash和elasticsearch是按照UTC時間的,kibana卻是按照正常你所在的時區顯示的

解決:修改logstash配置

          

logstash在按每天輸出到elasticsearch時,因為時區使用utc,造成每天8:00才創建當天索引,而8:00以前數據則輸出到昨天的索引
在logstash filter 解決
  1. 增加一個字段,計算timestamap+8小時
  

            ruby {
                # 新增索引日期,解決地區時差問題
                code => "event.set('index_date', event.get('@timestamp').time.localtime + 8*60*60)"
            }

 


  2. 用mutate插件先轉換為string類型,gsub只處理string類型的數據,在用正則匹配,最終得到想要的日期
  # 定義索引名時間

            mutate {
                 convert => ["index_date", "string"]
                 gsub => ["index_date", "T([\S\s]*?)Z", ""]
                 gsub => ["index_date", "-", "."]
            }

      3.output配置

  

      elasticsearch {
        hosts => ["localhost:9200"]
        index => "log1-%{index_date}"
      }

 

 

* 這里是取系統時間,你可以取你日志里面的時間戳來做索引名

或許有其他更好的方案!請留言告知


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM