一种同步Prometheus告警数据的方法、系统、设备及存储介质技术方案

技术编号:38078841 阅读:20 留言:0更新日期:2023-07-06 08:46
本发明专利技术公开了一种同步Prometheus告警数据的方法、系统、设备及存储介质,属于数据库同步技术领域,解决如何高效地管理和存储告警历史数据的技术问题,方法为:将来自Prometheus的webhook推送的和主动从http接口拉取的同步服务数据进行处理,数据处理之后根据处理的结果选择是否新增或更新告警数据到MySQL中,在新增或更新过程中使用内存缓存和Redis做二级缓存,减少新增或更新过程中对MySQL的压力。本发明专利技术基于既有的MySQL和Redis组件同步Prometheus告警历史同步方案,解决了Prometheus告警数据聚合、排序、分页展示的问题。该方案不用引入新的组件,可分布式部署,分布式情况下,无需考虑数据一致性问题,架构简洁,易于维护。易于维护。易于维护。

【技术实现步骤摘要】
一种同步Prometheus告警数据的方法、系统、设备及存储介质


[0001]本专利技术涉及数据库同步
,更具体地说,它涉及一种同步Prometheus告警数据的方法、系统、设备及存储介质。

技术介绍

[0002]在现代复杂的网络系统中,监控和告警是必不可少的环节。Prometheus作为一款流行的开源监控工具,其提供了丰富的告警功能,可以通过AlertManager管理告警规则,并及时通知维护人员。
[0003]然而,在大规模分布式系统中,Prometheus监控的指标数量非常庞大,每天产生的告警信息也相应较多,虽然其自身提供了强大的数据存储和查询能力(PromQL),但是面对灵活多变的业务需求,如对多个监控指标历史数据进行聚合排序、分页查询时,使用PromQL将很难实现,因此应对灵活业务需求,如何高效地管理和存储告警历史数据成为了一个重要的问题。目前,市面上已有一些解决方案,例如将告警历史数据存储在Elasticsearch或者InfluxDB中,但是这些方案都需要单独部署新的数据库或者使用第三方组件,增加了系统的复杂度和维护本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种同步Prometheus告警数据的方法,其特征在于,将来自Prometheus的webhook推送的和主动从http接口拉取的同步服务数据进行处理,数据处理之后根据处理的结果选择是否新增或更新告警数据到MySQL中,在新增或更新过程中使用内存缓存和Redis做二级缓存,减少新增或更新过程中对MySQL的压力。2.根据权利要求1所述的一种同步Prometheus告警数据的方法,其特征在于,具体包括以下步骤:步骤S1.配置webhook地址,为所有Prometheus监控项追加webhook地址,当告警触发时,Prometheus会往同步服务的接口推送告警数据;步骤S2.解析告警数据,同步服务在接收到webhook的或者主动拉取的告警数据时,从数据中解析出相关labels、startsAt、endsAt和status关键信息;labels可以确定某个监控项,startsAt可以确定该监控项的某次告警,endsAt是一个未来的时间,在endsAt之后没有新的告警时,表示该监控项已经恢复正常;步骤S3.告警数据存储,为了方便查询与存储,将步骤S2解析出的labels数据进排序之后取其哈希值labels_hash,使用labels_hash和startsAt作为查询条件从数据库中查询,未查询到则表示是新触发的警告,将lablels_hash、startsAt、endsAt、status作为一条新纪录插入MySQL数据库;查询到则表示这是正在持续中的警告,判断endsAt如果大于旧值,则更新记录中的endsAt和status信息;否则不作处理;步骤S4.缓存策略,为了减少DB的压力,在步骤S3的过程做二级缓存,即本地内存、Redis分别是为L1、L2缓存;步骤S5.对告警数据进行分布式部署。3.根据权利要求2所述的一种同步Prometheus告警数据的方法,其特征在于,在步骤S4中包括步骤S41:缓存的查询过程,缓存均未命中,将labels_hash+startsAt作为key,endsAt作为value写入缓存,写入顺序为:L1、L2;L1缓存命中,当endsAt>value时,更新数据库对应记录中的endsAt字段,成功之后依次更新L1、L2缓存,其他情况直接结束流程;L2缓存命中,当endsAt>value时,更新数据库对应记录中的endsAt字段,成功之后依次更新L1、L2缓存,其他情况直接结束流程。4.根据权利要求3所述的一种同步Prometheus告警数据的方法,其特征在于,在步骤S4中包括步骤S42:缓存的过期处理,L1缓存过期处理,同步服务定时遍历内存缓存key,当value小于当前时间时,表示改缓存已经失效,可以清除;L2缓存过期处理,通过设置expireAt参数,值为endsAt,让Redis自动管理缓存的过期与清理。5.根据权利要求4所述的一种同步Prometheus告警数据的方法,其特征在于,在步骤S4中包括步骤S43:异常情况下缓存一致性的处理,

.当数据库操作成功之后,在写入L1缓存之前,系统崩溃恢复或重启之后L1缓存已经清空,此时L2缓存还是旧值;由于在缓存命中时需要,判断缓存value<endsAt,而endsAt...

【专利技术属性】
技术研发人员:韦腾赟赵凯麟尹大力蓝熙
申请(专利权)人:中国—东盟信息港股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1