本文做者:AIOps智能運維性能優化
乾貨概覽服務器
百度擁有上百條產品線,數十萬的服務,每一個服務時時刻刻都在產生着海量的監控數據,造成的監控項規模總數已達數十億。面對如此海量的數據,在平常運維(如故障診斷、成本分析、性能優化等場景)過程當中,傳統的統計圖表難以有效直觀地展現如此龐大的數據。所以,優秀的監控數據可視化產品就呼之欲出,他既要數據準確、全面、時效性高,也須要提高用戶的使用體驗,使其能在茫茫數據中一眼就能發現想要觀察的數據。運維
那麼怎麼作才能適應用戶需求、完成精準展現,同時又能挖掘數據價值呢?下面咱們從故障診斷的場景出發,來看百度智能監控平臺是如何充分利用數據可視化武器來解決實際業務問題的。佈局
故障定位可視化思路性能
在標準的故障處理流程中,故障定位通常可分爲兩個階段:優化
故障止損前:指望能夠快速得到可用於止損決策的信息,作出相應的止損操做使得服務恢復。好比經過肯定故障範圍,調度流量繞過故障機房或摘除故障實例等。spa
故障止損後:仍須要進一步找到致使故障的深層次緣由,肯定故障根因,將線上環境恢復到正常狀態。設計
基於上面的需求,能夠總結爲如下三個定位的層次,從總體到局部逐步縮小故障範圍,找到故障根因:排序
全局問題定位:快速確認線上狀態,縮小故障斷定範圍。爲可能的止損操做提供判斷依據。本文會介紹如何構建一個全景分析儀表盤。接口
細分維度定位:經過分析地域、機房、模塊、接口、錯誤碼等細分維度,進一步縮小問題範圍,肯定須要排障的目標模塊、接口等。本文會介紹如何基於多維度數據可視化解決維度數量暴增帶來的定位難題。
故障根因確認:一些狀況下,問題的根因須要藉助除監控指標以外的數據進行分析。例如上線變動、運營活動致使的故障。本文針對致使故障佔比最高的變動上線類故障進行分析,看如何快速找到可能致使故障的變動事件。
全景掌控縮小範圍
對於一個服務乃至一條產品線而言,擁有一個佈局合理、信息豐富的全景監控儀表盤(Dashboard)對於服務狀態全景掌控相當重要,所以在百度智能監控平臺中,咱們提供了一款可定製化的、組件豐富的儀表盤服務。
用戶能夠根據服務的特徵,自由靈活的組織儀表盤佈局,配置所須要展現的數據信息。
如上圖所示,咱們能夠按照問題定位的思路,將服務總體的服務可用性狀況、分功能可用性狀況、分模塊的核心指標、流量的同環比對比、分IDC的流量對比等,依次經過豐富的可視化組件進行呈現。使得在收到報警時,能夠快速將故障縮小到具體功能、模塊、接入流量、機房級別。
深刻數據肯定根因
在故障處理過程當中,全景數據儀表盤爲咱們縮小了故障定位的範圍,但大多數的根因仍然隱藏在數據的細分維度中。由此多維度分析的重要性就體現出來了。常見的多維度分析包括以下幾種場景:
單維度取值對比分析:針對同一個維度的不一樣取值進行對比分析,例如肯定流量下跌出如今哪一個省份。
多維度關聯分析:分析兩個甚至更多維度互相做用後數據的分析,例如如何肯定一個下跌是機房級別仍是模塊級別。
維度下鑽分析:一些維度包含多個層級,例如省份、城市等相關聯維度的逐層下鑽定位。
咱們針對這些場景,設計了相應的解決方案。
單維度取值對比分析
維度取值對比分析是一種最多見的細分維度定位方式。對於同一個維度下取值數量較少的狀況,能夠經過多維度趨勢圖和餅圖等可視化方式進行快速的分析,查看不一樣維度取值的取值狀態,以及佔總體比例狀況。而對於維度取值數量多,且不一樣取值數量級差距較大狀況(例如分省份的流量下跌斷定),使用餅圖或趨勢圖很容易把流量較小省份的信息隱藏掉。這種場景下,咱們能夠經過維度取值自動展開功能,分別查看每一個省份的狀態。
多個維度關聯分析
細分維度的故障所帶來的表象可能會在多個維度均有表現,好比服務總體的訪問拒絕上升,咱們會發現分機房的拒絕量上升,也看到分模塊的拒絕上升。那麼咱們如何確認故障的根因是來源於某個機房仍是某個模塊,仍是這二者的交叉維度,即某個機房的某個模塊致使的問題。
矩陣熱力圖能夠解決這一問題。將須要作分析的兩個維度分別做爲橫縱座標,經過階梯的閾值顏色將對應交叉維度的取值展示再座標上。咱們即可很是直觀的看到這這兩個維度對於整個業務的影響狀況,以下圖所示:
咱們能夠看到,從縱向的分模塊維度,能夠看到Module 4在多個機房都有明顯的訪問拒絕狀況,而在橫向分機房維度,則沒有明顯的特徵。則說明是Module 4模塊致使的問題。
嵌套維度下鑽分析
相似於國家-省份-城市的行政區域劃分,區域-機房-機器的服務部署劃分,咱們能夠看到不少維度之間存在着層次嵌套的關係。咱們故障定位的思路也是如此,從總體到局部逐步分層下鑽定位。
咱們提供了多維度展開報表功能支持這種下鑽分析。
例如咱們懷疑是某幾臺服務器致使的拒絕量上升,咱們能夠基於多維度統計報表,點擊排序找到拒絕最大的區域,而後依次展開找到拒絕最大的機房和機器。
點擊詳情後,咱們就能夠跳轉到機器對應的頁面,查看對應機器的詳細數據來進行定位。
找尋關聯事件定位
根據歷史經驗,大多數的線上故障都是因爲變動操做所引發的,包括程序、數據、配置等變動事件,增刪機器實例、執行預案等運維事件,甚至包括可能引起流量突增的活動運營事件。對於某些體積龐大的產品線,開發和維護人員衆多,以上事件的發生更是千絲萬縷、錯綜複雜。
面對這個問題,咱們設計並推出了一種能夠解決這種問題的通用性組件——事件流圖。
經過事件流圖,能夠快速篩選出故障的先後時間,發生或發生中的事件,每一個事件經過色塊的長短位置,展現了開始結束時間以及持續時長。咱們能夠快速的分析出對應時間的故障多是因爲某些操做開始或操做完成引起的。
對於部分業務線,同一時間段發生的事件可能有上百甚至上千條,咱們提供便捷的篩選功能來解決這一問題。經過事件類型標籤,打開或關閉某一類事件的展現,優先排查最有可能的根因。同時對於每一類事件的支持細分篩選,用戶能夠自定義事件篩選的條件,支持多項選擇、文本模糊匹配等多種方式,使得定位範圍一層層縮小,最終找到問題根因。
總結
以上咱們介紹了百度智能監控平臺在全局故障分析、細分維度定位、事件關聯定位三個故障定位階段中進行的數據可視化探索。當前百度智能監控平臺已成爲百度各大業務可用性保障必不可少的利器。
數據可視化能力的優點不只僅在故障定位場景中由突出體現。還能應用在更多的數據分析領域。咱們將來會進一步介紹百度智能監控平臺在應用性能分析、商業數據分析等領域的實踐成果,歡迎各位繼續關注。