天天看點

騰訊最完整的監控體系介紹,看這篇就夠了!基礎設施層伺服器層業務程式層使用者體驗告警智能關聯業務容災排程柔性總結

作者 : 羅偉, 2008年加入騰訊,長期從事騰訊SNG業務的營運支撐、監控系統的建設,曾主導建設Qzone、 手機Qzone、手機QQ等業務監控系統及監控平台的建立和營運,目前負責黑石産品架構工作。 導語:本文介紹了騰訊業務監控體系的層級構成,用代表性的監控系統闡述每個監控層次的實作方法,以及與監控體系配合,業務做了哪些容災和排程的方案。進而和大家分享騰訊最完整的關于做監控系統的思考。

首先很榮幸在這裡給大家分享騰訊在做業務監控的一些心得和經驗,當然今天所提及的隻是騰訊業務營運監控體系中的小部分,也歡迎大家一起在營運體系建設、精細化運維等方面共同探讨和學習。

我們用一個QQ紅包開始今天的分享吧。

表面看是搶紅包這麼簡單的一個功能,其實光搶紅包這個動作,它所關聯的監控系統就有好多個!

騰訊最完整的監控體系介紹,看這篇就夠了!基礎設施層伺服器層業務程式層使用者體驗告警智能關聯業務容災排程柔性總結

如圖所示,騰訊的業務從邏輯上可以抽象總結成四個層次:使用者層(PC、手機、智能硬體等)、接入層、邏輯層和資料層(包括資料緩存層和持久化層)。騰訊業務的監控系統是立體化覆寫,總結來說也是由四個層級組成:

騰訊最完整的監控體系介紹,看這篇就夠了!基礎設施層伺服器層業務程式層使用者體驗告警智能關聯業務容災排程柔性總結

基礎設施層的監控覆寫範圍很廣,在騰訊包括:與營運商互聯出口、專線(包括城域和廣域)、機房(包括各類實體設施---如機架、制冷、配電、消防、安防等)、網絡裝置(交換機、路由器、防火牆等)等。

基礎設施層的監控又分為狀态、性能、品質、容量、架構等幾個層面。舉例說明:

狀态監控包括網絡裝置的軟硬體狀态(如裝置存活狀态、闆卡、電源、風扇狀态,裝置溫度、光功率、OSPF狀态、生成樹狀态等);

性能監控包括裝置CPU、裝置記憶體大小、session數量、端口流量包量、記憶體溢出監控、記憶體使用率等;

品質監控包括裝置錯包、丢包率,針對網絡裝置以及網絡鍊路的探測延時、丢包率監控等;

容量監控包括裝置負載使用率、專線帶寬使用率、出口流量分布等;

架構監控包括路由跳變、缺失、繞行,流量穿越監控等。

騰訊最完整的監控體系介紹,看這篇就夠了!基礎設施層伺服器層業務程式層使用者體驗告警智能關聯業務容災排程柔性總結

伺服器是業務部署運作起來的載體(早期伺服器就是我們傳統觀念上的“實體機+作業系統”,現在已經擴大到虛拟機或者是容器等範疇)。伺服器層的監控包括硬體層面和軟體層面。

硬體層面的監控主要包括如下内容:

硬碟:硬碟讀寫錯誤、讀寫逾時、硬碟掉線、硬碟媒體錯誤、[SSD硬碟]硬碟溫度、硬碟壽命、硬碟壞塊率;

記憶體:記憶體缺失、記憶體配置錯誤、記憶體不可用、記憶體校驗;網卡:網卡速率;

電源:電源電壓、電源子產品是否失效;風扇:風扇轉速;

Raid卡:Raid卡電池狀态、電池老化、電池和緩存是否在位、緩存政策。

