深度揭秘!蚂蚁业务自定义监控大盘是怎么设计的?

简介: 现在,体验诉求成为各个技术产品迭代升级过程当中的重要诉求之一,蚂蚁监控产品亦是如此。一份业界体验优秀的自定义监控大盘是怎么样的?本文将介绍蚂蚁监控产品在监控大盘方面的创新设计与尝试,新版自定义监控大盘 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

相关文章
相关标签/搜索