運(yùn)維必知必會(huì)的監(jiān)控知識(shí)體系全梳理
監(jiān)控是整個(gè)運(yùn)維乃至整個(gè)產(chǎn)品生命周期中最重要的一環(huán),事前及時(shí)預(yù)警發(fā)現(xiàn)故障,事后提供詳實(shí)的數(shù)據(jù)用于追查定位問(wèn)題。
目前業(yè)界有很多不錯(cuò)的開(kāi)源產(chǎn)品可供選擇。選擇一款開(kāi)源的監(jiān)控系統(tǒng),是一個(gè)省時(shí)省力、效率最高的方案。當(dāng)然,對(duì)監(jiān)控不是很明白的朋友們,看了以下文章可能會(huì)對(duì)監(jiān)控整個(gè)體系有比較深刻的認(rèn)識(shí)。
一、監(jiān)控目標(biāo)
每個(gè)人由于所在的行業(yè)、公司、業(yè)務(wù)、崗位不同,對(duì)監(jiān)控的理解也不盡相同,但是我們需要注意,監(jiān)控是需要站在公司的業(yè)務(wù)角度去考慮,而不是針對(duì)某個(gè)監(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)控方法
1.了解監(jiān)控對(duì)象:我們要監(jiān)控的對(duì)象你是否了解呢?比如CPU到底是如何工作的?
2.性能基準(zhǔn)指標(biāo):我們要監(jiān)控這個(gè)東西的什么屬性?比如CPU的使用率、負(fù)載、用戶(hù)態(tài)、內(nèi)核態(tài)、上下文切換。
3.報(bào)警閾值定義:怎么樣才算是故障,要報(bào)警呢?比如CPU的負(fù)載到底多少算高,用戶(hù)態(tài)、內(nèi)核態(tài)分別跑多少算高?
4.故障處理流程:收到了故障報(bào)警,我們?cè)趺刺幚砟兀坑惺裁锤咝У奶幚砹鞒虇幔?/p>
三、監(jiān)控核心
發(fā)現(xiàn)問(wèn)題:當(dāng)系統(tǒng)發(fā)生故障報(bào)警,我們會(huì)收到故障報(bào)警的信息。
定位問(wèn)題:故障郵件一般都會(huì)寫(xiě)某某主機(jī)故障、具體故障的內(nèi)容,我們需要對(duì)報(bào)警內(nèi)容進(jìn)行分析。比如一臺(tái)服務(wù)器連不上,我們就需要考慮是網(wǎng)絡(luò)問(wèn)題、還是負(fù)載太高導(dǎo)致長(zhǎng)時(shí)間無(wú)法連接,又或者某開(kāi)發(fā)觸發(fā)了防火墻禁止的相關(guān)策略等,我們就需要去分析故障具體原因。
解決問(wèn)題:當(dāng)然我們了解到故障的原因后,就需要通過(guò)故障解決的優(yōu)先級(jí)去解決該故障。
總結(jié)問(wèn)題:當(dāng)我們解決完重大故障后,需要對(duì)故障原因以及防范進(jìn)行總結(jié)歸納,避免以后重復(fù)出現(xiàn)。
四、監(jiān)控工具
下面我們需要選擇一款適合公司業(yè)務(wù)的監(jiān)控工具進(jìn)行監(jiān)控,。這里我對(duì)監(jiān)控工具進(jìn)行了簡(jiǎn)單的分類(lèi)。
1、老牌監(jiān)控
MRTG(Multi Route Trffic Grapher)是一套可用來(lái)繪制網(wǎng)絡(luò)流量圖的軟件,由瑞士奧爾滕的Tobias Oetiker與Dave Rand所開(kāi)發(fā),以GPL授權(quán)。
MRTG最好的版本是1995年推出的,用Perl語(yǔ)言寫(xiě)成,可跨平臺(tái)使用,數(shù)據(jù)采集用SNMP協(xié)議,MRTG將手機(jī)到的數(shù)據(jù)通過(guò)Web頁(yè)面以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)控端的連接開(kāi)銷(xiāo)非常低。目前已有成千上萬(wàn)的集群正在使用這個(gè)監(jiān)控系統(tǒng),可以輕松地處理2000個(gè)節(jié)點(diǎn)的集群環(huán)境。
Cacti(英文含義為仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool開(kāi)發(fā)的網(wǎng)絡(luò)流量監(jiān)測(cè)圖形分析工具,它通過(guò)snmpget來(lái)獲取數(shù)據(jù)使用RRDtool繪圖,但使用者無(wú)須了解RRDtool復(fù)雜的參數(shù)。提供了非常強(qiáng)大的數(shù)據(jù)和用戶(hù)管理功能,可以指定每一個(gè)用戶(hù)能查看樹(shù)狀結(jié)構(gòu)、主機(jī)設(shè)備以及任何一張圖,還可以與LDAP結(jié)合進(jìn)行用戶(hù)認(rèn)證,同時(shí)也能自定義模板。在歷史數(shù)據(jù)展示監(jiān)控方面,其功能相當(dāng)不錯(cuò)。
Cacti通過(guò)添加模板,使不同設(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)問(wèn)題、以及系統(tǒng)相關(guān)日志等。
Nagios的功能側(cè)重于監(jiān)控服務(wù)的可用性,能根據(jù)監(jiān)控指標(biāo)狀態(tài)觸發(fā)告警。
目前Nagios也占領(lǐng)了一定的市場(chǎng)份額,不過(guò)Nagios并沒(méi)有與時(shí)俱進(jìn),已經(jīng)不能滿(mǎn)足于多變的監(jiān)控需求,架構(gòu)的擴(kuò)展性和使用的便捷性有待增強(qiáng),其高級(jí)功能集成在商業(yè)版Nagios XI中。
Smokeping主要用于監(jiān)視網(wǎng)絡(luò)性能,包括常規(guī)的ping、www服務(wù)器性能、DNS查詢(xún)性能、SSH性能等。底層也是用RRDtool做支持,特點(diǎn)是繪制圖非常漂亮,網(wǎng)絡(luò)丟包和延遲用顏色和陰影來(lái)標(biāo)示,支持將多張圖疊放在一起,其作者還開(kāi)發(fā)了MRTG和RRDtll等工具。Smokeping的站點(diǎn)為:http://tobi.oetiker.cn/hp。
開(kāi)源監(jiān)控系統(tǒng)OpenTSDB用HBase存儲(chǔ)所有時(shí)序(無(wú)須采樣)的數(shù)據(jù),來(lái)構(gòu)建一個(gè)分布式、可伸縮的時(shí)間序列數(shù)據(jù)庫(kù)。它支持秒級(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化、圖形化等。
2、王牌監(jiān)控
Zabbix是一個(gè)分布式監(jiān)控系統(tǒng),支持多種采集方式和采集客戶(hù)端,有專(zhuān)用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多種協(xié)議,它將采集到的數(shù)據(jù)存放到數(shù)據(jù)庫(kù),然后對(duì)其進(jìn)行分析整理,達(dá)到條件觸發(fā)告警。其靈活的擴(kuò)展性和豐富的功能是其他監(jiān)控系統(tǒng)所不能比的。相對(duì)來(lái)說(shuō),它的總體功能做得非常優(yōu)秀。
從以上各種監(jiān)控系統(tǒng)的對(duì)比來(lái)看,Zabbix都是具有優(yōu)勢(shì)的,其豐富的功能、可擴(kuò)展的能力、二次開(kāi)發(fā)的能力和簡(jiǎn)單易用的特點(diǎn),讀者只要稍加學(xué)習(xí),即可構(gòu)建自己的監(jiān)控系統(tǒng)。
小米的監(jiān)控系統(tǒng):Open-Falcon。Open-Falcon的目標(biāo)是做最開(kāi)放、最好用的互聯(lián)網(wǎng)企業(yè)級(jí)監(jiān)控產(chǎn)品。
3、三方監(jiān)控
現(xiàn)在市場(chǎng)上有很多不錯(cuò)的第三方監(jiān)控,比如:監(jiān)控寶、監(jiān)控易、聽(tīng)云、還有很多云廠商自帶監(jiān)控,但在這里我不打算著重介紹,如果想了解三方監(jiān)控可自行上官網(wǎng)咨詢(xún)。(避免說(shuō)廣告植入)
五、監(jiān)控流程
上面介紹了這么多,到底選擇什么監(jiān)控工具最合適呢?我這里推薦幾款開(kāi)源監(jiān)控工具:Zabbix、Open-Falcon、LEPUS天兔(專(zhuān)用于監(jiān)控?cái)?shù)據(jù)庫(kù))。
但本文還是基于Zabbix來(lái)構(gòu)建整個(gè)監(jiān)控體系生態(tài)圈。下面我們就來(lái)聊聊Zabbix的整個(gè)流程:
- 數(shù)據(jù)采集:Zabbix通過(guò)SNMP、Agent、ICMP、SSH、IPMI等對(duì)系統(tǒng)進(jìn)行數(shù)據(jù)采集;
- 數(shù)據(jù)存儲(chǔ):Zabbix存儲(chǔ)在MySQL上,也可以存儲(chǔ)在其他數(shù)據(jù)庫(kù)服務(wù);
- 數(shù)據(jù)分析:當(dāng)我們事后需要復(fù)盤(pán)分析故障時(shí),Zabbix能給我們提供圖形以及時(shí)間等相關(guān)信息,方便我們確定故障所在;
- 數(shù)據(jù)展示:Web界面展示、(移動(dòng)APP、java_php開(kāi)發(fā)一個(gè)Web界面也可以);
- 監(jiān)控報(bào)警:電話(huà)報(bào)警、郵件報(bào)警、微信報(bào)警、短信報(bào)警、報(bào)警升級(jí)機(jī)制等(無(wú)論什么報(bào)警都可以);
- 報(bào)警處理:當(dāng)接收到報(bào)警,我們需要根據(jù)故障的級(jí)別進(jìn)行處理,比如:重要緊急、重要不緊急,等。根據(jù)故障的級(jí)別,配合相關(guān)的人員進(jìn)行快速處理。
六、監(jiān)控指標(biāo)
上面了解了監(jiān)控方法、目標(biāo)、流程、也了解了監(jiān)控有哪些工具,可能有人會(huì)疑惑,我們具體要監(jiān)控些什么東西,在這里我進(jìn)行了分類(lèi)整理,包含硬件監(jiān)控、系統(tǒng)監(jiān)控、應(yīng)用監(jiān)控、網(wǎng)絡(luò)監(jiān)控、流量分析、日志監(jiān)控、安全監(jiān)控、API監(jiān)控、性能監(jiān)控、業(yè)務(wù)監(jiān)控。
1、硬件監(jiān)控
早期我們通過(guò)機(jī)房巡檢的方式,查看硬件設(shè)備燈光閃爍情況判斷是否故障,這樣非常浪費(fèi)人力,并且是重復(fù)性無(wú)技術(shù)含量的工作,大家懂得。
當(dāng)然我們現(xiàn)在可以通過(guò)IPMI對(duì)硬件詳細(xì)情況進(jìn)行監(jiān)控,并對(duì)CPU、內(nèi)存、磁盤(pán)、溫度、風(fēng)扇、電壓等設(shè)置報(bào)警設(shè)置報(bào)警閾值(自行對(duì)監(jiān)控報(bào)警內(nèi)容編寫(xiě)合理的報(bào)警范圍) 。
IPMI監(jiān)控硬件服務(wù)參考資料:Zabbix IPMI Interface
2、系統(tǒng)監(jiān)控
中小型企業(yè)基本全是Linux服務(wù)器,那么我們肯定是要監(jiān)控起系統(tǒng)資源的使用情況,系統(tǒng)監(jiān)控是監(jiān)控體系的基礎(chǔ)。
監(jiān)控主要對(duì)象:
CPU有幾個(gè)重要的概念:上下文切換、運(yùn)行隊(duì)列和使用率。這也是我們CPU監(jiān)控的幾個(gè)重點(diǎn)指標(biāo)。
通常情況,每個(gè)處理器的運(yùn)行隊(duì)列不要高于3,CPU 利用率中用“戶(hù)態(tài)/內(nèi)核態(tài)”比例維持在70/30,空閑狀態(tài)維持在50%,上下文切換要根據(jù)系統(tǒng)繁忙程度來(lái)綜合考量。
針對(duì)CPU常用的工具有:htop、top、vmstat、mpstat、dstat、glances。Zabbix提供系統(tǒng)監(jiān)控模板:Zabbix Agent Interface。
CPU整體狀態(tài)
上下文切換
負(fù)載狀態(tài)
內(nèi)存:通常我們需要監(jiān)控內(nèi)存的使用率、SWAP使用率、同時(shí)可以通過(guò)Zabbix描繪內(nèi)存使用率的曲線(xiàn)圖形發(fā)現(xiàn)某服務(wù)內(nèi)存溢出等。
針對(duì)內(nèi)存常用的工具有:free、top、vmstat、glances。
內(nèi)存使用率
IO分為磁盤(pán)IO和網(wǎng)絡(luò)IO。除了在做性能調(diào)優(yōu)我們要監(jiān)控更詳細(xì)的數(shù)據(jù)外,日常監(jiān)控只關(guān)注磁盤(pán)使用率、磁盤(pán)吞吐量、磁盤(pán)寫(xiě)入繁忙程度,網(wǎng)絡(luò)也是監(jiān)控網(wǎng)卡流量即可。常用工具有:iostat、iotop、df、iftop、sar、glances。
磁盤(pán)使用率
磁盤(pán)讀/寫(xiě)吞吐
網(wǎng)卡進(jìn)出口流量
TCP11種狀態(tài)信息
其它系統(tǒng)監(jiān)控還有運(yùn)行的進(jìn)程端口、進(jìn)程數(shù)、登陸用戶(hù)、Open File等(詳細(xì)查看Zabbix自帶OS Linux模板)。
其它相關(guān)監(jiān)控
3、應(yīng)用監(jiān)控
把硬件監(jiān)控和系統(tǒng)監(jiān)控研究明白后,我們進(jìn)一步操作是需要登陸到服務(wù)器上查看服務(wù)器運(yùn)行了哪些服務(wù),都需要監(jiān)控起來(lái)。
應(yīng)用服務(wù)監(jiān)控也是監(jiān)控體系中比較重要的內(nèi)容,例如:LVS、HAProxy、Docker、Nginx、PHP、Memcached、Redis、MySQL、RabbitMQ等,相關(guān)的服務(wù)都需要使用zabbix監(jiān)控起來(lái)。
nginx_status
PHP-FPM_status
Redis_status
JVM監(jiān)控
筆者之前寫(xiě)過(guò)服務(wù)監(jiān)控詳細(xì)的操作過(guò)程,這里就不一一展示,詳情訪問(wèn):Zabbix監(jiān)控各種應(yīng)用服務(wù)。
- Zabbix提供應(yīng)用服務(wù)監(jiān)控:Zabbix Agent UserParameter
- Zabbix提供的Java監(jiān)控:Zabbix JMX Interface
- Percona提供MySQL數(shù)據(jù)庫(kù)監(jiān)控:percona-monitoring-plulgins
4、網(wǎng)絡(luò)監(jiān)控
作為一個(gè)針對(duì)全國(guó)用戶(hù)的電商網(wǎng)站,時(shí)刻掌握各地到機(jī)房的網(wǎng)絡(luò)狀態(tài)也是必須的。
網(wǎng)絡(luò)監(jiān)控是我們構(gòu)建監(jiān)控平臺(tái)是必須要考慮的,尤其是針對(duì)有多個(gè)機(jī)房的場(chǎng)景,各個(gè)機(jī)房之間的網(wǎng)絡(luò)狀態(tài),機(jī)房和全國(guó)各地的網(wǎng)絡(luò)狀態(tài)都是我們需要重點(diǎn)關(guān)注的對(duì)象,那如何掌握這些狀態(tài)信息呢?我們需要借助于網(wǎng)絡(luò)監(jiān)控工具Smokeping。
Smokeping 是rrdtool的作者Tobi Oetiker的作品,是用Perl寫(xiě)的,主要是監(jiān)視網(wǎng)絡(luò)性能,www服務(wù)器性能,DNS查詢(xún)性能等,使用rrdtool繪圖,而且支持分布式,直接從多個(gè)agent進(jìn)行數(shù)據(jù)的匯總。
同時(shí),由于自己監(jiān)控點(diǎn)比較少,還可以借助很多商業(yè)的監(jiān)控工具,比如監(jiān)控寶、基調(diào)、博瑞等。同時(shí)這些服務(wù)提供商還可以幫助你監(jiān)控CDN的狀態(tài)。
smokeping
監(jiān)控寶
5、流量分析
網(wǎng)站流量分析對(duì)于運(yùn)維人員來(lái)說(shuō),更是一門(mén)必須掌握的知識(shí)了。比如對(duì)于一家電商公司來(lái)說(shuō):通過(guò)對(duì)訂單來(lái)源的統(tǒng)計(jì)和分析,可以了解我們?cè)谀硞€(gè)網(wǎng)站上的廣告投入有沒(méi)有收到預(yù)期的效果。 可以區(qū)分不同地區(qū)的訪問(wèn)人數(shù)、甚至商品交易額等。百度統(tǒng)計(jì)、Google分析、站長(zhǎng)工具等,只需要在頁(yè)面嵌入一個(gè)js即可。
但是,數(shù)據(jù)始終是在對(duì)方手中,個(gè)性化定制不方便,于是Google出一個(gè)叫Piwik的開(kāi)源分析工具。
piwik
百度統(tǒng)計(jì)
6、日志監(jiān)控
通常情況下,隨著系統(tǒng)的運(yùn)行,操作系統(tǒng)會(huì)產(chǎn)生系統(tǒng)日志,應(yīng)用程序會(huì)產(chǎn)生應(yīng)用程序的訪問(wèn)日志、錯(cuò)誤日志,運(yùn)行日志,網(wǎng)絡(luò)日志,我們可以使用ELK來(lái)進(jìn)行日志監(jiān)控。
對(duì)于日志監(jiān)控來(lái)說(shuō),最見(jiàn)的需求就是收集、存儲(chǔ)、查詢(xún)、展示,開(kāi)源社區(qū)正好有相對(duì)應(yīng)的開(kāi)源項(xiàng)目:Logstash(收集)+ElasticSearch(存儲(chǔ)+搜索)+Kibana(展示)。
我們將這三個(gè)組合起來(lái)的技術(shù)稱(chēng)之為ELK Stack,所以說(shuō)ELK Stack指的是Elasticsearch、Logstash、Kibana技術(shù)棧的結(jié)合。
如果收集了日志信息,部署更新有異常出現(xiàn),可以立即在Kibana上看到。
ELK日志展示
當(dāng)然也可以通過(guò)Zabbix過(guò)濾錯(cuò)誤日志來(lái)進(jìn)行告警。
Zabbix日志展示
7、安全監(jiān)控
雖然Linux開(kāi)源的安全產(chǎn)品不少,比如四層iptables,七層WEB防護(hù)Nginx+Lua實(shí)現(xiàn)WAF,最后將相關(guān)的日志都收至ELkstack,通過(guò)圖形化進(jìn)行不同的攻擊類(lèi)型展示。但是始終是一件比較耗費(fèi)時(shí)間,并且個(gè)人效果并不是很好。這個(gè)時(shí)候我們可以選擇接入第三方服務(wù)廠商。
某某三方安全
三方廠商提供全面的漏洞庫(kù),涵蓋服務(wù)、后門(mén)、數(shù)據(jù)庫(kù)、配置檢測(cè)、CGI、SMTP等多種類(lèi)型。
全面檢測(cè)主機(jī)、Web應(yīng)用漏洞自主挖掘和行業(yè)共享相結(jié)合第一時(shí)間更新0-day漏洞,杜絕最新安全隱患。
8、API監(jiān)控
由于API變得越來(lái)越重要,很顯然我們也需要這樣的數(shù)據(jù)來(lái)分辨我們提供的 API是否能夠正常運(yùn)作。
監(jiān)控API接口GET、POST、PUT、DELETE、HEAD、OPTIONS的請(qǐng)求。可用性、正確性、響應(yīng)時(shí)間為三大重性能指標(biāo)。
API監(jiān)控
三方API監(jiān)控
響應(yīng)時(shí)間
9、性能監(jiān)控
全面監(jiān)控網(wǎng)頁(yè)性能,DNS響應(yīng)時(shí)間、HTTP建立連接時(shí)間、頁(yè)面性能指數(shù)、響應(yīng)時(shí)間、可用率、元素大小等。Zabbix提供URL監(jiān)控:Zabbix Web 監(jiān)控。
Zabbix站點(diǎn)監(jiān)控
終端響應(yīng)時(shí)間
第三方監(jiān)控監(jiān)控大盤(pán)。各類(lèi)圖表一目了然,全面體現(xiàn)網(wǎng)頁(yè)性能健康狀況。
10、業(yè)務(wù)監(jiān)控
沒(méi)有業(yè)務(wù)指標(biāo)監(jiān)控的監(jiān)控平臺(tái),不是一個(gè)完善的監(jiān)控平臺(tái),通常在我們的監(jiān)控系統(tǒng)中,必須將我們重要的業(yè)務(wù)指標(biāo)進(jìn)行監(jiān)控,并設(shè)置閾值進(jìn)行告警通知。比如電商行業(yè):
每分鐘產(chǎn)生多少訂單、每分鐘注冊(cè)多少用戶(hù)、每天有多少活躍用戶(hù)、每天有多少推廣活動(dòng)、推廣活動(dòng)引入多少用戶(hù)、推廣活動(dòng)引入多少流量、推廣活動(dòng)引入多少利潤(rùn)等,重要指標(biāo)都可以加入Zabbix上,然后通過(guò)Screen展示。
注:由于業(yè)務(wù)監(jiān)控圖表,涉及到隱私的數(shù)據(jù)太多,就不截圖了。
七、監(jiān)控報(bào)警
故障報(bào)警通知的方式有很多種,當(dāng)然最常用的還是短信和郵件。
短信報(bào)警
郵件報(bào)警
八、報(bào)警處理
一般報(bào)警后故障如何處理,首先我們可以通過(guò)告警升級(jí)機(jī)制先自動(dòng)處理,比如Nginx服務(wù)down了,可以設(shè)置告警升級(jí)自動(dòng)啟動(dòng)Nginx。
但是如果一般業(yè)務(wù)出現(xiàn)了嚴(yán)重故障,我們通常根據(jù)故障的級(jí)別、業(yè)務(wù),來(lái)指派不同的運(yùn)維人員進(jìn)行處理。
當(dāng)然不同業(yè)務(wù)形態(tài)、不同架構(gòu)、不同服務(wù)可能采用的方式都不同,這個(gè)沒(méi)有一個(gè)固定的模式套用。
九、面試監(jiān)控
在運(yùn)維面試中,常常會(huì)被問(wèn)題監(jiān)控相關(guān)的問(wèn)題,這個(gè)問(wèn)題到底該如何來(lái)回答,我針對(duì)本文給大家提供了一個(gè)簡(jiǎn)單的回答思路
1、硬件監(jiān)控
通過(guò)SNMP來(lái)進(jìn)行路由器交換機(jī)的監(jiān)控(這些可以跟一些廠商溝通來(lái)了解如何做)、服務(wù)器的溫度以及其它,可以通過(guò)IPMI來(lái)實(shí)現(xiàn)。當(dāng)然如果沒(méi)有硬件全都是云,直接跳過(guò)這一步驟。
2、系統(tǒng)監(jiān)控
如CPU的負(fù)載,上下文切換、內(nèi)存使用率、磁盤(pán)讀寫(xiě)、磁盤(pán)使用率、磁盤(pán)inode使用率。當(dāng)然這些都是需要配置觸發(fā)器,因?yàn)槟J(rèn)太低會(huì)頻繁報(bào)警。
3、服務(wù)監(jiān)控
比如公司用的LNMP架構(gòu),Nginx自帶Status模塊、PHP也有相關(guān)的Status、MySQL的話(huà)可以通過(guò)Percona官方工具來(lái)進(jìn)行監(jiān)控。Redis這些通過(guò)自身的info獲取信息進(jìn)行過(guò)濾等。方法都類(lèi)似。要么服務(wù)自帶。要么通過(guò)腳本來(lái)實(shí)現(xiàn)想監(jiān)控的內(nèi)容,以及報(bào)警和圖形功能。
4、網(wǎng)絡(luò)監(jiān)控
如果是云主機(jī)又不是跨機(jī)房,那么可以選擇不監(jiān)控網(wǎng)絡(luò)。當(dāng)然你說(shuō)我們是跨機(jī)房以及如何如何,推薦使用smokeping來(lái)做網(wǎng)絡(luò)相關(guān)的監(jiān)控,或者直接交給你們的網(wǎng)絡(luò)工程師來(lái)做,因?yàn)樾g(shù)業(yè)有專(zhuān)攻。
5、安全監(jiān)控
如果是云主機(jī)可以考慮使用自帶的安全防護(hù)。當(dāng)然也可以使用iptables。如果是硬件,那么推薦使用硬件防火墻。使用云可以購(gòu)買(mǎi)防DDOS,避免出現(xiàn)故障導(dǎo)致down機(jī)一天。如果是系統(tǒng),那么權(quán)限、密碼、備份、恢復(fù)等基礎(chǔ)方案要做好。Web同時(shí)也可以使用Nginx+Lua來(lái)實(shí)現(xiàn)一個(gè)Web層面的防火墻。當(dāng)然也可以使用集成好的OpenResty。
6、Web監(jiān)控
Web監(jiān)控的話(huà)題其實(shí)還是很多。比如可以使用自帶的Web監(jiān)控來(lái)監(jiān)控頁(yè)面相關(guān)的延遲、js響應(yīng)時(shí)間、下載時(shí)間、等等。這里我推薦使用專(zhuān)業(yè)的商業(yè)軟件監(jiān)控寶或聽(tīng)云來(lái)實(shí)現(xiàn)。畢竟人家全國(guó)各地都有機(jī)房(如果本身是多機(jī)房那就另說(shuō)了)。
7、日志監(jiān)控
如果是Web的話(huà)可以使用監(jiān)控Nginx的50x、40x的錯(cuò)誤日志,PHP的ERROR日志。其實(shí)這些需求無(wú)非是,收集、存儲(chǔ)、查詢(xún)、展示,我們其實(shí)可以使用開(kāi)源的ELKStack來(lái)實(shí)現(xiàn)。Logstash(收集)、Elasticsearch(存儲(chǔ)+搜索)、Kibana(展示)。
8、業(yè)務(wù)監(jiān)控
上面做了那么多,其實(shí)最終還是保證業(yè)務(wù)的運(yùn)行。這樣我們做的監(jiān)控才有意義。所以業(yè)務(wù)層面這塊的監(jiān)控需要和開(kāi)發(fā)以及總監(jiān)開(kāi)會(huì)討論,監(jiān)控比較重要的業(yè)務(wù)指標(biāo),(需要開(kāi)會(huì)確認(rèn))然后通過(guò)簡(jiǎn)單的腳本就可以實(shí)現(xiàn),最后設(shè)置觸發(fā)器即可 。
9、流量分析
平時(shí)我們分析日志都是拿awk sed xxx一堆工具來(lái)實(shí)現(xiàn)。這樣對(duì)我們統(tǒng)計(jì)IP、PV、UV不是很方便。那么可以使用百度統(tǒng)計(jì)、Google統(tǒng)計(jì)、商業(yè),讓開(kāi)發(fā)嵌入代碼即可。為了避免隱私也可以使用Piwik來(lái)做相關(guān)的流量分析。
10、可視化
通過(guò)Screen以及引入一些第三方的庫(kù)來(lái)美化界面,同時(shí)我們也需要知道,訂單量突然增加、突然減少。或者說(shuō)突然來(lái)了一大波流量,這流量從哪兒來(lái),是不是推廣了,還是被攻擊了。可以結(jié)合監(jiān)控平來(lái)梳理各個(gè)系統(tǒng)之間的業(yè)務(wù)關(guān)系。
11、自動(dòng)化監(jiān)控
如上我們做了那么多的工作,當(dāng)然不能是一臺(tái)一臺(tái)的來(lái)加key實(shí)現(xiàn)。可以通過(guò)Zabbix的主動(dòng)模式以及被動(dòng)模式來(lái)實(shí)現(xiàn)。當(dāng)然最好還是通過(guò)API來(lái)實(shí)現(xiàn)。
總結(jié)
真正想做到更完整的監(jiān)控體系,目前的開(kāi)源軟件確實(shí)無(wú)法很好地滿(mǎn)足,有條件的公司都開(kāi)始自己開(kāi)發(fā)自己的監(jiān)控系統(tǒng),比如小米開(kāi)源的Open-Falcon。
也有比較好的開(kāi)源的監(jiān)控框架如Sensu等,再加上InfluxDB、Grafana可以用來(lái)定制符合自己企業(yè)的監(jiān)控平臺(tái)。
當(dāng)然我說(shuō)的還是很簡(jiǎn)單,經(jīng)驗(yàn)有限、思路也僅能提供這么多。希望能對(duì)你有所幫助。
好啦!今天的分享到這里就結(jié)束了,希望大家持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量?jī)?yōu)質(zhì)內(nèi)容與大家分享歐!聲明:文章源自于網(wǎng)絡(luò),如有侵權(quán),版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)及時(shí)聯(lián)系刪除!