一种基于Zabbix和Prometheus的监控系统和方法与流程

文档序号:20999757发布日期:2020-06-05 22:33阅读:1880来源:国知局
一种基于Zabbix和Prometheus的监控系统和方法与流程

本发明涉及监控系统技术领域,尤其涉及一种基于zabbix和prometheus的监控系统和方法。



背景技术:

当前的互联网技术已在社会的各个领域具有举足轻重的地位和影响力,而监控是当前互联网企业计算机系统中一个重要的方面。目前的互联网企业往往依靠的是一套或多套自主研发的业务系统来开展各种商业行为,监控这些系统的稳定运行也成为互联网公司的重中之重。

目前市面上存在着很多开源的监控软件,如:zabbix、nagios、prometheus等,很多企业会采用其中一种方式进行监控,但是通常采用一种监控的方式并不能实现整个业务系统各个层次的监控行为,单一监控解决方案已经不能满足随着业务的快速发展互联网企业对监控软件的性能、扩展性的特定的需求;同时采用两种及两种以上的监控软件进行监控又会出现难以管理和监控预警接收混乱的问题,以及监控预警发送后的处理和事后归档的问题。

本发明是提供一种基于zabbix和prometheus的监控系统,集成主流开源监控系统zabbix和prometheus,进行统一管理、统一预警、按预警相关人员进行认领或分发、处理完成后再进行归档和数据分析。



技术实现要素:

本发明针对的是目前技术发展的市场需求和达成目标不匹配的问题,提供一种基于zabbix和prometheus的监控系统和方法。

我们的方法是将zabbix的报警消息通过统一消息转换器转换成prometheus能够识别的消息格式,再通过alertmanager组件分别向预警接收媒介和mysql数据库发送预警信息,预警接收媒介通过统一预警消息分发器传播,mysql数据库通过预警数据采集器传播,预警级别和消息分组规则标准化将两者消息统一,最后通过预警数据采集器将消息归档到数据库以进行统一管理、分析及展示。

zabbix为较为原始的一种网络监控系统。

统一消息转换器,其用于接收来自zabbix的消息。

prometheus为较新的一种网络监控系统。

alertmanager组件,其用于对prometheus生态内的预警管理系统。

预警数据采集器,其用于接收alertmanager的消息。

mysql数据库,其用于存储预警数据采集器的数据。

统一预警消息分发器,其用于接收alertmanager的消息。

预警信息管理平台,其用于展示预警信息的网络界面。

本发明至少包括以下有益效果:

将原始的单套zabbix监控系统业务层面的监控,采用prometheus监控系统通过统一消息转换器将两者结合为一整套监控系统,实现了一种监控系统的不足以解决监控的问题,同时解决了两种监控系统很难管理,标准无法制定。另一方面,历史预警无法追溯是目前prometheus存在的另一个关键性问题,对于当年的技术领域而言,有必要采取技术手段对预警实施追溯的必要技术特征。

本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明中所述zabbix和prometheus的监控系统结构框图。

具体实施方式

本次发明专利是运行在多台服务器上或多个容器内的一整套监控系统。

在原有zabbix监控系统基础之上,自制一个用于发送zabbix的报警消息的预警插件到统一消息转化器中。

zabbix系统内部配置好所有监控条目的预警级别,以符合整体级别划分标准。

所述预警级别设置分为五层,包括通知、警告、故障、紧急故障及其他。

zabbix系统内部配置预警策略,使所有预警消息发送到自制的预警插件。

预警插件将zabbix预警消息按照原有格式转发给统一消息转换器。

统一消息转换器为zabbix和alertmanager的连接体。

由zabbix预警插件发送一个自定义的json模板消息。

所述的模板消息需要包含鉴别标识,即预警或恢复。

消息体列举如下:

其中需要包含鉴别该消息是预警还是恢复的标识,这里为“status”,当收到恢复消息时“status”的内容为“resolved”,以便于统一消息转换器的判断。

统一消息转换器将消息转换成prometheus可以识别的告警消息格式;先要考虑到prometheus的分组策略,这里将“alertname”作为分组依据,将内容固定;其次,通过之前的预警等级划分标准,将“severity”转换成统一的标准分级,其他基本信息转换成prometheus的lable。

特别说明的是“status”,当“status”为恢复时,需要将prometheus的endsat项设置为当前的时间的rfc3339格式,prometheus通过endsat判断预警是否恢复。

以上过程都需要根据系统整体标准规范,向消息内注入分组及消息类型信息等附加信息,如有特殊业务需求可根据需求添加其他标识性内容。

将消息发送给prometheus的预警管理系统alertmanager的api接口进行统一处理。之后该消息会按照alertmanager的策略进行后面的处理流程。

根据系统整体标准规范,制定符合标准的报警策略,包括:预警级别、按类分组,如有特殊业务需求可根据需求添加其他标识性内容。

触发预警后将发往alertmanager进行统一处理。

对alertmanager组件内部增加对每个新预警的uuid唯一标识符,用来在后面的系统中对预警的重复性判断,这个uuid是基于预警的labels和startsat属性进行hash运算得到的。

修改alertmanager的源码,新增为每个预警增加唯一标识码。

通过alertmanager的webhook(一种外接的功能调用接口)将经过处理的预警消息发送到预警数据采集器和统一预警消息分发器。

预警数据采集器接收来自alertmanager的消息,将预警消息解析拆分成单条带唯一标识码的数据库条目插入mysql数据库,如果数据库中已经有该条消息将不做处理。

当再次接收到带有该唯一标识码的预警消息切是恢复状态时,更新数据库将该消息标记为已恢复状态。

mysql数据库存储来自“预警数据采集器”的预警数据。

存储数据字段涵盖有:预警id、预警名、主机名、ip地址、预警信息、产品类、预警级别、预警时间、预警状态、预警标签、预警唯一标识码、认领状态、认领人、认领时间、关闭时间、完成时间。

统一预警消息分发器接收来自alertmanager的消息,根据不同的告警级别和分组信息,将消息以自定义模板的方式发送到e-mail、钉钉、短信、电话。

预警信息管理平台ui是网页形式的预警信息管理系统,其功能是让技术人员通过自己的账号登陆,认领预警信息并在其处理后以评论的形式标注处理过程和处理结果;查找和筛选历史预警信息。

其实现方式分为前后端两部分,前端采用主流前端框架vue开发,后端采用pythonweb框架flask编写。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1