Skip to content

监控告警

**本文引用的文件** - [application.yml(设备服务)](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-server/src/main/resources/application.yml) - [application.yml(工作流服务)](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/resources/application.yml) - [bootstrap.yml(认证服务)](file://lemes-cloud/lemes-auth/src/main/resources/bootstrap.yml) - [logback.xml(作业执行器)](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/resources/logback.xml) - [TraceIdConverter.java](file://lemes-job-devicemate/lemes-job-devicemate-common/src/main/java/com/lenovo/lemes/job/devicemate/common/config/TraceIdConverter.java) - [LenovoLogUtil.java(框架通用)](file://lemes-cloud/lemes-framework/lemes-framework-core/src/main/java/com/lenovo/lemes/framework/core/util/compliance/LenovoLogUtil.java) - [LenovoLogUtil.java(作业通用)](file://lemes-job-devicemate/lemes-job-devicemate-common/src/main/java/com/lenovo/lemes/job/devicemate/common/util/compliance/LenovoLogUtil.java) - [skywalking.yaml](file://lemes-cloud/src/devops/k8s/service/base/skywalking.yaml) - [lemes-webservice.yaml](file://lemes-cloud/src/devops/k8s/service/other/lemes-webservice.yaml) - [lemes-nacos.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-nacos.yaml) - [lemes-nacos-pgsql.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-nacos-pgsql.yaml) - [nacos-standalone.yml](file://lemes-cloud/src/devops/docker-compose/nacos-standalone.yml) - [nacos.yml](file://lemes-cloud/src/devops/docker-compose/nacos.yml) - [config.yaml](file://lemes-cloud/src/devops/k8s/service/base/config.yaml) - [lemes-isg-trace.yaml](file://lemes-cloud/src/devops/k8s/service/expose-port/lemes-isg-trace.yaml) - [lemes-webservice.yaml(健康检查)](file://lemes-cloud/src/devops/k8s/service/other/lemes-webservice.yaml) - [NacosTestController.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-server/src/main/java/com/lenovo/lemes/service/dm/common/controller/NacosTestController.java) - [DynamicDbName.java](file://lemes-cloud/lemes-framework/lemes-framework-datasource/src/main/java/com/lenovo/lemes/datasource/constants/DynamicDbName.java) - [pom.xml(顶层)](file://lemes-cloud/pom.xml)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向运维与开发团队,围绕 DeviceMate 项目的可观测性建设,系统化梳理监控指标体系、关键性能指标(KPI)、日志采集与分析、告警规则与通知机制、故障检测与根因分析、APM 分布式追踪以及可视化与趋势分析方案。结合仓库中已有的 SkyWalking、Nacos、Actuator 健康检查、Logback 与统一合规日志工具等能力,给出可落地的配置与实践建议。

项目结构

DeviceMate 采用微服务分层架构,核心模块包括:

  • 网关与注册中心:Nacos(配置与服务发现)
  • 认证与授权:lemes-auth
  • 业务服务:device、store、workflow、common 等
  • 作业调度:lemes-job-devicemate
  • APM:SkyWalking(OAP+UI)
  • 基础设施:Kubernetes 与 Docker Compose 部署模板

图表来源

章节来源

核心组件

  • 配置与注册中心:Nacos 提供配置中心与服务发现,支持多环境 profile 与集群部署。
  • APM 分布式追踪:SkyWalking OAP 收集链路数据,UI 提供可视化界面。
  • 日志体系:Logback 输出控制台与滚动文件,统一合规日志工具输出标准 JSON 结构。
  • 健康检查与存活探针:Actuator 暴露健康接口,K8s 探针保障服务可用性。
  • 数据源与动态库名:框架提供动态库名常量,便于多数据源场景下的可观测与治理。

章节来源

架构总览

下图展示从请求进入网关到业务服务、再到 SkyWalking 采集与可视化的端到端链路。

图表来源

详细组件分析

1) 监控指标体系与 KPI 定义

  • 响应时延(P50/P90/P95):衡量接口性能,建议以服务维度与端点维度分别统计。
  • 错误率(HTTP 5xx/业务错误):用于评估稳定性与可用性。
  • 并发与吞吐:QPS、并发连接数、线程池饱和度。
  • 资源占用:CPU、内存、GC、堆外内存、磁盘 IO。
  • 数据库指标:慢查询、连接池使用率、锁等待、事务失败。
  • 业务 KPI:设备数据更新成功率、工单流转时长、巡检完成率等。

说明:以上为通用指标建议,具体采集与阈值需结合实际业务与 SLA 制定。

2) 日志采集、聚合与分析

  • 日志输出
    • 控制台与文件:Logback 控制台输出与滚动文件输出,支持按上下文注入 traceId。
    • 统一合规日志:输出结构化 JSON,包含应用标识、时间戳、请求信息、耗时与错误信息。
  • 日志采集与聚合
    • 建议通过 Filebeat/Fluent Bit 收集容器日志,写入 Elasticsearch 或直接对接 SkyWalking 的日志模块。
    • 使用 Kibana 进行日志检索、聚合与可视化。
  • 日志字段建议
    • 必填:appName、appOwner、cmdbId、@timestamp、message(含 targetUrl、httpMethod、responseStatusCode、startTime、latency、errorMessage)。
    • 可选:traceId、spanId、tenantId、requestId 等。

图表来源

章节来源

