我們項目的編碼中會出於不同的目的打印不同級別的日誌,debug、info、warn、error。其中error日誌是非常關鍵的日誌信息,error出現的時候表示業務的流程已經出現了問題,無法正常運轉業務了。因此對於error日誌的告警觸達到開發人員這個環節至關重要。本篇筆記用於介紹異常日誌的告警系統該如何設計。
一、異常日誌告警過濾器配置
一個過濾器有多個監控項
常規的error日誌我們一般都會包含message和異常對象兩部分。log.error(“出事了!!!”, exception)。
因此告警過濾器應該配置監控的是message信息還是異常堆棧信息
監控內容:message還是異常堆棧。
監控項的匹配規則
交集:命中所有規則
並集:命中任何一個規則
報警條件
時間&條數:比如1分鐘100條,1秒10條等等
比例:
設置時間窗口:比如1分鐘 5分鐘
環比:對比上個時間窗口增加了百分之多少
日同比:對比昨天的該窗口增加了百分之多少
配置告警級別
告警級別對應不同的觸發方式
不同的閾值配置不同的告警級別
順序
設置過濾器的順序決定被匹配的優先級
是否停止匹配
含義爲匹配命中之後是否繼續匹配之後的過濾器
默認選擇”是“,否則一個日誌可能會命中多個規則報警多次
默認過濾器
任何一個項目都會有一個默認過濾器
並且該過濾器的優先級最低
沒有命中任何一條過濾器的都會被該過濾器命中
二、告警觸達
告警方式
公司內部系統類似於企業微信
短信
電話
告警級別
不同的過濾器配置不同的告警級別
比如
三級:企業微信
二級:企業微信+短信
一級:企業微信+短信+電話
三、過濾器demo
名稱:積分庫存過濾器
順序:1(表示優先級最高)
規則:交集
監控內容:message
報警條件:1分鐘100條
報警級別:二級
是否停止匹配:是
四、因此最終的觸發效果如下
比如業務場景爲用戶參與活動就下發獎勵:積分、道具之類
1.積分庫存不足
2.業務日誌判斷並打印了該情況。log.error(“積分庫存不足”)。
3.匹配上了”積分庫存不足”的業務告警邏輯
4.達到了告警的閾值比如:100個/分鐘
5.觸發改告警配置的通知,比如:發短信
6.開發同學收到告警開始解決
本文分享自微信公衆號 - 豬哥Java(pig-python)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。