Appearance
监控告警
**本文引用的文件** - [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)目录
简介
本文件面向运维与开发团队,围绕 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 部署模板
图表来源
- skywalking.yaml:1-146
- lemes-nacos.yaml:1-58
- lemes-nacos-pgsql.yaml:1-58
- nacos-standalone.yml:1-23
- nacos.yml:1-23
章节来源
- skywalking.yaml:1-146
- lemes-nacos.yaml:1-58
- lemes-nacos-pgsql.yaml:1-58
- nacos-standalone.yml:1-23
- nacos.yml:1-23
核心组件
- 配置与注册中心:Nacos 提供配置中心与服务发现,支持多环境 profile 与集群部署。
- APM 分布式追踪:SkyWalking OAP 收集链路数据,UI 提供可视化界面。
- 日志体系:Logback 输出控制台与滚动文件,统一合规日志工具输出标准 JSON 结构。
- 健康检查与存活探针:Actuator 暴露健康接口,K8s 探针保障服务可用性。
- 数据源与动态库名:框架提供动态库名常量,便于多数据源场景下的可观测与治理。
章节来源
- bootstrap.yml(认证服务):1-67
- logback.xml(作业执行器):1-72
- LenovoLogUtil.java(框架通用):70-129
- LenovoLogUtil.java(作业通用):70-129
- lemes-webservice.yaml(健康检查):81-110
- DynamicDbName.java:1-17
架构总览
下图展示从请求进入网关到业务服务、再到 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 等。
图表来源
- logback.xml(作业执行器):1-72
- TraceIdConverter.java:1-21
- LenovoLogUtil.java(框架通用):70-129
- LenovoLogUtil.java(作业通用):70-129
章节来源
- logback.xml(作业执行器):1-72
- TraceIdConverter.java:1-21
- LenovoLogUtil.java(框架通用):70-129
- LenovoLogUtil.java(作业通用):70-129
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 控制器进行动态刷新验证。
章节来源
- bootstrap.yml(认证服务):1-67
- lemes-isg-trace.yaml:1-14
- lemes-webservice.yaml(健康检查):81-110
- NacosTestController.java:1-26
结论
DeviceMate 已具备可观测性的基础能力:Nacos 配置与注册、SkyWalking 分布式追踪、Logback 日志与统一合规日志、Actuator 健康检查与 K8s 探针。建议在此基础上完善指标体系与 KPI、建立标准化告警规则与通知流程、强化日志与追踪的关联分析能力,并持续优化资源与 JVM 参数,确保系统在高负载下的稳定性与可维护性。
附录
- 部署参考
- Kubernetes:使用 K8s YAML 部署 Nacos、SkyWalking OAP/UI,以及业务服务。
- Docker Compose:使用 nacos-standalone.yml/nacos.yml 快速搭建本地环境。
- 最佳实践
- 统一日志格式与字段,确保 traceId 透传。
- 对关键业务接口埋点,结合 SkyWalking 与日志进行根因分析。
- 定期复盘告警,优化阈值与规则,降低误报与漏报。
章节来源