
前言介紹
監(jiān)控是整個運維乃至整個產(chǎn)品生命周期中最重要的一環(huán),事前及時預(yù)警發(fā)現(xiàn)故障,事后提供詳實的數(shù)據(jù)用于追查定位問題。
目前業(yè)界有很多不錯的開源產(chǎn)品可供選擇。選擇一款開源的監(jiān)控系統(tǒng),是一個省時省力,效率最高的方案。當(dāng)然對監(jiān)控不是很明白的朋友們,看了以下文章可能會對監(jiān)控整個體系有比較深刻的認識。
ps:本文內(nèi)容較多,文章篇幅很長,可以先收藏,后續(xù)慢慢閱讀。
作者介紹
徐亮偉,江湖人稱標(biāo)桿徐,曾負責(zé)大規(guī)模集群架構(gòu)自動化運維工作。擅長自動化運維,并且在分布式、Python自動化、云計算虛擬化等領(lǐng)域有較深入研究。個人博客:徐亮偉架構(gòu)師之路
筆者Q:552408925、572891887 ? 架構(gòu)師群:471443208
0 監(jiān)控目標(biāo)
我們先來了解什么是監(jiān)控,監(jiān)控的重要性以及監(jiān)控的目標(biāo),當(dāng)然每個人所在的行業(yè)不同、公司不同、業(yè)務(wù)不同、崗位不同、對監(jiān)控的理解也不同,但是我們需要注意,監(jiān)控是需要站在公司的業(yè)務(wù)角度去考慮,而不是針對某個監(jiān)控技術(shù)的使用。

1.對系統(tǒng)不間斷實時監(jiān)控:實際上是對系統(tǒng)不間斷的實時監(jiān)控(這就是監(jiān)控)
2.實時反饋系統(tǒng)當(dāng)前狀態(tài):我們監(jiān)控某個硬件、或者某個系統(tǒng),都是需要能實時看到當(dāng)前系統(tǒng)的狀態(tài),是正常、異常、或者故障
3.保證服務(wù)可靠性安全性:我們監(jiān)控的目的就是要保證系統(tǒng)、服務(wù)、業(yè)務(wù)正常運行
4.保證業(yè)務(wù)持續(xù)穩(wěn)定運行:如果我們的監(jiān)控做得很完善,即使出現(xiàn)故障,能第一時間接收到故障報警,在第一時間處理解決,從而保證業(yè)務(wù)持續(xù)性的穩(wěn)定運行。
1 監(jiān)控方法
既然我們了解到了監(jiān)控的重要性、以及監(jiān)控的目的,那么下面我們需要了解下監(jiān)控有哪些方法。

1.了解監(jiān)控對象:我們要監(jiān)控的對象你是否了解呢?比如CPU到底是如何工作的?
2.性能基準(zhǔn)指標(biāo):我們要監(jiān)控這個東西的什么屬性?比如CPU的使用率、負載、用戶態(tài)、內(nèi)核態(tài)、上下文切換。
3.報警閾值定義:怎么樣才算是故障,要報警呢?比如CPU的負載到底多少算高,用戶態(tài)、內(nèi)核態(tài)分別跑多少算高?
4.故障處理流程:收到了故障報警,那么我們怎么處理呢?有什么更高效的處理流程嗎?
2 監(jiān)控核心
我們了解了監(jiān)控的方法、監(jiān)控對象、性能指標(biāo)、報警閾值定義、以及故障處理流程幾步驟,當(dāng)然我們更需要知道監(jiān)控的核心是什么?

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

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

