Open-Monitor分布式监控插件

Open-monitor是一套基于Prometheus的分布式监控平台,适用于wecube,WeCube通过监控插件来对资源以及应用的监控及告警。此插件底层引用Prometheus,上层封装了对Prometheus的配置管理和图表展示。

后端技术选型为Go + Gin + Xorm, 前端技术选型为Vue + ECharts。

功能演示

引言

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。

Prometheus 监控插件包括几个组成部分: Prometheus Server、Consul、Alert Manager、监控应用程序。

Open-Monitor 无侵入式地封装了Prometheus的功能,并提供更好的告警管理和图表展示,以及与其它系统的交互等

系统架构

整体架构图如下:

简介

WeCube通过监控插件来对资源以及应用的监控及告警。

此插件底层引用Prometheus,上层Monitor封装了对Prometheus的配置管理和图表展示,Monitor后端技术选型为Go + Gin + Xorm, 前端技术选型为Vue + ECharts。

Monitor具备以下特点:

  • 管理监控对象

    支持对象的注册和注销,并在对接了CMDB的情况下可主动从CMDB同步监控对象
    支持监控对象的组管理,可对组进行告警配置

  • 友好的视图

    默认提供主要监控对象类型的指标视图,包括主机、mysql、redis、tomcat等
    提供Prometheus原生PromQL查询与查询指标配置保存
    提供自定义视图的功能

  • 管理告警

    提供对Prometheus告警规则配置的持久化与下发
    提供未恢复告警面板展示与历史告警
    提供对象告警配置与组告警配置
    提供告警接收方管理

主要功能

监控插件包括以下功能:

  • agent管理: 注册、启动、停止;
  • 数据管理: 提供数据采集配置, 数据查询等功能;
  • 告警管理: 提供阈值配置、日志监控、告警触发等功能;
  • 视图管理: 提供图形配置和自定义视图功能;

快速入门

Open-Monitor采用容器化部署。

如何编译,请查看以下文档 Open-Monitor编译文档

如何安装, 请查看以下文档 Open-Monitor部署文档

agent安装文档 Prometheus-agent安装文档

文档目录

用户手册

主菜单介绍

主页面
Monitor的功能总体分为: 视图、告警配置、告警展示。下面详细介绍每个菜单下的每个功能。

视图

视图包括 对象视图、指标配置、自定义视图。

对象视图

对象视图可以快速地展示各类型监控对象的基础监控指标,包括主机、Mysql、Redis、Tomcat等 对象视图菜单
对象视图页面01
1、可根据ip或主机名实例名来模糊搜索监控对象
2、可选择视图展示的时间区间
3、可选择视图展示的日期区间
4、可选择定时刷新的时间间隔
5、可快速跳转到该对象告警配置页面
6、可切换中英文显示
7、可切换视图页查看主机磁盘指标视图
8、可切换视图页查看主机网络指标视图
9、可放大图表
10、点击后可在图表上拖拉图表区间
11、点击后可恢复图表区间

对象视图页面0212、可选择视图展示的时间区间
13、可选择视图展示的日期区间
14、可选择视图聚合的方式,聚合是指把多个点合成一个点来减少显示点数,加快图表显示
15、点击后可在图表上拖拉图表区间
16、点击后可恢复图表区间

指标配置

指标配置可以配置监控指标名与Prometheus表达式的映射关系
指标配置页面011、可根据ip或主机名实例名来模糊搜索监控对象
2、可选择该监控对象上已配置好的指标名
3、可选择视图展示的时间区间
4、点击搜索可展示下面显示的表达式的查询图表,会把多个表达式的值放一个图表里
5、新增一个指标名
6、保存所做的修改
7、可直接改指标名
8、可选择该监控对象采集上来的基础Prometheus指标
9、可编辑表达式

自定义视图

自定义视图提供可让用户自行配置图表主页的编辑界面,可拖拽图表大小,可配置各个图表内容
自定义视图页面011、新增一个视图模板
2、可设置某个自定义视图为首页
3、查看自定义视图,进入编辑页面
4、删除视图
5、设置为首页的视图会有个星星标记

自定义视图页面021、可修改图表的标题 2、点击可进入图表配置界面
3、可删除该图表
4、新增图表
5、保存修改
6、返回到自定义视图选择页面
7、可拖拉该图表位置

自定义视图页面031、图表的曲线配置
2、图表的标题和单位配置
3、可根据ip或主机名实例名来模糊搜索监控对象
4、可选择该监控对象上已配置好的指标名
5、点确定后可增加该对象指标的曲线到上面的图表上
6、可删除已增加的对象指标
7、保存配置
8、返回到上一个页面

告警配置

告警配置提供对象管理、组管理、阀值配置、日志告警配置等功能

监控对象管理

对象管理页面011、监控对象管理
2、对象组管理
3、阀值配置管理
4、日志告警配置管理
5、可根据ip或主机名实例名来模糊搜索监控对象
6、新增告警对象 7、点击跳转到阀值配置页面
8、点击查看该对象历史告警
9、点击跳转到日志告警配置页面
对象管理页面02 10、选择监控对象类型
11、填入对象agent的ip
12、填入对象agent的端口

对象组管理

组管理页面011、可跳转到对象管理页面,查看该组内的对象,可在那增加删除成员对象
2、可跳转到阀值页面给组配置阀值策略,会对该组内的所有对象都生效
3、可编辑组的名称和描述
4、可删除该组
5、可跳转到日志告警页面给组配置日志告警,会对该组内的所有对象都生效

阀值配置

阀值配置页面011、可选择是对象还是组
2、可模糊搜索对象或组
3、组名,如果所选择是对象,会把它所属组的策略也给显示出来,但是不能修改组的策略
4、对象名
5、可以给对象增加阀值策略
6、编辑阀值策略
7、删除阀值策略
阀值配置页面028、可选择指标
9、选好指标后会自动带出已在指标配置上配置好的Prometheus表达式
10、填写通知内容
11、选择条件
12、填写阀值
13、持续异常时间数值
14、时间单位
15、告警级别,有高中低三个级别

日志告警配置

日志告警配置页面011、可选择是对象还是组
2、可模糊搜索对象或组
3、可新增日志告警配置
4、新增该日志路径下的关键字告警
5、编辑该告警配置
6、删除配置
日志告警配置页面027、日志里的关键字
8、关键字出现条件
9、关键字出现次数
10、持续异常时间数值
11、时间单位
12、告警级别,有高中低三个级别

告警视图

未恢复告警页面011、页面会每10秒刷新,此处显示上次刷新时间
2、该标签上的加号可点击给该页面的告警显示增加过滤条件
3、可手动删除某条告警
4、点击可展开告警详细信息

开发者文档

Open-Monitor本地环境搭建与开发
请参考本地开发环境配置文档 Open-Monitor本地环境配置文档

关于IT监控的思考

  • 监控是什么
    • 个人感觉就是对资源的监视和可控,它让计算机发挥了不会累的精神去帮人们做到持续地记录工作,让人们可以及时地查看资源的变化情况和发现问题。
  • IT监控的特点
    • 监控对象范围广
      从基础监控到应用监控甚至于到业务监控,每一个层面都有一大堆需要监控的对象,基础监控的主机网络存储数据库,应用监控的各种流行的中间件的状态监控,各种Java应用的监控等,需求根本不会有做完的那一天,每当一个新兴的行业产品出现可能就会出现相应的监控需求。
    • 监控的技术栈广
      做主机监控,监控linux时需要知道linux的进程管理内存管理网络管理,监控windows时需要了解windows的部分dll库,监控物理机时需要了解IPMI的原理。
      做网络监控,需要知道snmp v2/v3,snmp trap等网络监控协议,还需要知道ospf、nat、链路聚合、网络拓扑等基础的网络知识。
      还有存储数据库java应用和某些特定的应用,像监控邮件exchange的各个队列信息需要在windows的性能监视器里配置并在服务计数器里面采集。
      就不一一列举了,只是想说明采集的方式方法五花八门。
    • 监控系统的维护难度高
      因为像上面说的它的需求繁杂,导致了它的需求定制化程度高,每个大公司都有自己的监控系统,可是它却很难做成通用化产品化去输出到其它公司,并且本身的维护也是较为困难,因为它涉及的东西太多,就比如说监控系统升级的维护窗口时间,白天要办公不行,晚上一些重要的业务系统版本发布也不能冲突,深夜一般是邮件归档和跑P任务的时间,也不好轻易去发版,左右为难。
  • 发展的方向
    • 个人觉得,未来的监控一定是会趋于一套标准,每个被监控的软件都需要用标准的方式自己提供或暴露相关的指标,这样才能有较好的可持续发展性和通用性。

关于Open-monitor的思考

  • 为什么不从头写一个?
    就像上面说的监控的需求多样化且不好通用化,开发的成本较高且需求方向不明确,所以较难去从头写一套,业内较成功的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有什么关系
    • Open-monitor是wecube里监控插件的最佳实践,它可以独立于WeCube自己运行,也可以注册到WeCube里通过WeCube与各其它系统交互。

能做什么

  • 视图管理
    • 支持常用的监控对象类型的指标视图展示
    • 支持指标管理
    • 支持自定义视图可拖拽拉伸配置各种dashboard
    • 后续会支持应用的视图展示,可直观的展示不同层面的资源情况
  • 告警管理
    • 支持对象注册管理
    • 支持对象组管理
    • 支持对象和组的告警配置
    • 支持历史告警
    • 支持未恢复告警视图

结尾

Open-monitor监控插件特点就是小而全,部署方便、使用方便、性能可靠,好用的才是最好的

猜你喜欢

转载自blog.csdn.net/english0523/article/details/107953516