elk報警監控之sentinl 釘釘報警
注:我的elk sentinl版本都是6.5.1
前期知識 es的查詢語法、es watcher使用方法。
https://www.cnblogs.com/pilihaotian/p/5830754.html
https://www.cnblogs.com/ghj1976/p/5293250.html
https://www.cnblogs.com/wihainan/p/7064943.html
1、釘釘裡先建一個群,然後群內新增一個機器人,最後登入電腦版釘釘獲取釘釘地址
2、安裝sentinl
可以線上安裝 ./kibana-plugin install https://github.com/sirensolutions/sentinl/releases/download/tag-6.5.0-0/sentinl-v6.5.1.zip
也可以離線安裝 ./kibana-plugin install file:../../sentinl-v6.5.1.zip file 關鍵字不能漏掉
3、安裝好重啟kinaba,然後在開啟頁面就可以看到sentinl了
4、配置sentinl
在sentinl新增一個watcher,我使用的高階配置
配置如下:
1 { 2 "actions": { 3 "Webhook_683bd385-86b3-46ba-8e1b-f89cccccbbec": { 4 "name": "Tomcat異常告警", 5 "throttle_period": "1m", 6 "webhook": { 7 "priority": "high", 8 "stateless": false, 9 "method": "POST", 10 "host": "oapi.dingtalk.com", 11 "port": "443", 12 "path": "/robot/send?access_token=*********", #寫你自己的釘釘機器人地址 13 "body": " {\"msgtype\": \"text\",\r\n \"text\": {\r\n \"content\":\" 異常發生,請處理~ \r\n 主機:{{payload.hits.hits.0._index}} \r\n 告警內容:{{payload.hits.hits.0._source.message}} \r\n 最近一分鐘發生次數:{{payload.hits.total}}\"\r\n } \r\n }", 14 "params": { 15 "watcher": "{{watcher.title}}", 16 "payload_count": "{{payload.hits.total}}" 17 }, 18 "headers": { 19 "Content-Type": "application/json" 20 }, 21 "auth": "釘釘賬號:釘釘密碼", 22 "message": "業務功能告警", 23 "use_https": true 24 } 25 } 26 }, 27 "input": { 28 "search": { 29 "request": { 30 "index": [ 31 "*-tomcat" 32 ], 33 "body": { 34 "query": { 35 "bool": { 36 "must": [ 37 { 38 "match": { 39 "level": "ERROR" 40 } 41 }, 42 { 43 "range": { 44 "@timestamp": { 45 "gte": "now-1m", 46 "lte": "now", 47 "format": "epoch_millis" 48 } 49 } 50 } 51 ], 52 "must_not": [] 53 } 54 } 55 } 56 } 57 } 58 }, 59 "condition": { 60 "script": { 61 "script": "payload.hits.total >=1" 62 } 63 }, 64 "trigger": { 65 "schedule": { 66 "later": "every 1 minutes" 67 } 68 }, 69 "disable": true, 70 "report": false, 71 "title": "釘釘告警", 72 "save_payload": false, 73 "spy": true, 74 "impersonate": false 75 }
其中actions是發生觸發報警時的動作用什麼告警,我這裡用的是釘釘,也可以郵件報警
釘釘報警內容裡引數可以按照elk裡引數獲取。
payload.hits.hits.0._index
payload.hits.hits 是查詢的到所有報警資訊,0表示第一條報警資訊
input就是去es裡查詢資料,相關使用方法引數文章前的連結,下面只是簡單說明。
index是需要去哪個es索引裡查詢資料,可以用正則 .文中配置是查詢最近一分鐘內level等級是ERROR的所有資料。
condition 是對查詢結果進行計算,payload.hits.total >=1是查詢結果條數如果大於等於1則報警。
trigger是查詢頻率 , "later": "every 1 minutes" 表示每隔一分鐘則查詢一次。
spy表示是否在關閉網頁後仍然監控執行.預設情況只有在開啟網頁的情況下才能週期報警。
5、驗證
如果有資料,則顯示watcher executed,否則顯示no data。
顯示watcher executed,則釘釘會收到報警資訊
如果顯示watcher executed但釘釘沒有收到資訊,可以檢視日誌報什麼錯。其中no transform found表示actions裡body內語法錯誤,可以檢查下語法。