WeCube开源监控插件WeCube-plugins-prometheus介绍
WeCube开源监控插件WeCube-plugins-prometheus介绍
WeCube开源监控插件
WeCube-plugins-prometheus 是WeCube上的监控插件,它基于Prometheus进行封装使其支持一些企业级监控的特性,并可作为插件注册到WeCube平台中实现其Watching的功能,下文主要说明和介绍其背景与选型。
架构图:
Demo:
关于IT监控的思考
-
监控是什么
- 个人感觉就是对资源的监视和可控,它让计算机发挥了不会累的精神去帮人们做到持续地记录工作,让人们可以及时地查看资源的变化情况和发现问题。
-
IT监控的特点
-
监控对象范围广
从基础监控到应用监控甚至于到业务监控,每一个层面都有一大堆需要监控的对象,基础监控的主机网络存储数据库,应用监控的各种流行的中间件的状态监控,各种Java应用的监控等,需求根本不会有做完的那一天,每当一个新兴的行业产品出现可能就会出现相应的监控需求。 -
监控的技术栈广
做主机监控,监控linux时需要知道linux的进程管理内存管理网络管理,监控windows时需要了解windows的部分dll库,监控物理机时需要了解IPMI的原理。
做网络监控,需要知道snmp v2/v3,snmp trap等网络监控协议,还需要知道ospf、nat、链路聚合、网络拓扑等基础的网络知识。
还有存储数据库java应用和某些特定的应用,像监控邮件exchange的各个队列信息需要在windows的性能监视器里配置并在服务计数器里面采集。
就不一一列举了,只是想说明采集的方式方法五花八门。 -
监控系统的维护难度高
因为像上面说的它的需求繁杂,导致了它的需求定制化程度高,每个大公司都有自己的监控系统,可是它却很难做成通用化产品化去输出到其它公司,并且本身的维护也是较为困难,因为它涉及的东西太多,就比如说监控系统升级的维护窗口时间,白天要办公不行,晚上一些重要的业务系统版本发布也不能冲突,深夜一般是邮件归档和跑P任务的时间,也不好轻易去发版,左右为难。
-
监控对象范围广
- 发展的方向
- 个人觉得,未来的监控一定是会趋于一套标准,每个被监控的软件都需要用标准的方式自己提供或暴露相关的指标,这样才能有较好的可持续发展性和通用性,而不是现在的写一大堆五花八门采集程序去做第三方采集。
关于WeCube-plugins-prometheus的思考
-
为什么不从头写一个?
就像上面说的监控的需求多样化且不好通用化,开发的成本较高且需求方向不明确,所以较难去从头写一套,业内较成功的zabbix和open-falcon都是发展多年且都有各自特色的监控产品,zabbix的生态丰富,open-falcon 的分布式设计支持高并发等,wecube的目的并不是要与这些优秀的软件竞争,而是认清自身的定位是一套轻量级可快速部署的监控产品,并能作为插件在wecube中与CMDB等兄弟系统互动。 -
为什么要选Prometheus来封装
- Prometheus的设计个人觉得就是未来监控软件的方向,它与众不同的采用pull的方式,让各监控对象自己暴露要被监控的指标,它只需要用http请求去获取对象的指标,这样做的好处在于它定了一个方式,想被监控的软件一个个通过这个方式加入到这个生态里,一下子就能打造一个标准,有了标准化后产品才能更好的持续发展,所以Prometheus显得特别轻。
- 重量级的东西,向来一开始使用困难但后期轻松,因为它考虑到了方方面面,而轻量级的东西,一般都是入手比较方便,但后期维护却显得吃力,因为它舍弃了很多东西,Prometheus就是较轻的那种。如果企业要使用的话规模大了管理就成问题了,它的配置都基于yaml文件手动配置,那几乎是不太能给普通用户操作的,管理员用用还可以。而且它没接入数据库去管理这些告警的配置,想查看个历史告警什么的都比较难。另一方面就是视图,Prometheus的PromQL的功能强大,可支持多种多样的视图数据查询。或许大家会觉得Prometheus+Grafana这样的黄金搭档不好吗,个人觉得Grafana是开源视图中做的最好的了,无论是它的UI还是插件化设计,都是顶级的,它也很好的支持Prometheus的PromQL查询展示,但因为它已经是一套很完善的软件了,想要集成进来是较困难的,而且一些定制化的需求也是较难在上面实现,所以我们自己用echart做了视图展示,并支持一些较企业化的需求,比如说快速搜索查看各类型对象的基本指标视图,支持应用资源视图等,也支持类似于Grafana那样配置的自定义视图。
-
和WeCube有什么关系
- WeCube-plugins-prometheus是wecube里监控插件的最佳实践,它可以独立于WeCube自己运行,也可以注册到WeCube里通过WeCube与各其它系统交互,或许会问为什么不直接去对接各个依赖系统呢,可以看一下之前我写的关于WeCube的文章。
能做什么
-
视图管理
- 支持常用的监控对象类型的指标视图展示
- 支持指标管理
- 支持自定义视图可拖拽拉伸配置各种dashboard
- 后续会支持应用的视图展示,可直观的展示不同层面的资源情况
-
告警管理
- 支持对象注册管理
- 支持对象组管理
- 支持对象和组的告警配置
- 支持历史告警
- 支持未恢复告警视图
结尾
WeCube-plugins-prometheus监控插件或许功能或设计方面和其它监控系统对比起来没有多牛逼的地方,但我觉得它的特点就是小而全,部署方便、使用方便、性能可靠,好用的才是最好的。