嘉为蓝鲸告警中心:支撑大型证券公司高效处理高并发告警事件
直达原文:嘉为蓝鲸告警中心:支撑大型证券公司高效处理高并发告警事件
在国产化、数字化、云化的背景下,运维对象日趋复杂,金融 IT 技术架构因各类复杂系统的运行,无法避免会出现故障或异常,而通过合适的监测机制产生的告警可以便于人员对系统状态进行实时监控,从而及时处理错误,避免或减小由此可能导致的严重后果。
然而,随着业务规模的扩大和系统复杂性的提高,告警的数量也在急剧上升,原本的告警处理流程和人员已经无法满足实际需求。在高峰期,告警中心每分钟甚至要处理上百个告警,这造成了处理不及时的现象,严重的时候,延迟的告警可能会演变为真正的系统问题,对公司业务造成影响。
针对于这个问题,需要告警中心有丰富的告警收敛方式和合理的技术架构,以应对告警数量的快速增长,确保我们能够及时、准确地处理每一个告警,保障系统的稳定运行。
业务场景
某大型证券公司经过多年的发展,已经建设了操作系统、硬件、数据库、网络设备、业务监控以及其他日志监控。但因为告警范围广、告警数量多,客户原有告警系统无法处理告警峰值,导致原有统一告警中心系统宕机,无法满足客户持续性告警及运维的需求。
为持续满足科技部门监控运维需求,解决多告警源接入、告警合理收敛、告警峰值数量多、随时处理告警、告警中心自监控等业务场景,需要重新建设告警中心满足。
分析痛点
该大型证券公司的业务形态和建设的系统架构,会导致在实际业务场景中存在以下痛点:
监控工具分散
基础架构监控、日志监控、网络设备监控、数据库监控、网络拨测、业务 SQL 查询等各种监控场景分散于不同监控工具,导致各监控工具分别通知和闭环告警,不同角色需要关注多个监控工具,很难做到统一告警管理。
告警峰值带来的性能问题
基于网络拨测、业务 SQL 查询监控需求,导致告警数量多且容易出现并发,客户每天告警量在百万级别,且并发严重。
告警没有合理收敛
告警数量多且没有有效收敛,导致大量无效告警通知,带来的人员精力分散以及处理效率低。
无法随时处理告警
不是所有运维人员都是 ECC 的 7*24 小时值班,导致告警产生后无法随时进行处理,尤其在告警风暴时候需要进行批量屏蔽。
告警中心没有自监控
告警产生以后,告警的全生命周期管理都在告警中心实现,如果告警中心在接入或者通知环节出现异常,则无法及时获取告警信息,导致无法及时处理。
解决方案
结合客户的业务形态、组织架构以及管理需求,建设告警中心,实现统一告警接入,并建设移动端功能,随时随地处理告警信息。
![](https://static001.geekbang.org/infoq/ff/ff3100394a065055e4cf9061590d83a2.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
提供多种告警接入方式,实现多告警源接入
监控系统过多且零散,针对不同的监控系统,需要提供多种告警源接入方式进行告警接入,以实现告警数据的统一。包括 kafka、API 接入以及插件接入等多种告警源接入方式。
kafka 推送:针对有推送功能的监控系统,可在告警产生后,推送至 kafka 队列,告警中心定时从 kafka 队列中获取告警信息,实现告警集中推送。
API 接入:针对提供 api 的监控平台,可以通过 api 的推送和拉取两种方式,接入到告警中心。
插件接入:针对鲸眼监控中心自身产生的告警,可以通过内置插件接入告警中心,减少告警接入的时间延误。
告警架构支持告警高并发
在告警中心技术架构中,我们采用了高并发能力的设计以应对大规模的告警流量。
其次,我们利用消息队列进行异步处理。当告警中心接收到大量的告警请求时,会先将这些请求放入到消息队列中,此后由专门的处理任务异步地从队列中读取并处理,从而保证了系统的流畅运行。
最后,我们还根据不同的类型的数据,采用了不同类型的数据库,且对数据库设计进行优化。对于数据量大的告警事件,通过 ES 进行存储,且利用高效的索引、分表分库和读写分离等技术,大大减少数据库的读写压力,提高并发处理能力。
通过以上设计,告警中心的技术架构能够有效地支持高并发的告警处理,即使在面对大量的告警信息时,也能确保系统的稳定运行和及时响应。
![](https://static001.geekbang.org/infoq/ce/cef83f6e2d7c7fecd7495d5f979e173e.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
丰富的告警收敛策略,尽可能减少无效告警
为适配各种业务场景的收敛,提供了丰富且灵活的告警收敛规则。这些规则能够对源自同一事件或者故障的多个告警进行整合,减少了冗余的告警信息,极大地提升了告警的处理效率。
可以根据告警信息中的任意字段写匹配条件并进行条件组合,可根据各种业务场景组合使用。通过告警的收敛,能够避免因大量重复告警而导致的处理压力和判断困扰。
移动端实现随时处理告警
告警产生后,不仅限于 PC 端,还可以通过移动端进行通知、查看、处理和屏蔽。
告警通知:通过企微的消息推送或者群机器人进行告警信息通知,可随时获知告警;
告警查看:移动端对告警详情、告警处理记录、告警关联信息进行查看,可以随时关注告警;
告警处理:同步 PC 端处理,可以通过移动端进行告警的流转和闭环,且可以批量处理,增加处理效率;
告警屏蔽:针对告警风暴场景,可以在移动端实现屏蔽策略创建,减少过多的无效通知;
多用户端登录:针对不同客户的使用习惯,PC 端企微也可进行移动端查看,可减少 PC 端的登录验证,提升工作效率。
告警自监控,保证告警正常流转
通过用 Prometheus 对告警中心各个核心组件进行监控,并将监控指标通过 grafana 进行仪表盘展示,对告警中心健康状态一目了然。
![](https://static001.geekbang.org/infoq/24/246ae90fc7cea862f72ed08ad5030580.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
监控的组件和监控指标如下:
![](https://static001.geekbang.org/infoq/39/39f81fe838cde6037270c5eb83ea4c52.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
成果展示
告警源接入
![](https://static001.geekbang.org/infoq/72/7229111811488f3701a40b98ace1a171.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
告警收敛策略规则
![](https://static001.geekbang.org/infoq/70/7063d97d2499655cd0d5b93c82aa7d9f.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
告警移动端处理
移动端通知
![](https://static001.geekbang.org/infoq/61/6163c54d5d14de2c40eed010e48b1952.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
![](https://static001.geekbang.org/infoq/e1/e11760ceda62440ae0cd5f21a56a4ed4.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
查看告警和处理
![](https://static001.geekbang.org/infoq/65/655be315af97e93477abf804b932ede5.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
策略屏蔽创建
![](https://static001.geekbang.org/infoq/5d/5d211f74d2864243db0779e114996341.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
PC 端查看移动端适配效果
![](https://static001.geekbang.org/infoq/dc/dc88f0ddb1cb1db9da25adcfdac3e028.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
![](https://static001.geekbang.org/infoq/bb/bbb6a5c8f72ef3b3bdd2df51134a2d98.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
告警自监控
自监控查看信息
![](https://static001.geekbang.org/infoq/58/589ef7bfd187a35179ad3d6c13509c7a.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
告警压测报告
以下为 6 次不同参数的压测数据,worker 为更新告警状态的进程数。
![](https://static001.geekbang.org/infoq/67/677e39b741cfdf70a298e72fb5486aa5.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
建设成效
实现了多监控系统的告警进行统一生命周期管理,实现告警 100%管理;
告警量并发场景支持。日均告警 100w-200w,告警峰值每分钟超 1000+,告警接入到通知时间小于 1 分钟,告警查询和详情查看页面加载时间约 3s;
日均告警由 100w+收敛至有效告警 1000+,收敛率超过 99%;
告警移动端辅助告警处理,告警处理效率提高 16%;
告警自监控,通过告警接入和通知节点的监控,减少关键环节的信息断点,实现持续运行。
场景适用性
嘉为蓝鲸告警中心适用于告警生命周期管理的场景,结合企业的业务形态和管理需求,总结出适用的客户类型和需求场景:
监控系统较多,没有集中管理告警的系统;
有业务拨测监控和网络拨测监控需求的;
告警数据量大、并发量大,且对时效要求高;
需要通过移动端随时处理告警信息;
业务连续性要求较高,需要对监控、告警系统进行自监控。
评论