深度揭祕!螞蟻業務自定義監控大盤是怎麼設計的?

簡介:如今,體驗訴求成爲各個技術產品迭代升級過程中的重要訴求之一,螞蟻監控產品亦是如此。一份業界體驗優秀的自定義監控大盤是怎麼樣的?本文將介紹螞蟻監控產品在監控大盤方面的創新設計與嘗試,新版自定義監控大盤 Barad-Dur 在交互、體驗與設計理念上有諸多創新點,同時將以模塊的形式發佈,支持二次開發,可同時爲螞蟻內外監控系統服務。

背景

螞蟻業務自定義監控是螞蟻監控產品中的一個重要功能,主要是通過自定義日誌數據源並配置大盤的方式來解決螞蟻業務實時監控的需求。在產品功能上,用戶可以通過對一系列日誌數據源的創建、組織、管理及表單配置化的方式,簡單、快速組織出一個多維監控大盤。這項能力在當時是一個具有創新性的能力,從功能到產品體驗上很好解決了當時螞蟻複雜業務監控的痛點。

但是,隨着螞蟻監控產品的不斷迭代更新,以及雲原生可觀測性對於監控大盤的高要求,大家對自定義監控的體驗訴求也越來越多,包括更便捷的交互方式、更豐富的圖表、更豐富的數據源、更多擴展點等,因此對監控大盤的升級也勢在必行。


原文鏈接:https://developer.aliyun.com/article/766653

產品體驗

WYSIWYG
當前優秀的監控大盤產品都標配一個“所見即所得(WYSIWYG)”編輯器,這方面能力是螞蟻監控產品一直缺失的。在螞蟻監控產品中配置大盤還是通過傳統的表單方式,對用戶非常不友好、學習曲線陡峭、配置效率不高。導致用戶經常將配置大盤作爲一項需求提給監控團隊,由監控團隊的“大盤配置專家”來進行配置,不僅存在較高的溝通成本,也給監控團隊增加了很大的負擔。

在新版監控大盤 Barad-Dur 中,對 WYSIWYG 編輯器的交互體驗進行了大量工作,力求做到市面上優秀的編輯體驗。

體驗1:縮放
Barad-Dur 的縮放是可以在四周以及四角上進行的,而市面上常見的大盤產品只支持右下角的縮放。由於座標系統一般採用的是 (left,top,width,height) 來定義一個矩形,最容易實現的就是右下角縮放,只需要變動 width 和 height 兩個參數即可。最難實現的是左上角的縮放,四個參數需要同時變動,且關係比較複雜。特別是在引入網格佈局後,縮放時要自動“吸附”臨近的網格點,難上加難。
image.png

體驗2:拖動
Barad-Dur 的圖表拖動可以實現圖表位置的一步交換,而市面上常見的大盤產品需要進行多次拖動才能實現兩個圖表的交換。且在拖動過程中,圖表的整體佈局會被打亂,而 Barad-Dur 不會存在這樣的問題。
image.png

體驗3:自動重佈局
Barad-Dur 的自動重佈局功能非常強大,可以支持實時佈局預覽(當然市面上常見的大盤產品也支持),同時大盤的佈局調整會根據具體操作(縮放、拖動)的方向進行。而市面上常見的大盤產品只能在垂直方向上進行佈局調整,因爲所用的算法非常簡單,只是粗暴地把所有圖表向頁面上“推”。
image.png

體驗4:任意位置
Barad-Dur 的佈局支持圖表在任意位置擺放,而市面上常見的大盤產品由於上述的簡陋算法,不支持此功能,所有的圖表必須堆疊在頁面的頂部。
image.png

體驗5:佈局復位
Barad-Dur 的自動重佈局能夠在對單個圖表進行調整時將其他圖表“推開”,然後更強大的是可以再將被推開的圖表復位。這裏找到了市面上常見的大盤產品直接拿來用的開源佈局框架進行對比。該框架其實提供了上述的任意位置功能,然而由於沒有佈局復位的功能,導致該功能一旦啓用,會令整個大盤在編輯過程中佈局被擾亂,對用戶起不到任何幫助,所以市面上常見的大盤產品沒有啓用這個功能。
image.png

