天天看點

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

背景

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

但是,随着螞蟻監控産品的不斷疊代更新,以及雲原生可觀測性對于監控大盤的高要求,大家對自定義監控的體驗訴求也越來越多,包括更便捷的互動方式、更豐富的圖表、更豐富的資料源、更多擴充點等,是以對監控大盤的更新也勢在必行。

産品體驗

WYSIWYG

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

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

體驗1:縮放

Barad-Dur 的縮放是可以在四周以及四角上進行的,而市面上常見的大盤産品隻支援右下角的縮放。由于坐标系統一般采用的是 (left,top,width,height) 來定義一個矩形,最容易實作的就是右下角縮放,隻需要變動 width 和 height 兩個參數即可。最難實作的是左上角的縮放,四個參數需要同時變動,且關系比較複雜。特别是在引入網格布局後,縮放時要自動“吸附”臨近的網格點,難上加難。

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

體驗2:拖動

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

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

體驗3:自動重布局

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

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

體驗4:任意位置

Barad-Dur 的布局支援圖表在任意位置擺放,而市面上常見的大盤産品由于上述的簡陋算法,不支援此功能,所有的圖表必須堆疊在頁面的頂部。

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

體驗5:布局複位

Barad-Dur 的自動重布局能夠在對單個圖表進行調整時将其他圖表“推開”,然後更強大的是可以再将被推開的圖表複位。這裡找到了市面上常見的大盤産品直接拿來用的開源布局架構進行對比。該架構其實提供了上述的任意位置功能,然而由于沒有布局複位的功能,導緻該功能一旦啟用,會令整個大盤在編輯過程中布局被擾亂,對使用者起不到任何幫助,是以市面上常見的大盤産品沒有啟用這個功能。

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

體驗6:文字編輯

Barad-Dur 支援在大盤中添加靜态文字以及對于文字的編輯。靜态文字可用于公告、标題、說明等一些常見的大盤場景。

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

功能對比

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

綜上對比,可以看出 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。其本意是指汽車上的儀表闆,這裡的儀表闆包括了兩類組成部分:螢幕、控制器。在儀表闆上不僅能看到汽車的目前狀态,也能對汽車進行各種控制。這是大盤的本意,但是就目前看來,市面上所有的監控大盤産品都缺失了控制器這個重要的組成部分,導緻監控大盤其實隻是監視大盤。如果隻是用來監視的,那大盤獨立存在就沒有意義,就像汽車的儀表闆上隻有轉速表、時速表、裡程表,卻沒有油門、刹車、換擋杆。

我們再來看幾個工業産品的大盤:

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

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

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

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

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

面向專家的定制産品

控制器是不可或缺的組成部分,甚至比螢幕更加重要。Barad-Dur 提供了在大盤中設定控制按鈕的功能,可以實作一些簡單的控制,比如關閉/啟動報警、打開釘釘聊天視窗、啟動控制預案等。日後會不斷加入更加強大的控制功能,讓螞蟻監控大盤變成一個完整的監控系統。

技術實作

自定義資料源

上文提到 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 的設計理念,并融入了大盤的設計需求。

深度揭秘!螞蟻業務自定義監控大盤是怎麼設計的?背景産品體驗技術實作未來展望關于我們

總體是一個樹形結構,但是每個節點都會有一個 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]

繼續閱讀