企業級監控告警產品專題(2):IaaS層監控設計概述
本文作為監控告警產品的專題系列的第二篇文章,主要討論的是IAAS層的監控(服務器狀態與性能、網絡設備狀態與性能、網絡流量分析等等),從前文所述的監控類型來說,IAAS層一般來說屬于基礎監控層面
庖丁解牛
IaaS
IaaS、PaaS、SaaS這三個概念想必大家是耳熟能詳了,其實就是云計算的三個分層,Infrastructure-as-a-Service(IaaS)基礎設施即服務,Platform-as-a- Service(PaaS)平臺即服務,Software-as-a-Service(SaaS)軟件即服務。
IaaS層其實就是一些顯性可見的資源對象,如運維小伙伴經常接觸的服務器、網絡設備與存儲設備等等。用一座大廈類比的話IAAS層就好比是負責了最基礎的水電通信等能力。上層的服務都是依賴于IaaS層,假定IaaS層管理不好,那么PaaS與SaaS的高效與可控管理其實也是非常難了,甚至可以說空談了。IaaSI層的不穩定會直接導致企業對外的服務質量大打折扣。筆者以前在負責手機QQ業務運維的時候,名下有4k多的機器,如果沒有一套高效與可度量的管理平臺,光憑人肉去管理4K多的機器,那基本和噩夢差不多了。
IaaS的監控
對于IaaS層的監控,本質來說就是監控組成IaaS層的各個資源對象,那么資源對象代表什么呢? 例如物理服務器、交換機、一條專線與一個公網IP等等都是一個個資源對象。通常來說對于資源對象的監控可以分為以下4個維度。
- 狀態的監控:通指設備的的狀態,如設備的存活狀態、網絡設備的端口狀態、電源、風扇狀態等。
- 性能監控:通指設備內存大小,端口流量包量、CPU利用率 等等
- 質量監控:通指設備的丟包率、錯包率、網絡訪問的延時等等
- 容量監控:通指設備的負載使用率、專線帶寬使用率、網絡設備的負載使用率、服務器的負載使用率等等。
監控產品的分層結構
對于絕大多數主流商用或者開源監控告警產品來說,一般都是采用這種類似的分層方式,當然這里是一種高度抽象后的產品分層架構。
位于最底層的就是數據采集,采集到的原始數據是監控的最初的輸入。
數據采集
通常來說企業級的監控系統應該是支持多種采集方式與多種采集對象的,例如可以用Agent主動上報、也要能支持SNMP、Xflow、IPMI等多種協議。而針對于IaaS層具體支持的采集對象應該不少于 物理服務器、操作系統指標(linux&windows)、網絡設備、網絡內會話信息、物理專線、網絡出口等等。不同的采集對象采用的采集方式也是不同的,例如 服務器系統指標可以用Agent上報、網絡設備狀態、流量、包量可以用SNMP采集等,具體采用哪種采集方式要看業務場景與所需場景的數據量與類別而定。織云同樣也是支持多種采集方式與多種采集對象。
在大數據的時代背景下,數據采集這部分建議針對某一個具體的對象盡量采集的大而全,可能有些數據暫時看采集上來沒有直接用途,但是隨著數據量級與數據間關聯性的變化,對大量的原始數據,清洗、分析、加工后便能催生更多的數據消費場景。
基礎概念
監控告警是對某一個具化的對象做采集、存儲、分析、展示、告警、處理的過程。
為了便于讀者對于后文與后續系列文章的理解,這里筆者先集中描述一下設計織云監控告警平臺時應用的一些概念。對于監控告警織云的理念是先納管對象在監控對象,這也是海量運維的最佳實踐。
告警(監控)對象
- 定義:CMDB中管理的一個具體資源對象或者是一個自定義邏輯CI
- 示例:一臺物理服務器、一個三級業務、一個TDSQL實例,這些均是對象
- 備注:對象與對象之間也有是關聯、包含、繼承等關系
告警(監控)指標
- 定義:一個或多個特性id(或特性間的四則運算產生的結果)的集合
- 示例:CPU使用率、內存使用率均是特性id; 而 例如 成功率=(成功的請求總數/總請求數)*100 這個就是多個特性id的四則運算。
- 備注:并不是所有監控指標都可以用來做有效的告警指標,這部分是按需所用。
告警(監控)類型
- 定義:確定了一部分的告警對象的告警指標采取一類的算法計算
- 示例:單機性能告警(就包含了多個針對于服務器這個對象的監控告警指標,如 cpu使用率、內存使用率、應用程序內容使用量等)
告警規則
- 定義:告警對象+告警指標+告警產生條件+告警通知收斂規則(閾值、發生次數、統計時長等等),應用于告警策略
- 示例:例如對某臺交換機創建了,cpu使用率>80時的告警規則
告警策略
- 定義:告警對象+告警類型+告警規則(可多個) 對應一個告警策略
- 示例:對一個三級業務下的全量服務器創建了一條基礎告警策略,下圖中的每一條都是一個告警規則,
備注:對于告警策略,織云的理念的是對象精簡化,為什么會這樣說?在實際的生產環境匯中,一個運維同學負責幾十個業務是常態,如果這幾十個業務對應的不同的告警策略有上百個,在實際的運維過程中其實是不可量化的管理的。 所以告警策略要同時包含不同的告警類型與具備可繼承性。
告警
- 定義:告警對象的告警指標滿足告警產生條件后產生的對象
- 示例:[騰訊織云] [ping告警] [15:38:10] [Ping 192.192.192.192 不可達]
限于篇幅這里先介紹以上最基礎的概念,后續隨著討論的逐步深入,會在介紹告警分級、告警收斂、告警恢復、告警事件、告警訂閱、告警合并等概念,下面主要討論下網絡設備監控、網絡流量分析與服務器監控這幾個業務運維同學們強關注的運維對象。
網絡流量
對于網絡出口與網絡專線的有效監控與分析,即能有效的協助業務運維同學有效的定位業務異常、評估業務服務質量等,也能有效的度量業務整體運營成本,畢竟現在帶寬的使用成本在整體運營成本中也是占比越來越大。相信運維同學多少都會遇到下面的場景
- 例如這條專線當前利用率多少?
- 在已經使用的流量中,某個ip使用了多少流量?
- 這些所產生的流量是基于什么協議與方向?
- 專線與網絡出口的丟包率與時延是怎么樣的?
- 每條專線中主要是哪些務在用?哪個是“”地主客戶“”?
等等較高頻的使用場景。對于網絡流量的監控與分析來說主要依靠的FLOW。
那么什么是FLOW呢?
Flow是一種數據交換方式,其工作原理是:Flow利用標準的交換模式處理數據流的第一個IP包數據,生成Flow 緩存,隨后同樣的數據基于緩存信息在同一個數據流中進行傳輸,不再匹配相關的訪問控制等策略,Flow緩存同時包含了隨后數據流的統計信息。
一個Flow流定義為在一個源IP地址和目的IP地址間傳輸的單向數據包流,且所有數據包具有共同的傳輸層源、目的端口號。
相對于會話(“Session”)而言,“Flow”具備更細致的標識特征,在傳統的TCP/IP五元組的基礎上增加了一些新的域值,至少包括以下幾個字段: ?| 源IP地址 | 目的IP地址 | 源端口 | 目的端口 | IP層協議類型 | ToS服務類型(dscp) | 輸入物理端口(ifindex) |?? 以上七個字段可以唯一地確定任意一個數據包屬于哪個特定的Flow,換而言之任何一個字段出現了差異都意味著一個新Flow的發生
對于FLOW的分析展示同樣也是要基于多維度的,ip(目的與源)、port(目的與源)、業務、網絡架構、城市、IDC等等眾多的維度,具體所需的維度依賴于自己的業務場景。
FLOW是廠商的私有協議,業界也有多種的Flow格式。例如CISCO、華為、juniper等等的主流廠商的flow也是均有一定差異性與優劣的,所以這部分的后臺能力是需要有異構性的,織云基于騰云復雜的網絡運維經驗,目前是支持CISCO、華為、juniper 的不同FLOW。
網絡設備
對于網絡設備的監控,也一般從設備性能、質量、狀態等維度入手。對于每臺網絡設備來說運維同學一般會關注如下場景:
- 網絡設備的運行狀態Syslog(設備運行日志)的監控與告警
- 設備堆疊狀態下的(例如交換機堆疊)的監控與告警
- 網絡設備上每個物理端口的、流量、包量、錯包與端口狀態的監控與告警。
- 網絡設備上邏輯端口(物理端口組合)的性能與狀態
- ……………
等等高頻場景。
對于網絡設備的syslog告警來說,同樣也會面臨不同的廠商、設備類型與設備型號日志標準不統一,所以對于網絡設備syslog監控告警來說,首先是將眾多的網絡設備進行邏輯分組,以便于在一個分組內的設備均可以響應同一個告警關鍵字,并且這個分組粒度建議較細,這樣才能保障告警關鍵字的有效性與獨立性。在這里根據多年的運維經驗,建議syslog告警的分組模型由四個維度組成廠商+類型+型號+用途,例如 CISCO+交換機+EX43000-24T+內網接入層交換機,通過這個公式就描述出一個設備的邏輯分組。
服務器
對于服務器的監控同樣也是從狀態、性能與容量這幾個維度入手。雖然SNMP也可以用于服務器監控,但相對于agent主動上報指標與數據會少很多。服務器的狀態監控主要包含 服務器是否ping的通、agent上報是否超時與電源運行狀態等等。對于性能與容量這兩類維度,主要依賴當前OS的數據捕獲,一般來說對于服務器監控來說在通用場景下主要關注cpu、內存、流量與包量這四個指標即可,但是別的指標也建議盡量捕獲。 單個監控對象的數據豐富了會有如下好處。
- 避免對象的監控盲點
- 不同的監控數據點可以部分對應出該服務器所承載的業務特性指標,例如存儲類業務也會關注 disk_total_read、svctm_time_max、await_time_max等等系統指標
- 生產的數據足夠豐富能夠催生出更加豐富的運維數據消費場景。
服務器監控相對是很標準的監控模型,針對于物理服務器與虛擬機都有共性指標。這部分主要做到采集的數據豐富與上報的準確性(算法準確)。
后續文章主題預告
- 數據銀行CMDB的建設
- 形態各異的公有云組件通用監控模型建設之路
總結
IAAS層的監控從IAAS層的組成這個維度來說,可以分為一個個獨立的資源對象來分類監控,針對每一類對象可以分別從狀態、性能、容量、質量這幾個維度描述,將不同的數據綜合為開發與運維的統一視角。監控告警產品的建設是任重而道遠的過程,坑也非常多。要考慮多種因素,技術后臺能力只是其中的一部分。例如在DevOps的文化下,需要從更高的層面來統一視角(開發視角&運維視角)避免將監控做成”開發的監控”與”運維的監控”。也需要更多的考慮監控產品使用的雙態(用戶態&系統態)與不同的權限(行業屬性)如何分類設計。
相關閱讀
本文由 @李光 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自PEXELS,基于CC0協議
為啥不更新了。??奁?/p>
大廠監控新人產品來報道了????
點個贊
圖表怎么制作的呢
閱讀量少正常,畢竟做監控的產品少,求作者繼續寫
你做過監控這塊嗎?可以加個好友交流一下
沒做過,但是預感即將要做,補充下知識
作者你2018年一整年都哪去了?很期待你的文章?。。?!
希望作者趕緊更新啊
為什么沒再更新呢?很適合監控產品小白入門看!