大廠實踐篇:異常日誌告警系統

我們項目的編碼中會出於不同的目的打印不同級別的日誌,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”


本文分享自微信公衆號 - 豬哥Java(pig-python)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章