1.數(shù)據(jù)采集:Zabbix通過SNMP、Agent、ICMP、SSH、IPMI等對系統(tǒng)進行數(shù)據(jù)采集
2.數(shù)據(jù)存儲:Zabbix存儲在MySQL上,也可以存儲在其他數(shù)據(jù)庫服務(wù)
3.數(shù)據(jù)分析:當(dāng)我們事后需要復(fù)盤分析故障時,zabbix能給我們提供圖形以及時間等相關(guān)信息,方面我們確定故障所在。
4.數(shù)據(jù)展示:web界面展示、(移動APP、java_php開發(fā)一個web界面也可以)
5.監(jiān)控報警:電話報警、郵件報警、微信報警、短信報警、報警升級機制等(無論什么報警都可以)
6.報警處理:當(dāng)接收到報警,我們需要根據(jù)故障的級別進行處理,比如:重要緊急、重要不緊急,等。根據(jù)故障的級別,配合相關(guān)的人員進行快速處理。
5 監(jiān)控指標(biāo)
我們上面了解了監(jiān)控方法、目標(biāo)、流程、也了解了監(jiān)控有哪些工具,可能有人會疑惑,我們具體要監(jiān)控寫什么東西,那么我在這里進行了分類整理:
硬件監(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)控
5.1 硬件監(jiān)控
早期我們通過機房巡檢的方式,查看硬件設(shè)備燈光閃爍情況判斷是否故障,這樣非常浪費人力,并且是重復(fù)性無技術(shù)含量的工作,大家懂得。

當(dāng)然我們現(xiàn)在可以通過IPMI對硬件詳細情況進行監(jiān)控,并對CPU、內(nèi)存、磁盤、溫度、風(fēng)扇、電壓等設(shè)置報警設(shè)置報警閾值(自行對監(jiān)控報警內(nèi)容編寫合理的報警范圍)

IPMI工具無法獲取到硬件的狀態(tài),可以借助MegaCli工具探測Raid磁盤隊列狀態(tài)
zabbix提供IPMI監(jiān)控模板:Zabbix IPMI Interface
系統(tǒng)自帶的IPMI模板只能監(jiān)控,風(fēng)扇,電源,和部分溫度
5.2 系統(tǒng)監(jiān)控
中小型企業(yè)基本全是Linux服務(wù)器,那么我們肯定是要監(jiān)控起系統(tǒng)資源的使用情況,系統(tǒng)監(jiān)控是監(jiān)控體系的基礎(chǔ)。
監(jiān)控主要對象:

CPU有幾個重要的概念:上下文切換、運行隊列和使用率。
這也是我們CPU監(jiān)控的幾個重點指標(biāo)。
通常情況,每個處理器的運行隊列不要高于3,CPU 利用率中用“戶態(tài)/內(nèi)核態(tài)”比例維持在70/30,空閑狀態(tài)維持在50%,上下文切換要根據(jù)系統(tǒng)繁忙程度來綜合考量。
針對CPU常用的工具有:htop、top、vmstat、mpstat、dstat、glances
zabbix提供系統(tǒng)監(jiān)控模板:Zabbix Agent Interface



內(nèi)存:通常我們需要監(jiān)控內(nèi)存的使用率、SWAP使用率、同時可以通過zabbix描繪內(nèi)存使用率的曲線圖形發(fā)現(xiàn)某服務(wù)內(nèi)存溢出等。
針對內(nèi)存常用的工具有: free、top、vmstat、glances

IO分為磁盤IO和網(wǎng)絡(luò)IO。除了在做性能調(diào)優(yōu)我們要監(jiān)控更詳細的數(shù)據(jù)外,那么日常監(jiān)控,只關(guān)注磁盤使用率、磁盤吞吐量、磁盤寫入繁忙程度,網(wǎng)絡(luò)也是監(jiān)控網(wǎng)卡流量即可。
常用工具有:iostat、iotop、df、iftop、sar、glances





其它的系統(tǒng)監(jiān)控還有運行的進程端口、進程數(shù)、登陸用戶、Open File等(詳細查看zabbix自帶OS Linux模板)

5.3 應(yīng)用監(jiān)控
把硬件監(jiān)控和系統(tǒng)監(jiān)控研究明白后,我們進一步操作是需要登陸到服務(wù)器上查看服務(wù)器運行了哪些服務(wù),都需要監(jiān)控起來。
應(yīng)用服務(wù)監(jiān)控也是監(jiān)控體系中比較重要的內(nèi)容,例如:
LVS、Haproxy、Docker、Nginx、PHP、Memcached、Redis、MySQL、Rabbitmq等等,相關(guān)的服務(wù)都需要使用zabbix監(jiān)控起來。




