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