企业分享 - 益丰大药房监控升级之路

张望 2024年9月4日

益丰大药房

益丰大药房是全国大型药品零售连锁企业(中国沪市主板上市连锁药房),专注医药零售行业23载, 市值稳居国内上市连锁药店前列/中国上市公司500强。

益丰有体量庞大的研发运维团队,有体量庞大的 IT 设施和服务,为了能够更好的监控这些设施和服务,益丰在多年前就开始建设监控系统,本文分享益丰的监控升级之路,来自益丰的运维团队,希望对你有所启发。

监控的重要性

监控系统在现代 IT 体系架构中充当“眼睛”的作用,重要性不言而喻。

  • 保障系统稳定性和可靠性:监控系统能够实时监测应用程序和基础设施的运行状态,帮助及时发现潜在问题,防止小问题演变成大故障,从而保障系统的持续稳定运行。
  • 快速问题定位与修复:当系统出现异常时,监控系统可帮助运维和开发团队迅速定位问题根源,缩短故障修复时间,减少业务中断的影响。
  • 提升用户体验:通过持续监控应用性能和关键业务指标,可以确保系统的响应速度和可用性,从而提升最终用户的体验。
  • 提高团队协作效率:监控系统可以让开发、运维和业务团队共享系统的运行状态和数据,促进跨团队的协作和沟通,快速应对问题,提高整体工作效率。

监控系统的架构

在益丰,我们把监控划分为多层,分别进行优化改进:

自动化层 告警自愈机制:监控系统检测到问题后,可以自动触发预定义的处理脚本,执行重启服务、扩展资源、调整配置等操作(目前没用到) Server 端
可视化层 仪表盘:如Grafana、Kibana、Zabbix,提供用户友好的界面,展示系统的监控数据及历史数据
数据分析与处理层 规则引擎与告警:设置各种告警规则和策略,一旦监测到异常,系统会通过邮件、短信、IM等渠道通知相关人员
数据存储与管理层 数据存储:MySQL、时序库、ES等组件; 访问控制和日志审计等管理操作
数据采集层 数据采集工具:如Prometheus Node Exporter、Telegraf、Categraf、自研采集器等工具,采集监控指标、日志和事件 Agent 端

我们梳理了一个监控系统的体系脑图,供大家参考:

监控系统体系脑图

监控系统 1.0

监控系统1.0架构图

在监控系统 1.0 时代,我们用了 Zabbix、多套 Prometheus、云监控,还有自定义的一些监控脚本。使用企业微信作为通知媒介。

监控系统 1.0 的问题

  • 监控系统多套,分散杂乱不统一,Zabbix 和 Prometheus 分工不明确
  • 缺少日志监控(比如 Error、Exception 关键字等)告警能力
  • 缺少业务关键指标监控(无法提前感知业务异常,很被动)
  • 告警通知无法聚合降噪及逐级升级通知,告警太多,重要告警容易被淹没忽略
  • 重要且严重的告警无法语音、短信通知,无法第一时间处理
  • 告警通知无法实现触达到责任人,无法责任到人就影响了故障处理效率

监控系统 2.0

针对 1.0 版本的不足,目前监控系统已迭代至 2.0 版本。2.0 版本的监控系统架构如下:

监控系统2.0架构

  1. 将原 Zabbix 和 Prometheus 的基础设施、中间件、应用指标、业务指标等监控整合统一到夜莺监控平台中(Zabbix专注于网络侧的监控)
  2. 使用 FlashDuty 告警引擎补全日志监控告警功能
  3. 使用通用查询采集工具很方便的采集各种业务关键指标(SQL查询、Redis查询、MongoDB查询、ES查询)。化被动为主动,提前介入并解决问题
  4. 外采 FlashDuty 告警平台完善告警通知机制(责任到人,语音通知,告警升级与排班,告警聚合等)

FlashDuty 的体验很好,值得安利,这是我们内部的使用 FlashDuty 的体验对比。

对比项 引入前 引入后
告警通知 只支持企微或邮件群发,无法精准通知到个人 支持精准通知到个人,并实现告警聚合降噪、认领、抑制、屏蔽
告警升级 不支持,无法实现逐级升级通知 支持告警按策略逐级升级通知
告警内容自定义 不支持自定义修改 可以按需灵活配置告警内容
排班机制 不支持 支持灵活的告警排班机制
告警事件 不支持 历史有存档,提供多种事件查看视图,多维度分析
统计分析 不支持 为故障溯源提供基础数据支撑
移动办公 不支持 和企微深度打通,可在企微中操作认领、屏蔽、关闭、查看告警,移动办公效率大幅增加
短信、语音通知 不支持 支持
动态通知责任人 不支持 支持

监控系统 3.0

目前监控系统 2.0 已经满足大部分业务需求。不过还有一些额外的诉求尚未解决,也是未来监控系统 3.0 的方向:

  • 全局驾驶舱:告警事件虽然收拢到一起有个全局视角了,但是监控数据可视化还是分散在各个仪表盘里,后面会有一个全局驾驶舱,比如门店健康度的驾驶舱、所有服务的整体驾驶舱、所有设备的整体驾驶舱等,做一些全局视角的数据可视化,一目了然的看到各个资产的健康状况。
  • 增强数据串联分析能力,比如全局服务驾驶舱发现某个服务有问题,点击下钻查看详情,可以看到这个服务的各类关键指标、日志、上下游服务的健康状况等,做到一站式问题定位。

结束语

出现问题并不可怕,重要的是我们有能力快速响应和修复。而监控系统就是我们手中的利器之一,让我们可以更加从容的应对各种挑战,共同保障业务的高效稳定。查看原文:《企业分享 - 益丰大药房监控升级之路

开源版
Flashcat
Flashduty