筆者之前寫過服務(wù)監(jiā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ù)庫監(jiān)控:percona-monitoring-plulgins
5.4 網(wǎng)絡(luò)監(jiān)控
作為一個針對全國用戶的電商網(wǎng)站,時刻掌握各地到機房的網(wǎng)絡(luò)狀態(tài)也是必須的。
網(wǎng)絡(luò)監(jiān)控是我們構(gòu)建監(jiān)控平臺是必須要考慮的,尤其是針對有多個機房的場景,各個機房之間的網(wǎng)絡(luò)狀態(tài),機房和全國各地的網(wǎng)絡(luò)狀態(tài)都是我們需要重點關(guān)注的對象,那么如何掌握這些狀態(tài)信息呢?我們需要借助于網(wǎng)絡(luò)監(jiān)控工具Smokeping。
Smokeping 是rrdtool的作者Tobi Oetiker的作品,是用Perl寫的,主要是監(jiān)視網(wǎng)絡(luò)性能,www 服務(wù)器性能,dns查詢性能等,使用rrdtool繪圖,而且支持分布式,直接從多個agent進行數(shù)據(jù)的匯總。
同時,由于自己監(jiān)控點比較少,還可以借助很多商業(yè)的監(jiān)控工具,比如監(jiān)控寶、聽云、基調(diào)、博瑞等。同時這些服務(wù)提供商還可以幫助你監(jiān)控CDN的狀態(tài)。



5.5 流量分析
網(wǎng)站流量分析對于運維人員來說,更是一門必須掌握的知識了。比如對于一家電商公司來說:
通過對訂單來源的統(tǒng)計和分析,可以了解我們在某個網(wǎng)站上的廣告投入有沒有收到預(yù)期的效果。
可以區(qū)分不同地區(qū)的訪問人數(shù)、甚至商品交易額等。
百度統(tǒng)計、google分析、站長工具等等,只需要在頁面嵌入一個js即可。
但是,數(shù)據(jù)始終是在對方手中,個性化定制不方便,于是google出一個叫piwik的開源分析工具


5.6 日志監(jiān)控
通常情況下,隨著系統(tǒng)的運行,操作系統(tǒng)會產(chǎn)生系統(tǒng)日志,應(yīng)用程序會產(chǎn)生應(yīng)用程序的訪問日志、錯誤日志,運行日志,網(wǎng)絡(luò)日志,我們可以使用ELK來進行日志監(jiān)控。
對于日志監(jiān)控來說,最見的需求就是收集、存儲、查詢、展示,開源社區(qū)正好有相對應(yīng)的開源項目:
logstash(收集) + elasticsearch(存儲+搜索) + kibana(展示)
我們將這三個組合起來的技術(shù)稱之為ELK Stack,所以說ELK Stack指的是Elasticsearch、Logstash、Kibana技術(shù)棧的結(jié)合。
如果收集了日志信息,那么如果部署更新有異常出現(xiàn),可以立即在kibana上看到。

當(dāng)然也可以通過Zabbix過濾錯誤日志來進行告警。

5.7 安全監(jiān)控
雖然Linux開源的安全產(chǎn)品不少,比如四層iptables,七層WEB防護nginx+lua實現(xiàn)WAF,最后將相關(guān)的日志都收至Elkstack,通過圖形化進行不同的攻擊類型展示。但是始終是一件比較耗費時間,并且個人效果并不是很好。這個時候我們可以選擇接入第三方服務(wù)廠商。



三方廠商提供全面的漏洞庫,涵蓋服務(wù)、后門、數(shù)據(jù)庫、配置檢測、CGI、SMTP等多種類型
全面檢測主機、Web應(yīng)用漏洞自主挖掘和行業(yè)共享相結(jié)合第一時間更新0day漏洞,杜絕最新安全隱患
5.8 API監(jiān)控
由于API變得越來越重要,很顯然我們也需要這樣的數(shù)據(jù)來分辨我們提供的 API是否能夠正常運作。
監(jiān)控API接口GET、POST、PUT、DELETE、HEAD、OPTIONS的請求
可用性、正確性、響應(yīng)時間為三大重性能指標(biāo)

