一篇文章全面了解監(jiān)控知識(shí)體系



對(duì)系統(tǒng)不間斷的實(shí)時(shí)監(jiān)控:實(shí)際上是對(duì)系統(tǒng)不間斷的實(shí)時(shí)監(jiān)控(這就是監(jiān)控);
實(shí)時(shí)反饋系統(tǒng)當(dāng)前狀態(tài):我們監(jiān)控某個(gè)硬件、或者某個(gè)系統(tǒng),都是需要能實(shí)時(shí)看到當(dāng)前系統(tǒng)的狀態(tài),是正常、異常、或者故障;
保證服務(wù)可靠性安全性:我們監(jiān)控的目的就是要保證系統(tǒng)、服務(wù)、業(yè)務(wù)正常運(yùn)行;
保證業(yè)務(wù)持續(xù)穩(wěn)定運(yùn)行:如果我們的監(jiān)控做得很完善,即使出現(xiàn)故障,能第一時(shí)間接收到故障報(bào)警,在第一時(shí)間處理解決,從而保證業(yè)務(wù)持續(xù)性的穩(wěn)定運(yùn)行。


了解監(jiān)控對(duì)象:我們要監(jiān)控的對(duì)象你是否了解呢?比如CPU到底是如何工作的?
性能基準(zhǔn)指標(biāo):我們要監(jiān)控這個(gè)東西的什么屬性?比如CPU的使用率、負(fù)載、用戶態(tài)、內(nèi)核態(tài)、上下文切換。
報(bào)警閾值定義:怎么樣才算是故障,要報(bào)警呢?比如CPU的負(fù)載到底多少算高,用戶態(tài)、內(nèi)核態(tài)分別跑多少算高?
故障處理流程:收到了故障報(bào)警,我們?cè)趺刺幚砟兀坑惺裁锤咝У奶幚砹鞒虇幔?/span>


發(fā)現(xiàn)問題:當(dāng)系統(tǒng)發(fā)生故障報(bào)警,我們會(huì)收到故障報(bào)警的信息。
定位問題:故障郵件一般都會(huì)寫某某主機(jī)故障、具體故障的內(nèi)容,我們需要對(duì)報(bào)警內(nèi)容進(jìn)行分析。比如一臺(tái)服務(wù)器連不上,我們就需要考慮是網(wǎng)絡(luò)問題、還是負(fù)載太高導(dǎo)致長(zhǎng)時(shí)間無法連接,又或者某開發(fā)觸發(fā)了防火墻禁止的相關(guān)策略等,我們就需要去分析故障具體原因。
解決問題:當(dāng)然我們了解到故障的原因后,就需要通過故障解決的優(yōu)先級(jí)去解決該故障。
總結(jié)問題:當(dāng)我們解決完重大故障后,需要對(duì)故障原因以及防范進(jìn)行總結(jié)歸納,避免以后重復(fù)出現(xiàn)。


