一种基于Prometheus的云业务监控平台
摘要:随着云计算业务规模的逐步扩大,对云服务运维要求快速提升,当前云业务只能实现单个租户监控,无法实现集中监控;为方便运维人员实时掌握云资源的性能、先于客户发现预判云服务故障并快速处理,本文研究基于普罗米修斯系统搭建云原生监控平台,部署服务器用来存储、查询时间序列数据,安装黑盒监控组件,通过多种方式对云网络进行探测监控并返回指标数据,通过告警管理器组件进行告警阈值监测通知,支持电子邮件、微信等。
关键词:云业务监控;普罗米修斯系统;时序数据库;黑盒探针;告警管理器
1引言
基于普罗米修斯的云业务监控平台,通过编写脚本将需要监控的云服务项快速转化为yml格式或json格式的配置文件,程序外部通过探针的方法模拟访问,获取程序的响应指标来监控程序状态,支持ssh、http、tcp等协议监控,支持对云原生服务k8s等监控。基于普罗米修斯的云业务监控平台,具有如下功能:(1)批量导入监控项:基于开源的普罗米修斯及相关组件部署,自开发批量生成监控项配置工具的Web软件平台。(2)探针拨测:通过主动拨测探针及白盒探针获取被监控对象的可用性。在程序外部通过探针的方法模拟访问,获取程序的响应指标来监控程序状态,如请求处理时间、状态码等。在实际生产环境中,往往会将两种监控方式混合使用,以实现对应用的全方位监控。(3)告警派发:在一段时间内通过重复测量而获得的观测值的集合将这些观测值绘制于图形之上,它会有一个数据轴和一个时间轴,服务器指标数据、应用程序性能监控数据、网络数据等。采集的数据存入时序数据库,普罗米修斯系统判定数据是否达告警阈值,达到告警阈值后如在设定时长内未恢复则发送给告警管理器进行告警派发。(4)监控模式分析:监控主机的资源用量等运行数据。这些都是支持业务和服务的基础设施,通过白盒能够了解其内部的实际运行状态,通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化。而从完整的全
局监控逻辑的角度,除了大量的应用白盒监控以外,还应该添加适当的黑盒监控。黑盒监控即以用户的身份测试服务的外部可见性,常见的黑盒监控包括HTTP探针、TCP探针等用于检测站点或者服务的可访问性,以及访问效率等。
黑盒监控以快速发现客户云服务故障为目的。通过黑盒监控持续跟踪客户云主机远程服务、web应用等各项响应指标。通过部署普罗米修斯服务以存储、查询数据,黑盒探针基于多种协议探针对云服务进行探测并返回metric格式数据,告警管理器进行告警阈值监测通知。使用python编程快速将批量监控目标服务转化为yml格式配置文件,进行目标站点探测的快速配置。
白盒监控以预判、主动发现为导向进行重要客户云服务保障。经过客户许可在客户服务器安装探针,旨在通过分析云服务器详细指标预判故障。详细指标含CPU、内存、硬盘、网络使用率、容器运行状态,数据库等应用的运行数据。目标为通过设定阈值保障应用运行在合理的负载区间,超出合理负载区间远程通知售后人员或客户。
2 监测告警系统技术介绍 A、系统架构及工作流程
普罗米修斯服务器定期从活跃的目标主机上拉取监控指标数据,采用时间序列数据库TSDB保存采集到的监控数据,安装系统监控模块接入普罗米修斯数据源,把监控数据以图形化形式展示,通过推告警信息到告警管理器,配置报警接收方,发送报警到邮件。
B、黑盒探针
黑盒探针是普罗米修斯官方提供的探针之一,可以提供多种协议的监控数据采集,可用于以下监测:(1)HTTP测试:定义请求头文件信息、判断HTTP的状态/头部/主体内容;(2)TCP测试:业务组件端口状态监听、应用层协议定义与监听;(3)ICMP测试:主机探活机制;(4)POST测试:接口联通性;(5)SSL证书过期时间。
C、时序数据库TSDB
普罗米修斯采用TSDB本地存储,核心为块(Block)和WAL(Write-Ahead Logging,预写日志)。TSDB将存储的监控数据按照时间分隔成块,默认最小的块保存2小时监控数据,TSDB会将小的块合并成大的块,不仅可以减少数据存储,还可以减少内存中的块个数,便于对数据进行检索。块包含4个主要部分:chunks、index、meta.json、tombstones。
普罗米修斯为了防止丢失暂存在内存中的还未被写入磁盘的监控数据,引入了预写日志机制。预写日志被分割成默认大小为128MB的文件段,文件段以数字命名。预写日志的写入单位是页,每页的大小为32KB,每个段文件的大小必须是页的大小的整数倍。如果预写日志一次性写入的页数超过一个段的空闲页数,就会创建一个新的文件段来保存这些页,从而确保一次性写入的页不会跨段存储。
普罗米修斯会将周期性采集的监控数据通过操作接口添加到头部数据块中,但这些数据没有被持久化,TSDB通过预写日志将提交的数据先保存到磁盘中,在TSDB宕机重启后,会首先启动多协程读取预写日志,从而恢复之前的状态。
D、告警管理器
告警管理器主要用于接收普罗米修斯发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行分组、静默、抑制等,是普罗米修斯生态中非常重要的一个核心模块。通过分组将类似性质的警报分类为单个通知。当许多系统同时发生故障并且可能同时触发数百到数千个警报时,这在较大的中断期间尤其有用。当发生网络分区故障时,集群中正在运行数十个或数百个服务实例。有一半服务实例无法再访问数据库。普罗米修斯中的警报规则被配置为在每个服务实例无法与数据库通信时发送警报。因此,数百个警报被发送到告警管理器。如果某些其他警报已经触发,则抑制某些警报的通知。
3 监测告警系统执行流程
监测告警通过主动拨测探针,获取被监控对象的多种协议等服务的可用性;通过被监控对象的探针获取CPU、内存、通信网络、数据库组件健康度等考核指标;直接对k8s集群进行全向指标采集。采集后的数据直接存入时序数据库,普罗米修斯系统判定数据是否达告警阈值,达到告警阈值后,假如在挂起时长内尚
未恢复,系统则发送给告警管理器。告警管理器汇集告警后,进行简单的预判后再将告警派发至邮箱、微信或短信。
图1:监测告警系统流程图 4 监测告警系统功能实现
本系统可以单节点部署,也可以分布式部署;可以将客户云服务的监控项批量导入至配置;可以提供丰富的监控类型,主动监控的协议如ssh、http、icmp、dns、smtp、tcp等,客户云主机安装探针可以对云主机本身、中间件mysql等实现质量指标的监控。发现客户云服务故障后系统发送邮件通知运维人员,运维人员通知客户并同步进行处理,提升云服务满意度。使用python脚本将上千的监控项自动生成配置文件供平台使用。
通过时序数据库设计可以满足应用系统的业务需求,精确表达数据间的关系。数据库的主要实体有用户、被监控的主机、监测代理、监控项、触发器、告警和监测任务。对以上数据库实体进行分别细项配置,设置告警规则即可实现对云业务实施告警触发,运维即可及时有效发现故障点,进行故障排除、处理。
5 结束语
本文提出的云平台,利用开源普罗米修斯系统、探针、告警管理器、系统监控模块搭建,使用APACHE2.0开源协议。目前已投入使用,对资源池内云主机、云服务项进行监控,本方案具有成本低、效率高等优势,极大减少运维人力投入、资金的投入,为客户提供更加方便、周到的监控服务,及时有效发现客户云业务故障,避免损失。
参考文献
[1]刘小磊; 程伟华; 章路进. 基于Prometheus的云计算资源全链路监控系统[J]. 电子设计工程. 2023(01).
[2]谢超群. 基于Prometheus的容器云监控平台应用研究[J]. 西安文理学院学报(自然科学版). 2022(10).
[3]许瑜超; 李桂炎; 周治; 郑尔. 合运维网管平台[J]. 广播与电视技术. 2022(08).基于开源的Prometheus开发广电网络综