API監(jiān)控



5.9 性能監(jiān)控
全面監(jiān)控網(wǎng)頁性能,DNS響應(yīng)時間、HTTP建立連接時間、頁面性能指數(shù)、響應(yīng)時間、可用率、元素大小等
zabbix提供URL監(jiān)控:Zabbix Web 監(jiān)控





第三方監(jiān)控監(jiān)控大盤。各類圖表一目了然,全面體現(xiàn)網(wǎng)頁性能健康狀況。
5.10 業(yè)務(wù)監(jiān)控
沒有業(yè)務(wù)指標(biāo)監(jiān)控的監(jiān)控平臺,不是一個完善的監(jiān)控平臺,通常在我們的監(jiān)控系統(tǒng)中,必須將我們重要的業(yè)務(wù)指標(biāo)進行監(jiān)控,并設(shè)置閾值進行告警通知。比如電商行業(yè):
每分鐘產(chǎn)生多少訂單,
每分鐘注冊多少用戶,
每天有多少活躍用戶,
每天有多少推廣活動,
推廣活動引入多少用戶,
推廣活動引入多少流量,
推廣活動引入多少利潤,
今天商品打包出庫多少,
今天退貨商品有多少,
等等? 重要指標(biāo)都可以加入zabbix上,然后通過screen展示。
注:由于業(yè)務(wù)監(jiān)控圖表,涉及到隱私的數(shù)據(jù)太多,就不截圖。
6 監(jiān)控報警
故障報警通知的方式有很多種,當(dāng)然我們最常用的還是短信,郵件



7 報警處理
一般報警后我們故障如何處理,首先,我們可以通過告警升級機制先自動處理,比如nginx服務(wù)down了,可以設(shè)置告警升級自動啟動nginx。
但是如果一般業(yè)務(wù)出現(xiàn)了嚴重故障,我們通常根據(jù)故障的級別,故障的業(yè)務(wù),來指派不同的運維人員進行處理。
當(dāng)然不同業(yè)務(wù)形態(tài)、不同架構(gòu)、不同服務(wù)可能采用的方式都不同,這個沒有一個固定的模式套用。

