益丰大药房

益丰大药房是全国大型药品零售连锁企业(中国沪市主板上市连锁药房),专注医药零售行业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 的方向:

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

结束语

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


SRETALK
14 声望12 粉丝

关注 SRE、可观测性、开源商业化