3) 告警规则配置、阈值与通知

  • 规则建议
    • 时延类:P95 超过阈值持续 N 分钟触发预警。
    • 错误率:连续窗口内错误率超过阈值触发告警。
    • 资源类:CPU/内存/IO 使用率超过阈值触发预警。
    • 业务类:关键指标偏离基线或同比变化过大。
  • 阈值设定
    • 基于历史水位与 SLA 设定,区分生产与非生产环境。
    • 引入滑动窗口与降噪策略,避免抖动。
  • 通知机制
    • 邮件、企业微信、钉钉机器人、PagerDuty 等。
    • 分级告警:Warn/Critical,并明确责任人与升级流程。

说明:本节为通用实践建议,具体阈值与规则需结合业务与历史数据制定。

4) 故障检测、根因分析与性能瓶颈定位

  • 分布式追踪
    • SkyWalking 自动探针与手动埋点结合,定位跨服务链路耗时热点。
    • 关键步骤:入口请求、远程调用、数据库操作、第三方接口。
  • 日志关联
    • 通过 traceId 关联同一请求在各服务的日志,快速定位异常。
  • 性能瓶颈
    • CPU/内存/GC:结合 JVM 指标与线程栈分析。
    • 数据库:慢 SQL、连接池、锁等待。
    • 网络:RTT、丢包、超时。

图表来源

章节来源

5) APM 工具集成与分布式追踪

  • SkyWalking 集成要点
    • OAP 与 UI 部署:通过 K8s YAML 或镜像方式部署。
    • 集群与存储:配置 Nacos 作为注册中心,Elasticsearch 作为存储(可选)。
    • 暴露端口:NodePort 方便本地访问 UI。
  • 服务暴露
    • 通过 NodePort Service 暴露 SkyWalking UI 与 ISG Trace 服务,便于外部访问与调试。

图表来源

章节来源

6) 监控仪表板与趋势分析

  • 仪表板建议
    • 服务健康:存活探针、就绪探针、Actuator 指标。
    • 性能指标:QPS、时延、错误率、资源使用。
    • 业务指标:设备更新、工单流转、巡检完成等。
  • 趋势分析
    • 周期性对比、同比/环比分析,识别异常波动。
    • 结合告警历史形成趋势报告。

章节来源

7) 配置中心与动态配置

  • Nacos 配置中心
    • 多环境 profile:通过 Maven Profile 切换不同 Nacos 地址与命名空间。
    • 动态刷新:@RefreshScope 控制控制器支持动态刷新。
  • 配置项示例
    • Nacos 地址、命名空间、组、时区、JVM 参数等。

图表来源

章节来源

8) 健康检查与存活探针

  • Actuator 健康检查
    • 提供 readiness/liveness 探针,K8s 依据探针状态决定 Pod 状态与重启策略。
  • 探针参数
    • 初始延迟、周期、超时、成功阈值、失败阈值等。

图表来源

章节来源

9) 数据源与动态库名

  • 动态库名常量:提供 PROM、MAAS、NABFTOOLS 等库名常量,便于多数据源场景下的治理与观测。

章节来源

依赖关系分析

  • 组件耦合
    • 业务服务依赖 Nacos 进行配置与注册;认证服务前置校验。
    • SkyWalking 作为横切能力,与各服务解耦。
    • 日志与追踪共同支撑可观测性闭环。
  • 外部依赖
    • Nacos 集群、Elasticsearch(可选)、Kubernetes 集群、Docker 环境。

图表来源

章节来源

性能考量

  • JVM 参数与容器支持:通过 ConfigMap 注入 JVM 参数,启用容器支持与内存百分比控制。
  • 资源配额:为 SkyWalking OAP/ UI 设置合理的 CPU/Memory 请求与限制,避免资源争用。
  • 日志滚动策略:合理设置文件大小与保留天数,避免磁盘压力。
  • 数据库连接池:结合慢 SQL 与连接池使用率,优化连接池参数。

章节来源

故障排查指南

  • 快速定位
    • 通过 SkyWalking UI 查看链路拓扑与时延,定位异常节点。
    • 使用 traceId 在日志平台检索全链路日志。
    • 检查 K8s 探针状态与 Pod 事件。
  • 常见问题
    • Nacos 连接失败:核对地址、命名空间、组与凭据。
    • SkyWalking UI 无法访问:确认 NodePort 与 Service 类型。
    • 日志缺失:检查 Logback 配置与挂载目录权限。
  • 回归验证
    • 修改配置后,使用 @RefreshScope 控制器进行动态刷新验证。

章节来源

结论

DeviceMate 已具备可观测性的基础能力:Nacos 配置与注册、SkyWalking 分布式追踪、Logback 日志与统一合规日志、Actuator 健康检查与 K8s 探针。建议在此基础上完善指标体系与 KPI、建立标准化告警规则与通知流程、强化日志与追踪的关联分析能力,并持续优化资源与 JVM 参数,确保系统在高负载下的稳定性与可维护性。

附录

  • 部署参考
    • Kubernetes:使用 K8s YAML 部署 Nacos、SkyWalking OAP/UI,以及业务服务。
    • Docker Compose:使用 nacos-standalone.yml/nacos.yml 快速搭建本地环境。
  • 最佳实践
    • 统一日志格式与字段,确保 traceId 透传。
    • 对关键业务接口埋点,结合 SkyWalking 与日志进行根因分析。
    • 定期复盘告警,优化阈值与规则,降低误报与漏报。

章节来源