體驗6:文字編輯
Barad-Dur 支持在大盤中添加靜態文字以及對於文字的編輯。靜態文字可用於公告、標題、說明等一些常見的大盤場景。
image.png

功能對比
image.png

綜上對比,可以看出 Barad-Dur 的 WYSIWYG 編輯器在各項功能上已經領先於市面上常見的大盤產品。

控制器
大盤,即 Dashboard (in an automobile or similar vehicle) a panel beneath the front window having various gauges and accessories for the use of the driver; instrument panel。其本意是指汽車上的儀表板,這裏的儀表板包括了兩類組成部分:監視器、控制器。在儀表板上不僅能看到汽車的當前狀態,也能對汽車進行各種控制。這是大盤的本意,但是就目前看來,市面上所有的監控大盤產品都缺失了控制器這個重要的組成部分,導致監控大盤其實只是監視大盤。如果只是用來監視的,那大盤獨立存在就沒有意義,就像汽車的儀表板上只有轉速錶、時速表、里程錶,卻沒有油門、剎車、換擋桿。

我們再來看幾個工業產品的大盤:
image.png

面向普通消費者的量產產品


image.png

面向專業消費者的量產產品


image.png

面向專家的定製產品


技術實現

自定義數據源
上文提到 Barad-Dur 支持二次開發,支持自定義數據源,僅需一點點工作即可接入自己的數據源:

  • 繼承 AbstractDatasource,並實現 doRequestData 接口;
    調用 registerDatasource 將數據源註冊至 Barad-Dur(如果使用 Barad-Dur 的數據源編輯器,可在註冊時指定自定義的數據源的編輯器);

Barad-Dur 會對所有的數據源進行包裝,提供緩存、增量加載、請求合併等功能。

統一時序數據庫
爲了實現自定義數據源能夠在任意圖表中正確展現,Barad-Dur 定義了一種 universal 的時序數據格式,支持多 key 以及多 value。所有的時序數據源(未來可能會支持非時序數據源)都會將查詢結果轉換爲這種格式,所有的圖表也都會使用這種數據格式進行展現。

使用統一數據格式的優勢在於,圖表和數據源都是按照同樣的數據接口(約定)來實現的,所以圖表和數據源是可以獨立變化的。即圖表可以任意切換而不需要改動數據源配置,數據源也可以任意切換而不需要調整圖表配置。這是市面上常見的大盤產品做不到的。

另一大優勢在於計算。Barad-Dur 支持數據源的簡單前端計算(如計算比率的場景需要將數據 A 與數據 B 相除),在使用了統一的數據格式之後,將計算也視爲一個時序數據源,它的輸入是一組時序數據源,也就是說一個計算數據源可以引用另一個計算數據源。這也是市面上常見的大盤產品做不到的。

Scene Graph
Scene Graph 的概念常用於遊戲引擎對於場景的渲染。由於場景中各個節點有父子關係且子節點的空間關係常常用相對於父節點的量來表示,所以需要一種數據結構來將這些 local 空間的量(translation、rotation)轉變爲 global 空間的量,才能最終轉換成屏幕空間的量用於渲染。這種父子關係恰好對應了大盤中的各個圖表以及整個大盤的關係。就拿一個最常見的需求來舉例說明:大盤上有全局回放的功能(這是一個非常重要的功能,沒有這個功能大盤就對排查問題毫無意義),而每個圖表又有自己的設置:

  • 時間跨度:分鐘級的圖表與秒級的圖表不會展現同樣範圍的數據;
    時間偏移:圖表數據產生存在不同的延時;

我們可以使用類似 Scene Graph 的數據結構來保存每個圖表自己的時間軸配置以及全局大盤的時間軸配置,最後計算出查詢數據所需的時間參數。