軟體層面的監控主要包括:CPU(CPU整體使用率、CPU各核使用率、CPU Load負載)、記憶體(應用記憶體、整體記憶體、Swap等)、磁盤IO(讀寫速率、IOPS、平均等待延時、平均服務延時等)、網絡IO(流量、包量、錯包、丢包)、連接配接(各種狀态的TCP連接配接數等)、程序端口存活、檔案句柄數、程序數、内網探測延時、丢包率等。

業務程式層的監控手段是最為豐富和立體化的,這裡隻是介紹幾個核心和典型的系統。

容量管理系統基于“伺服器層”在軟體層面的監控名額,并且配合業務增長、營運活動等因素而建設,用于客觀衡量業務負載高低情況,并結合擴縮容排程,實作業務的負載和成本間的平衡。

具體原理是根據伺服器所在業務層級(接入層、邏輯層還是資料層)的不同,設定不同的容量參考名額、名額參考基準、名額計算規則、高低負載判别規則,設定業務子產品(由相同功能的多個伺服器構成的業務叢集)的擴縮容規則;由系統計算出伺服器、業務子產品的負載情況,決策出是否需要擴容或縮容,觸發業務子產品的擴縮容操作。

騰訊最完整的監控體系介紹,看這篇就夠了!基礎設施層伺服器層業務程式層使用者體驗告警智能關聯業務容災排程柔性總結

說明:伺服器、業務子產品的負載計算規則也是由業務可以自定義配置。

在騰訊内部簡稱“模調”,2006年開始已經廣泛應用于各大業務,用于實時監測後端服務與服務之間調用的品質,可以細化到服務子產品、接口、指令字甚至代碼層面(現在看來,其實就是各個APM廠商在大力宣傳和推廣的産品)。

針對使用标準化元件(在騰訊内部業務,使用者層使用的标準元件是wns;接入層使用的标準元件是Qzhttp、tngix;邏輯層使用的标準元件是spp+L5;資料層使用的标準元件是CKV、CDB等)的業務,由标準元件上報模調監控資料;

針對自定義業務Server,提供模調上報的SDK或API,由業務自主上報服務間的每次調用成功與否,每次調用的延時;

模調系統支援業務從使用者層->接入層->邏輯層->資料層,全路徑用唯一的序列号(通常由時間、功能子產品ID、UIN、随機值等因素構成此值)來對業務請求染色,友善業務展現出每次請求完整的從前到後的調用鍊路。

騰訊最完整的監控體系介紹,看這篇就夠了!基礎設施層伺服器層業務程式層使用者體驗告警智能關聯業務容災排程柔性總結

收集使用者真實通路業務的速度、性能、成功率資料。PC類業務由js上報或者用戶端程式監控子產品上報,移動類業務通過引入騰訊分析SDK上報到監控系統。測速系統的價值不僅僅在于實時監控,還有一個比較有意義的作用是:業務架構優化前後,對比使用者通路業務的速度,指導和衡量業務架構優化的客觀效果。

通過模拟使用者通路業務并校驗傳回資料結果,監測業務是否可用、通路品質及性能、邏輯功能正确性的監控系統。當然和雲撥測同類的産品或者公司也挺多的,比如基調、監控寶、博睿等等。我們自己要建立雲撥測其中的一個原因是:騰訊業務需要監控業務邏輯是否正常,而不僅僅是接入層(網站類業務是否能通路,通路的速度是否快),業務邏輯的驗證就涉及到鑒權、關系資料的自動化擷取等,外部監控服務商無法實作這一點。

以上的内容簡單介紹了目前騰訊業務核心的幾個監控系統,當然還有很多其他系統沒有提及到,比如自動化測試監控、元件特性監控、業務染色等。接下來講下告警關聯和業務容災的内容。

有這麼多監控系統,如果沒有告警智能關聯,我們會怎麼樣?簡單舉一個例子,如果某個業務在資料層的伺服器(假設安裝的是redis)有硬體故障,前端業務也沒有做好足夠的容災切換,那麼該業務的接入層、邏輯層、資料層在使用者體驗、業務程式層将産生大量的告警,形成告警風暴。為了解決該問題,騰訊内部有一個ROOT系統,基于業務架構,結合業務資料流通路關系,通過時間相關性、面積權重等算法,将監控告警進行分類、關聯,發掘出告警的根源所在。

