監控告警成長之路

背景

在過去的兩年裏,我們從零開始搭建了整個事業羣的監控。目前整套系統接入 200+ 的服務,700+ 的實例,收集了上萬個指標。不停探索,歷經曲折,方得自由。本文主要內容是總結兩年間走過的路,趟過的坑,學習到的經驗。

一無所有

業務剛開始上線時,是沒有任何監控的,所有的監控都是依賴接入層的Nginx的監控數據,所有的故障都是從用戶獲取到反饋才能發現;排查問題依靠日誌系統;從上游服務開始,逐層查詢日誌。每次發佈上線內心都在敲鑼打鼓。

疲於奔命

在業務第一個大版本上線之後,我們開始着手給業務系統接入監控,此時的選擇是兄弟團隊搭建的 Open-Falcon,使用 Grafana 作爲看板。基於對立體化監控的理解,開始着手建立各種緯度的看板。

  • 服務緯度:提供 Client、Server 端視圖,從服務的狀態、性能、質量、容量四個維度,分析需要添加到看板的指標

  • 業務緯度:關注業務的關鍵路徑,建立業務監控樹,用於出現問題時,快速定位到具體的服務

  • 產品緯度:分析產品關鍵指標,構建公共看板

在這個階段,我們投入了大量的人力資源到監控中,卻收效甚微,主要有以下幾點原因:

  • 從下往上的構建看板,需要不停的耗費人力補齊遺漏的指標

  • 關注服務質量的指標多於關注產品質量指標,對於產品指標缺少足夠的認識

  • 受限於 Open-Falcon+Grafana 的能力,建立和維護 監控和告警,人力成本極高

  • 所有人都要摸索熟悉監控的基礎概念、門檻高

  • 告警與業務關聯度不高,業務一有波動就會誤告,真正出現問題又發現沒有配置告警

在這個階段,我們投入了大量的人力,建立和維護各種看板,處理各種告警,疲於奔命,卻不盡如人意。

前路始現

在第一個版本穩定之後,很長一段時間沒有大需求,促使我們考慮如何解決這些問題。同時在這個階段,在部門內部開始開發自己的 RPC 框架,基於在微信的工作經驗,促使我們把目光投向 Prometheus 等基於數據的監控平臺。

在監控方面,我們使用 SDK(數據上報) + Prometheus(數據收集)+ Grafana(監控看板),構建了更靈活方便的看板。

  • 服務緯度,在開發RPC框架的同時,將服務緯度的上報直接嵌入框架中,同時提供SDK給兄弟團隊用於現有服務的接入。然後統一維護了兩套服務看板:全局看板,詳細看板。前者負責日常運營,後者負責排查問題。

  • 業務&產品緯度,SDK設計了統一簡單的上報接口,方便構建業務、產品相關的看板

至此,服務緯度的數據變成了可以逐漸迭代優化的統一視圖,隨着經驗的積累,對監控的認識越深刻,看板使用越是應手。

在告警方面,使用 Prometheus(數據計算) + Promgen(規則管理) + AlertManager(告警管理) + Webhook (告警調用)+ 企業微信羣,構建了完善的告警鏈條。

方得自由

在監控告警中,我們會頻繁遇到以下問題:

  • 閾值設定:不同業務場景,不同指標,如何衡量閾值是過於寬鬆,還是過於嚴格。

  • 流量波動:在理想的世界裏,流量是有起伏規律的,監控系統能夠掌握這種規律,當流量上升時,告警閾值自動上升。

  • 瞬態告警:每個人都會遇到這樣的情況,同樣的問題隔段時間就出現一次,持續時間不過幾分鐘,來得快去得也快。說實話,你已經忙得不可開交了,近期內也不大會去排除這種問題。是忽略呢?還是忽略呢?

  • 信息過載:典型的信息過載場景是,給所有需要的地方都加上了告警,以爲這樣即可高枕無憂了,結果隨着而來的是,各種來源的告警輕鬆擠滿你的收件箱。

  • 故障定位:在相對複雜的業務場景下,一個“告警事件” 除了包含“時間”(何時發生)、“地點”(哪個服務器/組件)、“內容”(包括錯誤碼、狀態值等)外,還包含地區、機房、服務、接口等,故障定位之路道阻且長。

那麼目前我們解決的怎麼樣了呢?

  • 問題 1、2,爲了解決該問題,在監控平臺裏,引入了異常檢測算法(anomaly detection) ,得到了很好的解決

  • 問題 3,使用Prometheus的能力,得以解決

  • 問題 4,我們對告警指標進行分級,只在調用鏈條的最上游配置細化的重要告警指標,告警之後通過鏈接跳轉到對應的詳細看板進行問題排查,告警更少更精確可查,維護起來也更簡單了。

  • 問題 5,目前仍然沒有得到很好的解決,但是已經有了方案,將在後續進一步優化。

未來之路

基於 Prometheus 的數據平臺能力,可以構建出業務所有服務的調用的樹狀圖,並且當時的錯誤變化情況,進行自動故障根源分析,這也是我們以後將要做的。

附:

全局看板部分視圖

詳細看板部分視圖

原文鏈接:https://www.cyningsun.com/03-28-2020/site-reliability-engineering.html

Kubernetes管理員認證(CKA)培訓

本次CKA培訓在上海開班,基於最新考綱,通過線下授課、考題解讀、模擬演練等方式,幫助學員快速掌握Kubernetes的理論知識和專業技能,並針對考試做特別強化訓練,讓學員能從容面對CKA認證考試,使學員既能掌握Kubernetes相關知識,又能通過CKA認證考試,學員可多次參加培訓,直到通過認證。點擊下方圖片或者閱讀原文鏈接查看詳情。

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