宏地科技跨平台监控中台落地实战

宏地科技跨平台监控中台落地实战

宏地科技分享基于夜莺(Nightingale)的跨平台监控中台落地实战:面对 7 大业务系统、多个数据源的监控碎片化,用夜莺实现多数据源接入、标签降级兼容与语义化告警,故障定位时间缩短至 15 分钟内,告警误报率下降 76%。含架构设计、技术干货与实战避坑经验。

作者 宏地科技

夜莺项目开源地址:https://github.com/ccfos/nightingale 欢迎收藏,欢迎分享您的落地案例。

公司介绍

宏地科技是全国领先的商用车车联网信息服务提供商,致力于打造安全、安心、智慧、智能的道路交通运输安全车联网体系,是一家以科技、数据、应用来驱动道路交通运输安全的车联网信息服务公司。

核心挑战:在“行驶的赛车”上换零件

我们面对的是一个典型的“监控烟囱”环境:

  • 平台杂:涵盖智慧商砼、校车平台、车联网、充电桩等 7 个独立业务系统。
  • 组件多:从传统的 Oracle/MySQL 到现代的 IoTDB、RabbitMQ、K8S。
  • 源多样:数据散落在 VictoriaMetrics、独立 Prometheus 以及 K8S 内部 Prometheus 中。
  • 时间紧:只有 6 天时间,必须完成从环境搭建到 7 大平台全覆盖。

架构设计:混合动力,统一入口

我们没有选择“数据大搬家”,而是采用了多源聚合策略:

  • VictoriaMetrics (VM):作为主时序库,处理商砼和车联网的高频 IoT 数据,利用其 MetricsQL 的增强性能。
  • K8S 内生 Prometheus:通过夜莺直接接入 K8S 内部 Service 地址,省去了跨集群抓取数据的网络开销。
  • 原有 Prometheus:保留旧有运维系统的采样点,通过夜莺做逻辑平移。
  • 结果:数据不动,逻辑动。夜莺作为“指挥中心”,实现了全平台指标的一键溯源。

实战避坑:那些“细节”里的填坑笔记

标签降级兼容:解决“识别不了项目”

  • 痛点:不同 Exporter 的标签命名极不规范。有的叫 project,有的叫 projectA,有的啥也不带。
  • 对策:在夜莺通知模板中建立“标签提取链条”。
  • 逻辑:优先找 project -> 找不到找 projectA -> 再没有找 app -> 最后保底显示“通用项目”。
  • 价值:确保了无论数据源多乱,发到钉钉里的告警都能一眼看出是哪个业务线在“冒烟”。

标识优先级重构:解决“故障对象指代不明”

  • 痛点:监控容器 CPU 时,告警只报主机 IP(ident),运维分不清是哪个容器。 对策:智能标识提取顺序:容器名 (container_name) > Pod名 (pod) > 主机名 (ident) > IP。
  • 效果:告警标题从 【告警】192.168.xx.xx 异常 变成了 【告警】rabbitmq 容器异常。这种“一眼定罪”的能力,直接砍掉了 5 分钟的二次排查时间。

语义化告警:让机器指标“说人话”

  • 痛点:服务挂了报 0.0,运维反应慢。
  • 对策:
    • 状态转译:在模板里把 0 映射为红色的“离线”,1 映射为绿色的“在线”。
    • 排查逻辑分流:根据指标名(如 up 指标 vs usage 指标),自动切换底部的排查建议。不再用“资源占用过高”去敷衍一个已经宕机的服务。

核心技术干货 (MetricsQL/PromQL)

针对本次重构,我们统一了核心指标的计算口径:

CPU 利用率(平滑去噪)

round((1 - avg by(instance, projectA) (rate(node_cpu_seconds_total{mode="idle"}[5m]))) * 100, 0.01)

注:使用 rate 而非 irate,配合 5m 窗口,有效过滤了商砼系统瞬间启动时的毛刺误报。

内存可用率(真实视角)

round((1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100, 0.01)

注:强制使用 MemAvailable,排除 Linux 缓存干扰,降低 30% 以上的虚假内存告警。

落地执行表

阶段 任务重点 核心产出
D1: 筑基 拉起 n9e/VM 核心,接入商砼 DB/MQ 商砼生产链路监控闭环
D2: 标准化 全量部署 Categent,下发主机模板 7 大平台主机资源画像
D3: 安全攻坚 校车/车联网视频流与 MQTT 指标接入 高并发接入层稳定性监控
D4: 垂直调优 Oracle 存活、IoTDB 写入、充电桩支付链路 数据库与交易链路深度监控
D5: 闭环告警 调试全兼容通知模板,配置 P0/P1 分级推送 告警“语义化”通知上线
D6: 驾驶舱 7 大项目健康度总览大屏,全链路拨测验证 运维驾驶舱交付

写在最后:监控的本质是“救火指南”

通过这 段时间的重构,我们把监控从“一堆乱七八糟的数字”变成了“一封封清晰的救火说明书”。

后续红线:

  1. 新增监控必带标签:任何新项目接入,必须在采集侧带上 env 和 projectA 标签。
  2. 持续时长必填:所有告警必须设置 >60s 的持续时长,宁可慢报 1 分钟,不可误报 100 次。
  3. 模板动态更新:随着后续农机、充电桩平台深入,持续完善 TagsMap 的提取逻辑。

夜莺项目开源地址:https://github.com/ccfos/nightingale 欢迎收藏。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云