iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 12
0
自我挑戰組

30天 Docker E.L.K stack 系列 第 12

Day12 - Reformate timestamp

延續先前 Discover 的部分,如何讓我們的紀錄時間 match 上 log 的紀錄時間呢?

我們的目標是讓 timestamp 可以符合 log date,要做到這種效果我們只能在資料送至 elasticsearch 儲存前完成,也就是說我們在 logstash 便可以先開始我們的時戳替換工作囉。

先來看一下若完成了有什麼效果
http://ithelp.ithome.com.tw/upload/images/20161227/20103420HdvnzLssnH.png

從圖中我們可以清楚地看出每日有少筆記錄,若把日期拉常可以看出長期的趨勢,而把時間縮小至小時則可以看出短時間系統負載狀況。

$ vim ~/docker-elk/logstash/config/logstash.conf
input {
        tcp {
                port => 5000
                type => apacheLog
        }
}

filter {
        grok {
                match => ["message", "%{HTTPDATE:logdate}"]
        }
        date {
                match => ["logdate", "dd/MMM/yyyy:HH:mm:ss Z"]
        }
}

output {
        elasticsearch {
                hosts => "elasticsearch:9200"
        }
}

logstash.conf 先用 grok filter 將 "logdate" 過濾出來 "HTTPDATE" 是我們在 apache log 所使用的 Syslog dates pattern,再將取得的 "logdate" 以 date filter 替換掉我們現在的 timestamp。

注意 "Z" 是 time zone

更多 grok pattern : https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns

現在我們可以輕鬆地調整時間範圍 hourly, daily, weekly 來觀察資料囉
http://ithelp.ithome.com.tw/upload/images/20161227/20103420VRrljpPFIe.png

當然還是要記得在右上角選擇日期範圍喔,以這次的 sample log 來說範圍可以這樣選擇
http://ithelp.ithome.com.tw/upload/images/20161227/201034204HczpYS6x5.png


上一篇
Day11 - Discover data freely by any shape anytime
下一篇
Day13 - Visualize data with line chart & bubble chart
系列文
30天 Docker E.L.K stack 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言