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