MRTG(Multi Route Trffic Grapher)是一套可用來繪制網(wǎng)絡(luò)流量圖的軟件,由瑞士奧爾滕的Tobias Oetiker與Dave Rand所開發(fā),以GPL授權(quán)。MRTG最好的版本是1995年推出的,用Perl語言寫成,可跨平臺(tái)使用,數(shù)據(jù)采集用SNMP協(xié)議,MRTG將手機(jī)到的數(shù)據(jù)通過Web頁面以GIF或者PNG格式繪制出圖像。
Ganglia是一個(gè)跨平臺(tái)的、可擴(kuò)展的、高性能的分布式監(jiān)控系統(tǒng),如集群和網(wǎng)格。它基于分層設(shè)計(jì),使用廣泛的技術(shù),用RRDtool存儲(chǔ)數(shù)據(jù)。具有可視化界面,適合對(duì)集群系統(tǒng)的自動(dòng)化監(jiān)控。其精心設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)和算法使得監(jiān)控端到被監(jiān)控端的連接開銷非常低。目前已有成千上萬的集群正在使用這個(gè)監(jiān)控系統(tǒng),可以輕松地處理2000個(gè)節(jié)點(diǎn)的集群環(huán)境。
Cacti(英文含義為仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool開發(fā)的網(wǎng)絡(luò)流量監(jiān)測(cè)圖形分析工具,它通過snmpget來獲取數(shù)據(jù)使用RRDtool繪圖,但使用者無須了解RRDtool復(fù)雜的參數(shù)。提供了非常強(qiáng)大的數(shù)據(jù)和用戶管理功能,可以指定每一個(gè)用戶能查看樹狀結(jié)構(gòu)、主機(jī)設(shè)備以及任何一張圖,還可以與LDAP結(jié)合進(jìn)行用戶認(rèn)證,同時(shí)也能自定義模板。在歷史數(shù)據(jù)展示監(jiān)控方面,其功能相當(dāng)不錯(cuò)。
Cacti通過添加模板,使不同設(shè)備的監(jiān)控添加具有可復(fù)用性,并且具備可自定義繪圖的功能,具有強(qiáng)大的運(yùn)算能力(數(shù)據(jù)的疊加功能)。
Nagios是一個(gè)企業(yè)級(jí)監(jiān)控系統(tǒng),可監(jiān)控服務(wù)的運(yùn)行狀態(tài)和網(wǎng)絡(luò)信息等,并能監(jiān)視所指定的本地或遠(yuǎn)程主機(jī)狀態(tài)以及服務(wù),同時(shí)提供異常告警通知功能等。Nagios可運(yùn)行在Linux和UNIX平臺(tái)上。同時(shí)提供Web界面,以方便系統(tǒng)管理人員查看網(wǎng)絡(luò)狀態(tài)、各種系統(tǒng)問題、以及系統(tǒng)相關(guān)日志等。Nagios的功能側(cè)重于監(jiān)控服務(wù)的可用性,能根據(jù)監(jiān)控指標(biāo)狀態(tài)觸發(fā)告警。目前Nagios也占領(lǐng)了一定的市場(chǎng)份額,不過Nagios并沒有與時(shí)俱進(jìn),已經(jīng)不能滿足于多變的監(jiān)控需求,架構(gòu)的擴(kuò)展性和使用的便捷性有待增強(qiáng),其高級(jí)功能集成在商業(yè)版Nagios XI中。
Smokeping主要用于監(jiān)視網(wǎng)絡(luò)性能,包括常規(guī)的ping、www服務(wù)器性能、DNS查詢性能、SSH性能等。底層也是用RRDtool做支持,特點(diǎn)是繪制圖非常漂亮,網(wǎng)絡(luò)丟包和延遲用顏色和陰影來標(biāo)示,支持將多張圖疊放在一起,其作者還開發(fā)了MRTG和RRDtll等工具。Smokeping的站點(diǎn)為:http://tobi.oetiker.cn/hp。
開源監(jiān)控系統(tǒng)OpenTSDB用HBase存儲(chǔ)所有時(shí)序(無須采樣)的數(shù)據(jù),來構(gòu)建一個(gè)分布式、可伸縮的時(shí)間序列數(shù)據(jù)庫。它支持秒級(jí)數(shù)據(jù)采集,支持永久存儲(chǔ),可以做容量規(guī)劃,并很容易地接入到現(xiàn)有的告警系統(tǒng)里。OpenTSDB可以從大規(guī)模的集群(包括集群中的網(wǎng)絡(luò)設(shè)備、操作系統(tǒng)、應(yīng)用程序)中獲取相應(yīng)的采集指標(biāo),并進(jìn)行存儲(chǔ)、索引和服務(wù),從而使這些數(shù)據(jù)更容易讓人理解,如Web化、圖形化等。
Zabbix是一個(gè)分布式監(jiān)控系統(tǒng),支持多種采集方式和采集客戶端,有專用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多種協(xié)議,它將采集到的數(shù)據(jù)存放到數(shù)據(jù)庫,然后對(duì)其進(jìn)行分析整理,達(dá)到條件觸發(fā)告警。其靈活的擴(kuò)展性和豐富的功能是其他監(jiān)控系統(tǒng)所不能比的。相對(duì)來說,它的總體功能做得非常優(yōu)秀。從以上各種監(jiān)控系統(tǒng)的對(duì)比來看,Zabbix都是具有優(yōu)勢(shì)的,其豐富的功能、可擴(kuò)展的能力、二次開發(fā)的能力和簡(jiǎn)單易用的特點(diǎn),讀者只要稍加學(xué)習(xí),即可構(gòu)建自己的監(jiān)控系統(tǒng)。
小米的監(jiān)控系統(tǒng):Open-Falcon。Open-Falcon的目標(biāo)是做最開放、最好用的互聯(lián)網(wǎng)企業(yè)級(jí)監(jiān)控產(chǎn)品。


數(shù)據(jù)采集:Zabbix通過SNMP、Agent、ICMP、SSH、IPMI等對(duì)系統(tǒng)進(jìn)行數(shù)據(jù)采集;
數(shù)據(jù)存儲(chǔ):Zabbix存儲(chǔ)在MySQL上,也可以存儲(chǔ)在其他數(shù)據(jù)庫服務(wù);
數(shù)據(jù)分析:當(dāng)我們事后需要復(fù)盤分析故障時(shí),Zabbix能給我們提供圖形以及時(shí)間等相關(guān)信息,方面我們確定故障所在;
數(shù)據(jù)展示:Web界面展示、(移動(dòng)APP、java_php開發(fā)一個(gè)Web界面也可以);
監(jiān)控報(bào)警:電話報(bào)警、郵件報(bào)警、微信報(bào)警、短信報(bào)警、報(bào)警升級(jí)機(jī)制等(無論什么報(bào)警都可以);
報(bào)警處理:當(dāng)接收到報(bào)警,我們需要根據(jù)故障的級(jí)別進(jìn)行處理,比如:重要緊急、重要不緊急,等。根據(jù)故障的級(jí)別,配合相關(guān)的人員進(jìn)行快速處理。






























?













硬件監(jiān)控,通過SNMP來進(jìn)行路由器交換機(jī)的監(jiān)控(這些可以跟一些廠商溝通來了解如何做)、服務(wù)器的溫度以及其它,可以通過IPMI來實(shí)現(xiàn)。當(dāng)然如果沒有硬件全都是云,直接跳過這一步驟。
系統(tǒng)監(jiān)控,如CPU的負(fù)載,上下文切換、內(nèi)存使用率、磁盤讀寫、磁盤使用率、磁盤inode使用率。當(dāng)然這些都是需要配置觸發(fā)器,因?yàn)槟J(rèn)太低會(huì)頻繁報(bào)警。
服務(wù)監(jiān)控,比如公司用的LNMP架構(gòu),Nginx自帶Status模塊、PHP也有相關(guān)的Status、MySQL的話可以通過Percona官方工具來進(jìn)行監(jiān)控。Redis這些通過自身的info獲取信息進(jìn)行過濾等。方法都類似。要么服務(wù)自帶。要么通過腳本來實(shí)現(xiàn)想監(jiān)控的內(nèi)容,以及報(bào)警和圖形功能。
網(wǎng)絡(luò)監(jiān)控,如果是云主機(jī)又不是跨機(jī)房,那么可以選擇不監(jiān)控網(wǎng)絡(luò)。當(dāng)然你說我們是跨機(jī)房以及如何如何,推薦使用smokeping來做網(wǎng)絡(luò)相關(guān)的監(jiān)控,或者直接交給你們的網(wǎng)絡(luò)工程師來做,因?yàn)樾g(shù)業(yè)有專攻。
安全監(jiān)控,如果是云主機(jī)可以考慮使用自帶的安全防護(hù)。當(dāng)然也可以使用iptables。如果是硬件,那么推薦使用硬件防火墻。使用云可以購買防DDOS,避免出現(xiàn)故障導(dǎo)致down機(jī)一天。如果是系統(tǒng),那么權(quán)限、密碼、備份、恢復(fù)等基礎(chǔ)方案要做好。Web同時(shí)也可以使用Nginx+Lua來實(shí)現(xiàn)一個(gè)Web層面的防火墻。當(dāng)然也可以使用集成好的OpenResty。
Web監(jiān)控,Web監(jiān)控的話題其實(shí)還是很多。比如可以使用自帶的Web監(jiān)控來監(jiān)控頁面相關(guān)的延遲、js響應(yīng)時(shí)間、下載時(shí)間、等等。這里我推薦使用專業(yè)的商業(yè)軟件監(jiān)控寶或聽云來實(shí)現(xiàn)。畢竟人家全國各地都有機(jī)房(如果本身是多機(jī)房那就另說了)。
日志監(jiān)控,如果是Web的話可以使用監(jiān)控Nginx的50x、40x的錯(cuò)誤日志,PHP的ERROR日志。其實(shí)這些需求無非是,收集、存儲(chǔ)、查詢、展示,我們其實(shí)可以使用開源的ELKStack來實(shí)現(xiàn)。Logstash(收集)、Elasticsearch(存儲(chǔ)+搜索)、Kibana(展示)。
業(yè)務(wù)監(jiān)控,上面做了那么多,其實(shí)最終還是保證業(yè)務(wù)的運(yùn)行。這樣我們做的監(jiān)控才有意義。所以業(yè)務(wù)層面這塊的監(jiān)控需要和開發(fā)以及總監(jiān)開會(huì)討論,監(jiān)控比較重要的業(yè)務(wù)指標(biāo),(需要開會(huì)確認(rèn))然后通過簡(jiǎn)單的腳本就可以實(shí)現(xiàn),最后設(shè)置觸發(fā)器即可 。
流量分析,平時(shí)我們分析日志都是拿awk sed xxx一堆工具來實(shí)現(xiàn)。這樣對(duì)我們統(tǒng)計(jì)IP、PV、UV不是很方便。那么可以使用百度統(tǒng)計(jì)、Google統(tǒng)計(jì)、商業(yè),讓開發(fā)嵌入代碼即可。為了避免隱私也可以使用Piwik來做相關(guān)的流量分析。
可視化,通過Screen以及引入一些第三方的庫來美化界面,同時(shí)我們也需要知道,訂單量突然增加、突然減少。或者說突然來了一大波流量,這流量從哪兒來,是不是推廣了,還是被攻擊了。可以結(jié)合監(jiān)控平來梳理各個(gè)系統(tǒng)之間的業(yè)務(wù)關(guān)系。
自動(dòng)化監(jiān)控,如上我們做了那么多的工作,當(dāng)然不能是一臺(tái)一臺(tái)的來加key實(shí)現(xiàn)。可以通過Zabbix的主動(dòng)模式以及被動(dòng)模式來實(shí)現(xiàn)。當(dāng)然最好還是通過API來實(shí)現(xiàn)。

來源:https://blog.51cto.com/liangweilinux/1914591
版權(quán)申明:內(nèi)容來源網(wǎng)絡(luò),版權(quán)歸原創(chuàng)者所有。除非無法確認(rèn),我們都會(huì)標(biāo)明作者及出處,如有侵權(quán)煩請(qǐng)告知,我們會(huì)立即刪除并表示歉意。謝謝!

