如果第二次看到我的文章,歡迎訂閱z哥的公眾號(跨界架構師)哦~
每週五早8點 按時送達。當然了,也會時不時加個餐~我的第「74」篇原創敬上
這篇是「分散式系統理論」系列的第22篇,也是最後一篇。我們來聊聊分散式系統中的最後一道保障——監控。
監控這個事情,有點像我們平時對人的健康體檢。想要效果好、結果靠譜,就得「全面體檢」,每一項都做,否則哪怕檢查報告都是正常,也不代表沒有問題。下面這個景象是不是很熟悉?
運營小姐姐問:現在系統好卡啊。
程序員小哥哥答:我這裡不卡啊,而且從數據來看很正常。 運營小姐姐問:[一張截圖],你看一直在載入。 程序員小哥哥答:你的本地網路不好吧,打開別的網站試試。 ……
監控裏的「全面體檢」有個高大上的叫法,「立體化監控」。
但是,越全面,成本越高。所以,根據所處的時期從中挑選合適的監控方式更加重要。
接下去,Z哥來和你一起梳理一下那些有必要做監控的地方。最後再給你一個普適性的建議。
監控的三個層次
從監控的目標來看,監控可以分為三個層次。分別是「環境指標」、「程序指標」、「業務指標」。
環境指標
環境指標主要是網路I/O、網路延遲、磁碟I/O、磁碟佔用大小、CPU使用率、內存使用率、交換分區等等。
它們的目的是觀測程序所在的環境,是不是穩定。就好比「水培綠籮」,再怎麼好養的植物,你把下面的水煮一會,都得掛。
做環境指標的監控很簡單。Z哥建議你二選一就好了。
無腦用的話,就Zabbix吧。非常成熟的企業級監控產品。網上安裝教程有很多,隨便搜一下就是。
如果伺服器多的話,將Zabbix打包到進操作系統,做成一個鏡像。這樣一來,一臺新伺服器只要是從鏡像安裝的,就會自動加入到監控中。
如果願意折騰,想二次開發的話可以使用小米開源的open-falcon。項目的活躍度還不錯,可以瞭解一下:https://github.com/open-falcon/falcon-plus。
雖然功能的豐富度上比Zabbix差一些,但是畢竟是國人的產品,更加符合中國國情。國內有不少互聯網企業也在用,或者基於它進行了二次開發,最有名的是美團二次開發的mt-falcon的。如果決定進行二次開發的話,可以借鑒一些mt-falcon在網上的公開信息。
程序指標
程序指標除了和環境指標一樣的CPU使用率、內存使用率這種「外部「表現的指標之外,還有應用程序錯誤數、應用程序請求量、應用平均響應時間這種」內部「表現的指標。
其實做監控的時候有一個痛點,是不是「無侵入」的?
因為一旦需要侵入到具體的程序中去編寫「埋點」代碼,就很麻煩,畢竟涉及到更多的人一起配合嘛,推進更困難。
CPU使用率、內存使用率的監控比較簡單,可以直接通過shell或者cmd調用系統API獲取,和前面的環境指標一樣。
但對於應用程序錯誤數、應用程序請求量、應用平均響應時間的監控,這裡是一個分水嶺,因為這裡想要做到「無侵入」的效果,需要做一些額外的工作,否則只能編寫大量的「埋點」代碼。
比如,是不是有一個網關來統一進行流量分發?是不是有一個統一的RPC框架、資料庫訪問框架等等。如果有這樣的統一模塊就好辦了,直接在這些模塊裏增加監控功能。