前言
監控系統,是通過持續信息采集、收斂、分析來發現問題,并對解決問題提供數據依賴的一種科學技術。通過監控技術可以實現對故障進行 “事前預警,事后追蹤”。
監控,是運維工作中的重要技術,如果沒有監控,運維人員就相當于盲人摸象,發現問題會變得很被動;監控也是整個產品生命周期中最重要的一環,如果沒有監控,產品中存在的問題就只能等用戶反饋(客訴),嚴重降低用戶體驗。
目前,互聯網行業的監控技術已經很成熟,業界有很多不錯的開源產品可供選擇,運維在開展監控工作時,選擇一款開源監控系統,是一個省時省力,效率最高的方案。
監控目的
監控的目的是通過采集準確的監控指標、配置合理的告警機制,提前或者盡早發現問題,并做出響應、解決問題,進而保證產品的穩定性,提升用戶體驗。
具體可分為以下幾方面:
- 對系統持續實時監控:指硬件系統,如服務器、路由器、交換機等;
- 對應用持續實時監控:指業務運行依賴的基礎服務,如數據庫、中間件等;
- 對業務持續實時監控:指產品運行情況,如狀態碼、接口響應時間、異常信息等。
監控方法
在了監控的重要性及監控目的之后,我們來聊聊到底如何做監控。
- 確定監控對象:明確是系統監控,還是應用監控,或者是業務監控;
- 確定監控指標:確定監控對象之后,需要明確具體監控指標,如果監控對象為服務器,那么監控指標有CPU、磁盤、內存等;
- 確定告警格式:監控的目的之一就是發出告警,所以,告警信息的格式要做到統一、簡潔明了;
- 確定告警閾值:泛濫的告警就像”狼來了“,所以要設定合理的閾值,確保告警準確、有效;
- 確定負責人:確定監控指標后,明確告警負責人,可以讓運維或測試人員更快的將事件分發到具體的業務負責人,以提升故障處理效率,同時降低對其他人的打擾;
- 確定事件處理流程:對于告警,“事事有回音,件件有著落” 很重要,讓每個事件構成一個閉環。
監控指標
監控指標是立足于監控對象至上的,如何確定監控指標?
監控指標,即監控對象相關的關鍵性指標。
那么,哪些算是關鍵性指標呢?
這個仁者見仁智者見智,在我看來,對服務穩定運行帶來嚴重影響的才算關鍵指標。
那么,怎么算嚴重影響呢?
這個問題可以通過用戶體驗來反推,哪些問題能帶來用戶體驗的不適?比如,請求響應慢、請求錯誤、請求報異常等等。
在我看來,站在用戶體驗的角度來反推監控指標是一個不錯的辦法。
常規監控指標
以下監控指標僅供參考。
監控對象監控指標硬件CPU溫度、主板溫度、物理磁盤、磁盤陣列等系統CPU負載、磁盤使用率、內存使用率、網絡帶寬等應用狀態(端口)、進程、應用內部指標(如MySQL、redis連接數、內存使用)等業務API、狀態碼、QPS等日志訪問日志、錯誤日志、運行日志、網絡日志等
監控工具
確定監控指標后,遍可以奔著高效、可用的原則來選擇監控工具了。
目前業界監控工具很多,常用的開源監控工具:Zabbix、Open-falcon、Prometheus、Grafana(圖)等。
相關的文章太多了,在此不做贅述,想要學習推薦官方網站。
監控方案
了解了監控指標、監控工具之后,接下來就需要確定一個合理、可行的監控方案了。如何確定監控方案?
- 首先,要了解公司的技術棧;
- 然后,對涉及到的各種組件進行全面了解;
- 其次,確定詳細的監控指標,目前各種應用的官網基本都有提供監控相關的metrics;
- 最后,選定適應當前需求的監控工具、圖形展示、告警方式等等。
總結
監控系統不可能做的盡善盡美,真正想把監控做的盡量完善,依靠開源軟件都很難滿足。有條件的公司會根據自己的業務需求開發自己的監控系統,如小米的Open-falcon。
原文:https://my.oschina.net/adailinux/blog/3158941