Kibana_Alert設定

Kibana_Alert設定

解決蒐集Log卻沒有Alert的問題

成果展示

情境

原本預計使用ELK_Python_Client來寫告警系統,但發現Kibana有內建的告警系統或許值得一玩

資訊

Kibana Alert必須設定好SSL憑證才可以使用

展示

200-Areas/210-工程師修煉/ELK/resource/Kibana_Alert設定-1.png

{"type":"log","@timestamp":"2023-05-30T09:22:05+00:00","tags":["fatal","plugins","actions","actions"],"pid":1504523,"message":"Server log: 偵測到【訂單系統】有人發出請求的網址有【admin】,五分鐘內有2次,請至 https://10.37.91.21:5601/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(columns:!(),filters:!(),index:'4e0f9c20-3e13-11ed-97b3-3b14a37442ec',interval:auto,query:(language:kuery,query:''),sort:!(!(log_timestamp,desc)))"}
{"type":"log","@timestamp":"2023-05-30T09:21:23+00:00","tags":["fatal","plugins","actions","actions"],"pid":1504523,"message":"Server log: Kibana 警告:'TEST',目前值: 14,滿足條件: Number of matching documents is greater than 5 超過 5m,時間點: 2023-05-30T09:21:14.462Z"}

設定

前情提要:我蒐集的是IIS Log,這邊先簡單設定一條規則:每五分鐘檢查Request的page擁有admin字樣,視為危險請求

200-Areas/210-工程師修煉/ELK/resource/Kibana_Alert設定-2.png

200-Areas/210-工程師修煉/ELK/resource/Kibana_Alert設定-3.png
說明:

Check every:五分鐘檢查一次
Notify:五分鐘執行一次
Select an index And Size :選擇要Query 的 Index 因為我這邊主要是有1次以上就滿足條件,Size可以設定為1即可
Define the Elasticsearch query :要搜尋的條件,可參考ElasticSearch_Query
When number of matches:設定五分鐘內的資料有一筆以上就觸發此條件
Actions:我使用open Source 所以只有 Index、Sever Log可以選擇(我這邊選擇Sever Log)
200-Areas/210-工程師修煉/ELK/resource/Kibana_Alert設定-4.png
Level:這個告警的危險等級
Message:要寫在Log中的訊息。我這邊把重要的訊息顯示出來後面再帶出連結,以利後續Line收到訊息可直接點連結。

tips

後面預計搭配 Logastsh 的方式去監控 Kibana Log,後面再串接自己寫的告警程式,就可以做到即時通知的效果。

文字訊息參數參考

200-Areas/210-工程師修煉/ELK/KibanaAlerts的Action欄位說明

參考連結