騰訊最完整的監控體系介紹,看這篇就夠了!基礎設施層伺服器層業務程式層使用者體驗告警智能關聯業務容災排程柔性總結

說明:告警關聯的一個基本思路是,越靠近業務後端(邏輯層處于接入層的後端,資料層處于邏輯層的後端)的告警越趨近于故障根源;越靠近基礎設施層的告警越趨近于故障根源。還是剛才所舉的例子:監控系統在關聯所有告警後,發給運維和研發的告警将是分析後的結論:redis所在伺服器硬體故障,導緻業務請求量下降xx%,業務整體流量下降XX%。

我們始終認為: 監控系統、運維工具不是萬能的。如果要業務可用性不斷靠近100%,需要業務側做很多容災、排程、柔性的工作。

騰訊業務在容災、排程、柔性上做了哪些工作呢?由于篇幅有限,不能完全列舉,我僅分享幾個比較有代表性的思路和方法。

1、在使用者端,為了應對網絡環境複雜的情況,騰訊移動類業務采用公司統一的業務接入架構維納斯。

【維納斯(WNS,Wireless Network Service),又名移動連通服務,是一個為APP提供高連通、高可靠、強安全的網絡連接配接通道的服務;它利用QQ、微信海量接入資料來持續優化排程算法,并內建了使用者就近接入、騰訊直通車、加密通道透傳功能等等,提供了手機端SDK(IOS/Android),業務不必關心網絡細節,即可安全與業務背景簡單可靠的通訊】。

2、業務接入層:業務接入層大多數是無狀态設計(或者是有規則的分号段接入),在營運部署規劃的過程中,根據業務規模大小,選擇不同程度的容災,通常有跨交換機、跨機架、跨機房、跨地域容災。

業務全量接入TGW(騰訊雲網關)實作負載均衡,避免單個伺服器、交換機、機房出現故障時,業務完全癱瘓。

3、業務邏輯層:業務間的邏輯調用都是通過L5元件(名字服務+負載均衡)通路,L5元件基于伺服器初始配置資訊,通過自适應算法,以兩個關鍵名額請求成功率和請求延時為依據,周期性計算出每個被調伺服器的權重,再使用高效的配額算法配置設定各個主調服務的通路路由,主調伺服器上的業務程序通過API來取得這些路由,調用結束時通過API來回報路由的好與壞。

4、網絡排程:主要有同城跨營運商排程和同營運商跨城排程。假設上海電信出口有故障,我們将通過GSLB域名解析指向排程到同城其他營運商的接入叢集,實作容災;

騰訊有幾個核心的IDC節點,多個節點之間有專線互聯,是以我們也可以将上海電信接入的這部分使用者牽引到北京電信或者深圳電信進行接入,實作業務的容災---這就是同營運商跨城排程。排程的過程,業務完全無感覺。

5、柔性:分基礎設施層面的柔性和業務邏輯功能上的柔性。柔性是容災、排程切換等手段的補充。

基礎設施層面的柔性,舉一個例子:當營運商網絡、專線網絡擁塞的時候,我們可以根據業務的服務等級不同啟動不同等級的流量控制。

業務功能上的柔性, 也舉一個簡單易懂的例子:某個業務如果提供了文字、語音、視訊、互動等功能,當網絡高負載或者業務整體高負載時,可以通過柔性開關控制關閉掉某些高消耗資源的功能和服務。

監控體系是業務營運體系中非常重要的一個環節,但業務可用性的提高是需要基礎設施支撐團隊、業務運維團隊、業務研發團隊一起通力合作,才能做到更好。篇幅和時間有限,我的分享結束了,感謝各位。

歡迎關注【騰訊織雲】公衆号,擷取最新技術資訊。