《一篇文章全面了解監(jiān)控知識體系》要點:
本文介紹了一篇文章全面了解監(jiān)控知識體系,希望對您有用。如果有疑問,可以聯(lián)系我們。
作者簡介
徐亮偉 ? 江湖人稱標(biāo)桿徐,曾負(fù)責(zé)大規(guī)模集群架構(gòu)自動化運維工作.擅長自動化運維,并且在分布式、Python自動化、云計算虛擬化等領(lǐng)域有較深入研究.個人博客:徐亮偉架構(gòu)師之路;
前言
監(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)控整個體系有比較深刻的認(rèn)識.
我們先來了解什么是監(jiān)控、監(jiān)控的重要性以及監(jiān)控的目標(biāo),當(dāng)然每個人所在的行業(yè)不同、公司不同、業(yè)務(wù)不同、崗位不同,對監(jiān)控的理解也不同,但是我們需要注意,監(jiān)控是需要站在公司的業(yè)務(wù)角度去考慮,而不是針對某個監(jiān)控技術(shù)的使用.
既然我們了解到了監(jiān)控的重要性、以及監(jiān)控的目的,那么下面我們需要了解下監(jiān)控有哪些方法.
我們了解了監(jiān)控的方法、監(jiān)控對象、性能指標(biāo)、報警閾值定義、以及故障處理流程幾步驟,當(dāng)然我們更需要知道監(jiān)控的核心是什么?
下面我們需要選擇一款合適公司業(yè)務(wù)的監(jiān)控工具進(jìn)行監(jiān)控,這里我對監(jiān)控工具進(jìn)行了簡單的分類
老牌監(jiān)控工具:
王牌監(jiān)控工具:
三方監(jiān)控工具:
現(xiàn)在市場上有很多不錯的第三方監(jiān)控,比如:監(jiān)控寶、監(jiān)控易、聽云、還有很多云廠商自帶監(jiān)控,但是在這里我們不打算著重介紹,如果想了解三方監(jiān)控可自行上官網(wǎng)咨詢.(避免說廣告植入)
上面介紹了這么多,那么到底選擇什么監(jiān)控工具最合適呢,我這里推薦幾款開源監(jiān)控工具:Zabbix、Open-Falcon、LEPUS 天兔(專用于監(jiān)控數(shù)據(jù)庫).
但是本文還是基于 Zabbix 來構(gòu)建整個監(jiān)控體系生態(tài)圈.
那么下面我們就來聊聊,Zabbix 的整個流程:
我們上面了解了監(jiān)控方法、目標(biāo)、流程、也了解了監(jiān)控有哪些工具,可能有人會疑惑,我們具體要監(jiān)控些什么東西?那么我在這里進(jìn)行了分類整理:
早期我們通過機(jī)房巡檢的方式,查看硬件設(shè)備燈光閃爍情況判斷是否故障,這樣非常浪費人力,并且是重復(fù)性無技術(shù)含量的工作,大家懂得.
當(dāng)然我們現(xiàn)在可以通過IPMI對硬件詳細(xì)情況進(jìn)行監(jiān)控,并對 CPU、內(nèi)存、磁盤、溫度、風(fēng)扇、電壓等設(shè)置報警閾值(自行對監(jiān)控報警內(nèi)容編寫合理的報警范圍)
IPMI監(jiān)控硬件服務(wù)參考資料
IPMI
中小型企業(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
CPU整體狀態(tài)
上下文切換
負(fù)載狀態(tài)
內(nèi)存:通常我們需要監(jiān)控內(nèi)存的使用率、SWAP 使用率、同時可以通過 zabbix 描繪內(nèi)存使用率的曲線圖形發(fā)現(xiàn)某服務(wù)內(nèi)存溢出等.
針對內(nèi)存常用的工具有: free、top、vmstat、glances
內(nèi)存使用率
IO 分為磁盤 IO 和網(wǎng)絡(luò) IO.除了在做性能調(diào)優(yōu)我們要監(jiān)控更詳細(xì)的數(shù)據(jù)外,那么日常監(jiān)控,只關(guān)注磁盤使用率、磁盤吞吐量、磁盤寫入繁忙程度,網(wǎng)絡(luò)也是監(jiān)控網(wǎng)卡流量即可.
常用工具有:iostat、iotop、df、iftop、sar、glances
磁盤使用率
磁盤讀/寫吞吐
網(wǎng)卡進(jìn)出口流量
TCP11種狀態(tài)信息
其它的系統(tǒng)監(jiān)控還有運行的進(jìn)程端口、進(jìn)程數(shù)、登陸用戶、Open File 等(詳細(xì)查看 zabbix 自帶 OS Linux 模板)
其他相關(guān)監(jiān)控
把硬件監(jiān)控和系統(tǒng)監(jiān)控研究明白后,我們進(jì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)控起來
nginx_status
PHP-FPM_status
Redis_status
JVM 監(jiān)控
筆者之前寫過服務(wù)監(jiān)控詳細(xì)的操作過程,這里就不一一展示了.
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
作為一個針對全國用戶的電商網(wǎng)站,時刻掌握各地到機(jī)房的網(wǎng)絡(luò)狀態(tài)也是必須的.
網(wǎng)絡(luò)監(jiān)控是我們構(gòu)建監(jiān)控平臺時必須要考慮的,尤其是針對有多個機(jī)房的場景,各個機(jī)房之間的網(wǎng)絡(luò)狀態(tài),機(jī)房和全國各地的網(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 進(jìn)行數(shù)據(jù)的匯總.
同時,由于自己監(jiān)控點比較少,還可以借助很多商業(yè)的監(jiān)控工具,比如監(jiān)控寶、聽云、基調(diào)、博瑞等.同時這些服務(wù)提供商還可以幫助你監(jiān)控 CDN 的狀態(tài).
smokeping
監(jiān)控寶
網(wǎng)站流量分析對于運維人員來說,更是一門必須掌握的知識了.比如對于一家電商公司來說:
通過對訂單來源的統(tǒng)計和分析,可以了解我們在某個網(wǎng)站上的廣告投入有沒有收到預(yù)期的效果.
可以區(qū)分不同地區(qū)的訪問人數(shù)、甚至商品交易額等.
百度統(tǒng)計、google 分析、站長工具等等,只需要在頁面嵌入一個js即可.
但是,數(shù)據(jù)始終是在對方手中,個性化定制不方便,于是 google 出一個叫 piwik 的開源分析工具
piwik
百度統(tǒng)計
通常情況下,隨著系統(tǒng)的運行,操作系統(tǒng)會產(chǎn)生系統(tǒng)日志,應(yīng)用程序會產(chǎn)生應(yīng)用程序的訪問日志、錯誤日志、運行日志、網(wǎng)絡(luò)日志,我們可以使用 ELK 來進(jìn)行日志監(jiān)控.
對于日志監(jiān)控來說,最見的需求就是收集、存儲、查詢、展示.
開源社區(qū)正好有相對應(yīng)的開源項目:?logstash(收集) + elasticsearch(存儲+搜索) + kibana(展示)
我們將這三個組合起來的技術(shù)稱之為 ELK Stack,所以說 ELK Stack 指的是 Elasticsearch、Logstash、Kibana 技術(shù)棧的結(jié)合.
如果收集了日志信息,那么如果部署更新有異常出現(xiàn),可以立即在 kibana 上看到.
Elk 日志展示
當(dāng)然也可以通過Zabbix過濾錯誤日志來進(jìn)行告警.
zabbix 日志展示
雖然Linux開源的安全產(chǎn)品不少,比如四層 iptables,七層WEB防護(hù) Nginx+lua 實現(xiàn) WAF,最后將相關(guān)的日志都收至 ELK Stack,通過圖形化進(jìn)行不同的攻擊類型展示.但是始終是一件比較耗費時間的事情,并且個人認(rèn)為效果并不是很好.這個時候我們可以選擇接入第三方服務(wù)廠商.
某某三方安全
三方廠商提供全面的漏洞庫,涵蓋服務(wù)、后門、數(shù)據(jù)庫、配置檢測、CGI、SMTP 等多種類型
全面檢測主機(jī)、Web 應(yīng)用漏洞自主挖掘和行業(yè)共享相結(jié)合第一時間更新 0day 漏洞,杜絕最新安全隱患
由于 API 變得越來越重要,很顯然我們也需要這樣的數(shù)據(jù)來分辨我們提供的 ?API 是否能夠正常運作.
監(jiān)控 API 接口 GET、POST、PUT、DELETE、HEAD、OPTIONS 的請求,?可用性、正確性、響應(yīng)時間為三大重性能指標(biāo)
API監(jiān)控
三方API監(jiān)控
響應(yīng)時間
全面監(jiān)控網(wǎng)頁性能,DNS 響應(yīng)時間、HTTP 建立連接時間、頁面性能指數(shù)、響應(yīng)時間、可用率、元素大小等
Zabbix 提供 URL監(jiān)控:Zabbix Web 監(jiān)控
Zabbix 站點監(jiān)控
終端響應(yīng)時間
第三方監(jiān)控的監(jiān)控大盤.各類圖表一目了然,全面體現(xiàn)網(wǎng)頁性能健康狀況.
沒有業(yè)務(wù)指標(biāo)監(jiān)控的監(jiān)控平臺,不是一個完善的監(jiān)控平臺,通常在我們的監(jiān)控系統(tǒng)中,必須將我們重要的業(yè)務(wù)指標(biāo)進(jìn)行監(jiān)控,并設(shè)置閾值進(jìn)行告警通知.
例如電商行業(yè):
每分鐘產(chǎn)生多少訂單;
每分鐘注冊多少用戶;
每天有多少活躍用戶;
每天有多少推廣活動;
推廣活動引入多少用戶;
推廣活動引入多少流量;
推廣活動引入多少利潤;
等等 重要指標(biāo)都可以加到 Zabbix 上,然后通過 screen 展示.
注:由于業(yè)務(wù)監(jiān)控圖表,涉及到隱私的數(shù)據(jù)太多,就不截圖.
故障報警通知的方式有很多種,當(dāng)然我們最常用的還是短信,郵件
短信報警
郵件報警
一般報警后我們故障如何處理,首先,我們可以通過告警升級機(jī)制先自動處理,比如Nginx服務(wù)down了,可以設(shè)置告警升級自動啟動Nginx. 但是如果一般業(yè)務(wù)出現(xiàn)了嚴(yán)重故障,我們通常根據(jù)故障的級別,故障的業(yè)務(wù),來指派不同的運維人員進(jìn)行處理. 當(dāng)然不同業(yè)務(wù)形態(tài)、不同架構(gòu)、不同服務(wù)可能采用的方式都不同,這個沒有一個固定的模式套用.
在運維面試中,常常會被問到監(jiān)控相關(guān)的問題,那么這個問題到底該如何來回答,我針對本文給大家提供了一個簡單的回答思路.
真正想做到更完整的監(jiān)控體系,目前的開源軟件,確實無法很好的滿足,有條件的公司都開始自己開發(fā)自己的監(jiān)控系統(tǒng),比如小米開源的Open-Falcon.也有比較好的開源的監(jiān)控框架如Sensu等,再加上influxdb、grafana可以用來定制符合自己企業(yè)的監(jiān)控平臺.
當(dāng)然我說的還是很簡單,經(jīng)驗有限、思路也僅能提供這么多. 以上就是我分享對監(jiān)控的一些方法和心得.(老鳥勿噴)
文章來自微信公眾號:高效運維
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4266.html