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

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

原文連接:點擊這裏算法

背景

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

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

產品體驗

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 提供了在大盤中設置控制按鈕的功能,能夠實現一些簡單的控制,好比關閉/啓動報警、打開釘釘聊天窗口、啓動控制預案等。往後會不斷加入更增強大的控制功能,讓螞蟻監控大盤變成一個完整的監控系統。

技術實現

自定義數據源
上文提到 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 等經常使用監控數據源。本文提到的能夠預約義一組圖表以及一組變量,建立大盤時能夠快速添加相應的圖表組件,同時也支持導入從其餘大盤產品直接導出的大盤,使用戶能夠快速平滑遷移。

但願本文的介紹能夠爲你們在雲原生監控領域的設計帶來一些思考與啓發,也歡迎關注該領域的優秀的你,跟咱們交流更多想法~

關於咱們

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

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

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

歡迎加入咱們,有興趣聯繫 boyan@antfin.com

相關文章
相關標籤/搜索