监控系统的模板功能

这篇文章主要总结整理一下最近工作中两套监控系统合并过程中使用模板功能来抽象【针对应用相关的监控】
和【针对机器相关的监控】的差异。

背景

公司主要的监控系统主要是针对应用级别的,所有的指标都是属于App级别的,也就是想看某条监控指标数据,首先需要选定具体的APP。
然后公司也有一套针对机器相关的监控系统,因为机器相关的监控很多时候是以机器为维度的,也就是想查询某个机器的指标数据时
需要先指定具体的机器。同时由于公司业务的特殊性,也需要增加对多种终端类型(比如门店、货柜)的监控相关的功能。同时考虑到开发
、维护等成本等等的诸多因素,现在需要将两套监控系统合并。因此需要一套通用的模型来抽象这种问题。

其中这套模式本身并不复杂,没啥好说的。

模板功能模型

下面这个图是我当时设计的模板功能

简单描述一下这个图:

  • Endpoint可以属于多个EndpointGroup
  • EndpointGroup可以绑定多个Template, 一个Template也可以绑定到多个EndpointGroup上面
  • Template会包含多个Metric数据,同时也支持继承关系,也就是子模板会继承父模板的指标数据,如果父子模板中都含有同样的
    Metric的话,那么子模板的会覆盖父模板的指标数据。
  • Endpoint也可以直接和Template来进行绑定,而不需要通过EndpointGroup
  • Endpoint可以直接添加Metric数据,这个主要是因为目前针对App相关的监控都是属于这种情况的。

Endpoint

因为监控指标数据可能属于一个APP,也可能属于一个机器、门店、货柜、咖啡机等。所以使用了抽象的Endpoint来描述指标的归属。

EndpointGroup

含义很简单,之所以弄这个主要是为了做批处理,这样就不需要针对每一个Endpoint来进行操作了,一次可以操作一批。

Template

Template其实就是一些Metric的集合,支持继承功能,继承功能其实并不是必须的,可以通过组合来实现,最后我们选择了继承
的方式,主要是考虑到针对下面的场景,继承这种方式描述起来更好一些:

所有的机器都有一些基础监控,比如针对cpu、内存的监控,我们将这些基础的指标数据使用template1来进行打包,然后如果想对所有的
dev环境的机器增加一些监控指标,这些监控指标我们使用Template2来打包

如果使用组合的方式,需要对Endpoint或者EndpointGroup绑定Template1和Template2,而如何使用继承的话,只需要绑定Template2
就好。

Metric

这个比较简单,所有监控系统的基本语义。

Comentarios

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×