同時,未來還會引入技術棧的概念,即一個預定義的圖表組,可以直接放入到自定義的大盤中,只需要做少量配置。例如,用戶可以一步創建一臺物理機的 CPU、Memory、Disk 監控圖表,只需要修改這個圖表組的 ip 參數。

所以在 Barad-Dur 中借鑑了 Scene Graph 的設計理念,並融入了大盤的設計需求。
image.png

總體是一個樹形結構,但是每個節點都會有一個 MVC 結構,將數據源、視圖以及控制數據分離,控制流與數據流分離。同時數據源部分可以相互依賴,使 Barad-Dur 可以優化數據查詢,做到緩存、增量查詢、合併查詢等。

未來展望

目前 Barad-Dur 已經內置支持 OpenTSDB、CeresDB(螞蟻自研的高性能、分佈式、高可靠時序數據庫,支持 PromQL)以及部分螞蟻內部數據源,計劃將兼容更多數據源,如 PromQL、InfluxDB、MySQL 等常用監控數據源。本文提到的可以預定義一組圖表以及一組變量,創建大盤時可以快速添加相應的圖表組件,同時也支持導入從其他大盤產品直接導出的大盤,使用戶可以快速平滑遷移。

希望本文的介紹可以爲大家在雲原生監控領域的設計帶來一些思考與啓發,也歡迎關注該領域的優秀的你,跟我們交流更多想法~

關於我們

螞蟻智能監控技術中臺負責解決螞蟻大型分佈式架構下的監控問題,提供百萬級機器集羣、億萬級服務調用場景下的監控數據採集、計算、存儲、服務、智能預警的一站式實時監控、智能診斷解決方案,提供統一監控數據分析平臺,賦能數字化運維。

職位描述:
1、負責螞蟻智能監控、性能容量、風險數據基礎設施的研發建設,包括需求調研,系統分析設計,核心模塊實現,調優與維護。
2、主導核心技術問題攻關,解決世界級的分佈式處理難題,識別和解決潛在的技術風險。
3、對平臺自身穩定系和系統質量負責,保障系統運行可用率和數據質量相關衡量指標。
4、參與螞蟻雙十一等大型活動,通過平臺能力保障整體螞蟻系統在極限請求量下的高可用和資金安全。
5、持續對接平臺上各類技術風險防控業務方和防控系統,滿足不斷髮展的業務需求。

職位要求:
1、有強烈的技術熱情,工作責任感;計算機軟件或相關專業,本科或以上學歷;
2、有創新精神,樂於和熱於技術鑽研。思維嚴謹,邏輯清晰,具備批判性思維能力和習慣;
3、具備紮實的計算機專業基礎,包括算法和數據結構、操作系統、計算機體系結構、計算機網絡、數據庫等;
4、具備紮實的Java/C/C++/Rust/Go等語言基礎,良好的編程素養,對代碼美感有追求,至少熟悉一種關係型數據庫如Oracle、Mysql等;
5、具備知名互聯網企業高可用經驗,具備實時計算(Spark/Flink/Storm)或海量數據處理(Hadoop/HBase/Hive)相關經驗優先考慮;
6、有很強的分析複雜問題和解決複雜問題的能力,有強烈的責任心和使命感。

歡迎加入我們,有興趣聯繫 [email protected]

原文鏈接:https://developer.aliyun.com/article/766653?

版權聲明:本文中所有內容均屬於阿里雲開發者社區所有,任何媒體、網站或個人未經阿里雲開發者社區協議授權不得轉載、鏈接、轉貼或以其他方式複製發佈/發表。申請授權請郵件[email protected],已獲得阿里雲開發者社區協議授權的媒體、網站,在轉載使用時必須註明"稿件來源:阿里雲開發者社區,原文作者姓名",違者本社區將依法追究責任。 如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至:[email protected] 進行舉報,並提供相關證據,一經查實,本社區將立刻刪除涉嫌侵權內容。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章