使用 Log Analytics 建置 Dashboard,早期發現問題!早期治療!

使用 Log Analytics 建置 Dashboard,早期發現問題!早期治療!

Dashbard memory downline

當我們導入了 Azure Container Monitor 之後,取得另外一個好處,內建的 Log Analytics 提供強大的日誌分析功能。而且 Log Analytics 經過設計之後,這些數據分析的資料能輸出為儀表板(Dashboard)。我們製作了一個 Dashboard,然後放到團隊的電視上,圖中很明顯出現直線下滑的曲線,而那條線是 Memory 的可用率!連入主機查詢,又是可惡的 99% 記憶體。

Memory full

查詢後快速找出犯人容器:

Portainer - docker logs

某一支容器執行個體,因某些原因,從半夜 12 點開始出現例外(Exception),此容器啟動參數包含了 restart=always,不到十秒時間容器就脫離的 Running 狀態,Docker 依照重啟策略的設定立即重啟此容器,每十秒重啟又例外一直無限循環。造成主機十多 GB 記憶體就這樣被吃光光。

從此案例,我們也學習到另一件事,restart=always 並不是沒有壞處。事後的分析可以了解,這種與外部有相依性的服務,如果內部應用程式沒有把相依服務的例外處理好(try~catch),restart=always 反而造成無限循環的死亡(我覺得這跟鞭屍好像,明明死了,一直叫人家起來,哭哭)。而且原本除非主機出現問題,不然很難主動去發現此問題(服務掛了,也是應該很快發現啦)。一主動、一被動,我們更希望能主動發現異常,主動處理異常。

2 則留言:

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。