分級告警策略


轉載自 https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651960843&idx=1&sn=dcbb3d84f413b95fff4628c06da12003&chksm=bd2d03d78a5a8ac15be0757d923b7ccd34307958f0a49fa2fdbd55f1d1548be401fe42e831a9&scene=27#wechat_redirect

微信號 :架構師之路

要介紹統一監控平台,得先從告警策略聊起,后續再聊不同維度監控的架構與實現細節。

 

一、啥是告警?

監控平台發現系統異常,向系統負責人發出文字(例如,郵件/短信),色彩(有些公司,編譯不過,CI平台會亮紅燈),聲音(有些公司,有蜂鳴器嗡嗡響,研發壓力大呀)等警示,就是告警。

 

絕大部分公司,主要是通過文字發出系統異常告警信息。

 

文字告警有哪些常見的方法?

以58到家為例,目前提供了四種文字告警的方式,其成本,到達率,實時性都不一樣:

  • 短信:成本高,實時性好,到達率高

  • 郵件:成本低,實時性差,到達率高

  • 釘釘/微信:成本低,實時性中,到達率中

畫外音:當然,得現有短信、郵件、釘釘、微信等消息網關的基礎服務。

 

二、啥是告警策略?

絕大部分公司,可能都沒有考慮系統監控告警策略,一旦發生異常,就發郵件/短信通知系統負責人,這樣可能導致這樣一些問題:

  • 同一個集群的不同實例出問題,可能會造成重復告警,浪費帶寬資源,升高短信成本

  • 系統負責人短時間內手機被告警短信刷屏,導致產生麻木感

  • 系統負責人短時間內手機,郵箱,釘釘,微信同時對一個故障告警,導致產生巨大壓力

  • 員工不重視告警,無法判斷告警的優先級,leader又不知情,導致事故影響擴大

畫外音:你猜,BAT一年的短信告警費用是多少?

 

為了解決上述問題,針對不同的服務,在不同的時間段,不同的員工層級,應該設定不同的告警策略,有哪些常見的告警策略呢?

  • 模塊告警收斂策略:當一個模塊/服務異常時,與其對應的所有接口監控,與其對應集群的多有實例,都會告警,此時,應該收斂為一個模塊/服務告警,常見的實現方式是,模塊/服務按照集群名稱做告警去重

  • 接口告警收斂策略:當一個模塊/服務的一個接口異常,與其對應集群的多個實例,都會告警,此時,應該收斂為一個接口告警,常見的實現方式是,按照接口名稱做告警去重

  • 告警頻率收斂策略:對同一個服務或者接口,應該在固定的時間內,只發送有限的告警,常見的方式是,按照1分鍾1次限制告警次數,一來降低研發的緊張感與壓力感,二來節省成本

  • 不同時段區分告警方式策略:工作日工作時段在公司時,通過郵件/釘釘/微信發送告警能更加節省成本;半夜或者周末發生故障時,通過郵件發送告警能保證實時性

  • 逐層上報告警策略:每個模塊都應該有負責人,原則上告警會發送給模塊的負責人,但如果告警連續1小時未恢復正常,告警會自動發送給系統負責人的直屬leader,如果告警連續3個小時未恢復正常,告警會自動發送給系統負責人的二級leader

  • 黑白跳動策略:當系統由正常變為異常,異常恢復正常,出現正反的變化時,都應該發出告警

畫外音:額,這么人性化,是“別人家”的公司么?

 

三、監控平台,告警策略依賴的基礎模塊

要實現統一監控平台,要實現告警策略化,需要依賴兩個非常重要的基礎模塊:

  • 集群信息管理

  • 員工信息管理

 

什么是集群信息管理?

額,這個架構設計中最容易忽略的部分,《監控平台基礎服務,集群信息統一管理》一文已經有過描述,文本不再展開。

 

以下是通過全局配置文件,實現集群信息集中管理,一個global.config舉例:

[user.service]

ip.list : ip1, ip2, ip3

port : 8080

bin.path : /user.service/bin/

log.path : /user.service/log/

conf.path : /user.service/conf/

ftp.path:ftp://192.168.0.1/USER_2_0_1_3/user.exe

owner.list : shenjian, zhangsan, lisi

 

從這里,監控中心能夠知道被監控的是 [user.service] 集群,有三個實例部署在 ip1/ip2/ip3 上,如果發生異常,要將告警發送給 shenjian, zhangsan, lisi 三個模塊直接負責人

 

什么是員工信息?

額,顧名思義,是員工基礎信息的管理(額,這算什么解釋)。和集群信息管理一樣,員工信息的管理一定要集中化,不能分散在各處(分散的壞處是耦合,在《監控平台基礎服務,集群信息統一管理》一文里談得很多了)。

 

員工信息管理的實現方式主要有兩種:

  • 員工信息管理服務

  • 全局員工信息配置

 

如何通過員工信息管理服務集中管理員工信息?

 

如上圖,建立員工信息管理服務,絕大部分公司應該都是這么統一管理員工信息的,這個服務和HR系統結合應該是非常緊密的,即使是外采的HR系統,肯定有相關的模塊管理員工信息,相關的數據庫存儲員工信息。

 

如何通過全局配置文件集中管理員工信息?

如果不考慮和HR系統的打通,而只考慮監控系統,分級告警的需求,完全可以通過配置文件來管理系統負責人信息,例如global.owner.config:

[shenjian]

department : tech

leader : sandy

email : XX@OO.com

phone :15912345678

dingding : 15912345678@dingding.com

wechat : XXOO

 

四、總結

要開發統一監控平台,至少有兩個基礎模塊:

  • 集群信息統一管理

  • 員工信息統一管理

 

統一監控平台,不能一異常就告警,太不人性化,要實現統一的分級告警策略

  • 模塊告警收斂策略:按照集群名稱做去重

  • 接口告警收斂策略:按照接口名稱做去重

  • 告警頻率收斂策略:按照M分鍾N次限制告警

  • 不同時段區分告警方式策略:工作日/非工作日,白天/夜晚區分

  • 逐層上報告警策略:先模塊負責人告警,n分鍾未恢復升級,m分鍾未恢復再升級

  • 黑白跳動策略:當系統由正常變為異常,異常恢復正常都通報

 

員工信息管理,需要注意:

  • 避免分散管理,導致耦合

  • 應當集中管理,有兩種常見的實現方式,統一服務/統一全局配置

 

五、調研

調研一、對於監控平台,你的感受是:

  • ca1,無監控平台,都是用戶反饋系統掛了

  • 有機器層面的監控,有nginx層面404監控

  • 有異常日志監控,有服務接口監控

  • 頭疼,有各種奇形怪狀的警示燈,蜂鳴器告警,壓力異常之大

 

調研二、對於人性化告警,你的感受是:

  • ca2,沒有監控,談不上告警

  • ca3,沒有考慮人性化,每次手機短信響起,就緊張,每次批量收到告警,壓力就很大

  • 有區分工作日/周末,白天/黑夜的告警策略區分

  • 有收斂,去重,逐層上報的告警策略區分


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM