Open-Monitor分布式监控插件

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

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

  • Gitee地址:https://gitee.com/WeBank/open-monitor

  • Github地址:https://github.com/WeBankPartners/open-monitor

功能演示

引言

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

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

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

系统架构

整体架构图如下:

Open-Monitor分布式监控插件_第1张图片

简介

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安装文档

文档目录

  • Open-Monitor 监控插件
  • 用PromQL表示的基础指标
  • Open-Monitor Compile Guide
  • Open-Monitor 本地开发环境配置
  • Docker安装指引
  • docker-compose安装指引
  • Git安装指引
  • Prometheus Agent 安装手册
  • Open-Monitor安装指引
  • Open-Monitor压力测试报告
  • Prometheus 安装
  • Remote Storage Guide
  • Open-Monitor 用户手册

用户手册

主菜单介绍

Open-Monitor分布式监控插件_第2张图片
Monitor的功能总体分为: 视图、告警配置、告警展示。下面详细介绍每个菜单下的每个功能。

视图

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

对象视图

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

Open-Monitor分布式监控插件_第5张图片12、可选择视图展示的时间区间
13、可选择视图展示的日期区间
14、可选择视图聚合的方式,聚合是指把多个点合成一个点来减少显示点数,加快图表显示
15、点击后可在图表上拖拉图表区间
16、点击后可恢复图表区间

指标配置

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

自定义视图

自定义视图提供可让用户自行配置图表主页的编辑界面,可拖拽图表大小,可配置各个图表内容
Open-Monitor分布式监控插件_第7张图片1、新增一个视图模板
2、可设置某个自定义视图为首页
3、查看自定义视图,进入编辑页面
4、删除视图
5、设置为首页的视图会有个星星标记

Open-Monitor分布式监控插件_第8张图片1、可修改图表的标题 2、点击可进入图表配置界面
3、可删除该图表
4、新增图表
5、保存修改
6、返回到自定义视图选择页面
7、可拖拉该图表位置

Open-Monitor分布式监控插件_第9张图片1、图表的曲线配置
2、图表的标题和单位配置
3、可根据ip或主机名实例名来模糊搜索监控对象
4、可选择该监控对象上已配置好的指标名
5、点确定后可增加该对象指标的曲线到上面的图表上
6、可删除已增加的对象指标
7、保存配置
8、返回到上一个页面

告警配置

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

监控对象管理

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

对象组管理

Open-Monitor分布式监控插件_第12张图片1、可跳转到对象管理页面,查看该组内的对象,可在那增加删除成员对象
2、可跳转到阀值页面给组配置阀值策略,会对该组内的所有对象都生效
3、可编辑组的名称和描述
4、可删除该组
5、可跳转到日志告警页面给组配置日志告警,会对该组内的所有对象都生效

阀值配置

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

日志告警配置

Open-Monitor分布式监控插件_第15张图片1、可选择是对象还是组
2、可模糊搜索对象或组
3、可新增日志告警配置
4、新增该日志路径下的关键字告警
5、编辑该告警配置
6、删除配置
Open-Monitor分布式监控插件_第16张图片7、日志里的关键字
8、关键字出现条件
9、关键字出现次数
10、持续异常时间数值
11、时间单位
12、告警级别,有高中低三个级别

告警视图

Open-Monitor分布式监控插件_第17张图片1、页面会每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监控插件特点就是小而全,部署方便、使用方便、性能可靠,好用的才是最好的

你可能感兴趣的:(性能调优,网络技术,服务器架构)