8 面試監(jiān)控
在運維面試中,常常會被問題監(jiān)控相關(guān)的問題,那么這個問題到底該如何來回答,我針對本文給大家提供了一個簡單的回答思路。
1.硬件監(jiān)控。
通過SNMP來進行路由器交換機的監(jiān)控(這些可以跟一些廠商溝通來了解如何做)、服務(wù)器的溫度以及其他,可以通過IPMI來實現(xiàn)。當(dāng)然如果沒有硬件全都是云,直接跳過這一步驟。
2.系統(tǒng)監(jiān)控。
如CPU的負載,上下文切換、內(nèi)存使用率、磁盤讀寫、磁盤使用率、磁盤inode使用率。當(dāng)然這些都是需要配置觸發(fā)器,因為默認太低會頻繁報警。
3.服務(wù)監(jiān)控。
比如公司用的LNMP架構(gòu),nginx自帶Status模塊、PHP也有相關(guān)的Status、MySQL的話可以通過percona官方工具來進行監(jiān)控。Redis這些通過自身的info獲取信息進行過濾等。方法都類似。要么服務(wù)自帶。要么通過腳本來實現(xiàn)想監(jiān)控的內(nèi)容,以及報警和圖形功能。
4.網(wǎng)絡(luò)監(jiān)控。
如果是云主機又不是跨機房,那么可以選擇不監(jiān)控網(wǎng)絡(luò)。當(dāng)然你說我們是跨機房以及如何如何。推薦使用smokeping來做網(wǎng)絡(luò)相關(guān)的監(jiān)控?;蛘咧苯咏唤o你們的網(wǎng)絡(luò)工程師來做,因為術(shù)業(yè)有專攻。
5.安全監(jiān)控。
如果是云主機可以考慮使用自帶的安全防護。當(dāng)然也可以使用iptables。如果是硬件,那么推薦使用硬件防火墻。使用云可以購買防DDOS,避免出現(xiàn)故障導(dǎo)致down機一天。如果是系統(tǒng),那么權(quán)限、密碼、備份、恢復(fù)等基礎(chǔ)方案要做好。web同時也可以使用Nginx+Lua來實現(xiàn)一個web層面的防火墻。當(dāng)然也可以使用集成好的openresty。
6.Web監(jiān)控。
web監(jiān)控的話題其實還是很多。比如可以使用自帶的web監(jiān)控來監(jiān)控頁面相關(guān)的延遲、js響應(yīng)時間、下載時間、等等。這里我推薦使用專業(yè)的商業(yè)軟件,監(jiān)控寶或聽云來實現(xiàn)。畢竟人家全國各地都有機房。(如果本身是多機房那就另說了)
7.日志監(jiān)控。
如果是web的話可以使用監(jiān)控Nginx的50x、40x的錯誤日志,PHP的ERROR日志。其實這些需求無非是,收集、存儲、查詢、展示,我們其實可以使用開源的ELKstack來實現(xiàn)。Logstash(收集)、elasticsearch(存儲+搜索)、kibana(展示)
8.業(yè)務(wù)監(jiān)控。
我們上面做了那么多,其實最終還是保證業(yè)務(wù)的運行。這樣我們做的監(jiān)控才有意義。所以業(yè)務(wù)層面這塊的監(jiān)控需要和開發(fā)以及總監(jiān)開會討論,監(jiān)控比較重要的業(yè)務(wù)指標(biāo),(需要開會確認)然后通過簡單的腳本就可以實現(xiàn),最后設(shè)置觸發(fā)器即可
9.流量分析。
平時我們分析日志都是拿awk sed? xxx一堆工具來實現(xiàn)。這樣對我們統(tǒng)計ip、pv、uv不是很方便。那么可以使用百度統(tǒng)計、google統(tǒng)計、商業(yè),讓開發(fā)嵌入代碼即可。為了避免隱私也可以使用piwik來做相關(guān)的流量分析。
10.可視化。
通過screen以及引入一些第三方的庫來美化界面,同時我們也需要知道,訂單量突然增加、突然減少?;蛘哒f突然來了一大波流量,這流量從哪兒來,是不是推廣了,還是被攻擊了??梢越Y(jié)合監(jiān)控平來梳理各個系統(tǒng)之間的業(yè)務(wù)關(guān)系。
11.自動化監(jiān)控。
如上我們做了那么多的工作,當(dāng)然不能是一臺一臺的來加key實現(xiàn)。可以通過Zabbix的主動模式以及被動模式來實現(xiàn)。當(dāng)然最好還是通過API來實現(xiàn)。
12.分布式監(jiān)控
9 監(jiān)控總結(jié)
真正想做到更完整的監(jiān)控體系,目前的開源軟件,確實無法很好的滿足,有條件的公司都開始自己開發(fā)自己的監(jiān)控系統(tǒng),比如小米開源的Open-Falcon。
也有比較好的開源的監(jiān)控框架如Sensu等,再加上influxdb、grafana可以用來定制符合自己企業(yè)的監(jiān)控平臺。
當(dāng)然我說的還是很簡單,經(jīng)驗有限、思路也僅能提供這么多。
以上就是我分享對監(jiān)控的一些方法和心得。(老鳥勿噴)
如果覺得本文不錯,可以對筆者進行贊賞。(你的贊賞就是我的動力)
致謝
感謝我的老師趙班長的中小企業(yè)監(jiān)控體系構(gòu)建實戰(zhàn)才有了此篇文章的誕生。
感謝為本供圖小伙伴:周玉強、顧云、陳榮華。
感謝為本文校對指正的小伙伴:萬永振、周玉強、陳榮華。