elk 搭建 我參考的是 這篇文章 https://www.cnblogs.com/yuhuLin/p/7018858.html ,寫的很全,很牛逼。
我補充一下 關於 logstash 輸入日誌的格式的自定義和 elk 畫圖的相關 知識。
首先,我按我的說法來解釋一下elk
elk 分別代表,elksticsearch, logstash , kibana
logstash 負責 收集日誌,收集的過程中可以自定義格式,然後按格式輸出到 elasticsearch ,elasticsearch 將 l 輸出過來的日誌存下來,e 有存數據的配置, kibana 是將 e 裏的數據 通過圖形來顯示出來,在我看來,l 裏的存的數據 是類似於 字典一樣的數據, 字典名字 和 字典裏的鍵值對。
下面詳細講解一下Logstash 的自定義配置文件,這是整個elk 的核心,定義了 輸入的文件的位置,以及將輸入的內容 按 自己想要的格式來重新定義一下。
過濾條件
Kibana 輸出結果:
如果不加過濾條件, elk 輸出只有一條內容,這一條內容裏就是一條的log 日誌,這樣的話,如果想從elk 來分析 訪問來源或 狀態碼的情況,實現不了。這就需要將這一條內容再細分成多個字段來輸出,如何實現,首先,message 就代表 整條日誌,通過語法,自定義隔斷符,來講message 分解,然後類似於指針輸出一樣,從0 開始數,message[0] 就代表 第一個被分隔符 隔斷後的 第一個字段,類似awk 的-F 後的效果。具體的語法就類似於上邊的logstash 的過濾條件,很簡單,同時被分割符分割後的字段還可以再被分割,一樣的道理。
根據上面的配置 ,每條日誌輸出的結果就是這樣的了。 鍵值對 的形式
elk 的畫圖分析:
已 Line 圖爲例來分析:
如統計 不同狀態碼 隨時間的變化,
Y 軸選count ,X 軸選時間,然後對於Y軸的count,再細分,可以統計不同狀態碼的count或 不同域名的count ,區分的主要以field 來區分。
我想說的是一種想要自定義算法的統計,如我按上面的規則,可以統計 發送字節數 隨時間的變化,針對不通域名或不通的狀態碼,但得出的數據的單位 不能變,比如我日誌裏發送字節的單位是 B,我想呈現的是MB或GB ,如何實現,用 advanced 選項的 json input ,自定義算法,如 我想把最後的統計單位變成 MB
{"script" : {"inline" : "(doc['bytes_sent'].value * 1 ) / 1000 / 1000 "}}
doc['bytes_sent'].value 就是 你再logstash 自定義的鍵的值的表示。用doc 來獲取, script 和 inline 語法固定,
自定義分割的時間段: