跳到主要内容

监控与可观测性

目录

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

简介

本文件面向 yudao-cloud 的监控与可观测性落地实践,围绕 SkyWalking 链路追踪与 Prometheus 指标采集两条主线,结合 Spring Boot Admin 客户端、Actuator 端点、Arthas 动态诊断工具,形成“链路追踪 + 指标采集 + 健康检查 + 动态诊断 + 日志采集”的完整可观测体系。同时给出服务发现与自动注册、健康检查、日志聚合与可视化、监控仪表板配置、性能指标解读与故障排查方法,以及监控数据存储策略、查询优化与容量规划建议。

项目结构

  • 监控与可观测性相关模块分布于框架层与业务模块:
    • 框架层:yudao-spring-boot-starter-monitor 提供 SkyWalking 集成、Micrometer-Prometheus 指标、Spring Boot Admin 客户端等能力。
    • 业务模块:PrometheusController 提供基于注册中心的服务发现接口,Actuator 暴露指标与健康检查,各模块统一使用 SkyWalking Logback Layout 输出带 TraceId 的日志。
    • 运维脚本:docker-compose 与 Jenkins 部署脚本中配置 SkyWalking Agent、Nacos 注册中心、日志卷挂载等。

Mermaid Diagram Code:

graph TB
subgraph "框架层"
F1["yudao-spring-boot-starter-monitor<br/>SkyWalking/Micrometer/Arthas/SBA 客户端"]
end
subgraph "业务模块"
B1["PrometheusController<br/>/actuator/prometheus/sd"]
B2["Actuator 端点<br/>/actuator/*"]
B3["各模块日志<br/>logback + SkyWalking Layout"]
end
subgraph "外部系统"
E1["SkyWalking OAP"]
E2["Prometheus Server"]
E3["Nacos 注册中心"]
E4["Spring Boot Admin Server"]
end
F1 --> B1
F1 --> B2
F1 --> B3
B1 --> E2
B2 --> E2
B3 --> E1
F1 --> E4
B1 --> E3
B2 --> E3

图表来源

章节来源

核心组件

  • SkyWalking 集成
    • 通过 apm-toolkit-trace、apm-toolkit-logback-1.x、apm-toolkit-opentracing 提供注解埋点、日志 TraceId 注入与 OpenTracing 兼容。
    • 启用 TraceFilter 注入响应头 traceId,便于跨服务关联。
  • Prometheus 指标与服务发现
    • 通过 micrometer-registry-prometheus 暴露 Micrometer 指标。
    • 通过 PrometheusController 对接 Prometheus 的服务发现,返回 targets 与 labels。
  • Spring Boot Admin 客户端
    • 通过 yudao-spring-boot-starter-monitor 的 SBA 客户端依赖,向 Admin Server 汇报实例状态。
  • Actuator 端点
    • 全量开放端点,便于健康检查与指标抓取。
  • Arthas 动态诊断
    • 通过 arthas-spring-boot-starter 提供在线火焰图、线程分析等能力。
  • 日志采集与聚合
    • 各模块统一使用 SkyWalking 的 TraceId Pattern Logback Layout,配合日志卷挂载与轮转策略,便于集中采集与检索。

章节来源

架构总览

下图展示了 yudao-cloud 的监控与可观测性整体架构:SkyWalking Agent 注入链路追踪与日志 TraceId;Prometheus 通过服务发现接口与 Actuator 指标端点抓取数据;Spring Boot Admin 客户端上报实例状态;Arthas 提供动态诊断能力。

Mermaid Diagram Code:

graph TB
subgraph "应用实例"
A1["TraceFilter<br/>响应头注入 traceId"]
A2["Micrometer 指标<br/>Prometheus Registry"]
A3["Actuator 端点<br/>/actuator/*"]
A4["日志输出<br/>SkyWalking Logback Layout"]
end
subgraph "外部系统"
S1["SkyWalking OAP"]
S2["Prometheus Server"]
S3["Nacos 注册中心"]
S4["Spring Boot Admin Server"]
end
A1 --> S1
A2 --> S2
A3 --> S2
A4 --> S1
A3 --> S3
A1 --> S3
A4 --> S3
A1 --> S4

图表来源

组件详解

SkyWalking 链路追踪与日志

  • 链路追踪
    • 自动装配 TraceFilter,将 traceId 注入响应头,便于下游服务关联。
    • 通过 apm-toolkit-trace 提供注解埋点能力。
  • 日志
    • 各模块统一使用 SkyWalking 的 TraceId Pattern Logback Layout,确保日志具备 traceId,便于在 SkyWalking 日志中心检索。
    • 日志轮转策略通过 RollingPolicy 控制文件大小、保留天数与压缩,结合容器卷挂载实现集中采集。

Mermaid Diagram Code:

sequenceDiagram
participant C as "客户端"
participant G as "网关/gateway-server"
participant S as "业务服务"
participant L as "日志系统"
participant O as "SkyWalking OAP"
C->>G : 请求携带 traceId
G->>G : TraceFilter 注入/透传 traceId
G->>S : 调用携带 traceId
S->>S : 业务处理
S->>L : 输出带 traceId 的日志
L-->>O : 日志采集与解析
S-->>G : 响应包含 traceId
G-->>C : 返回响应

图表来源

章节来源

Prometheus 指标采集与服务发现

  • 指标暴露
    • 通过 Micrometer 与 micrometer-registry-prometheus 暴露 JVM、业务等指标。
  • 服务发现
    • PrometheusController 对接 Prometheus 的服务发现,基于 DiscoveryClient 获取服务列表与实例,组装 targets 与 labels。
  • Actuator 端点
    • application-common.yaml 中开放所有 Actuator 端点,便于 Prometheus 抓取。

Mermaid Diagram Code:

sequenceDiagram
participant P as "Prometheus"
participant PC as "PrometheusController"
participant DC as "DiscoveryClient"
participant S as "服务实例"
P->>PC : GET /actuator/prometheus/sd
PC->>DC : getServices()
DC-->>PC : 服务列表
loop 遍历每个服务
PC->>DC : getInstances(service)
DC-->>PC : 实例列表
PC->>PC : 组装 targets 与 labels
end
PC-->>P : 返回 JSON 列表
P->>S : 抓取 /actuator/prometheus/metrics

图表来源

章节来源

Spring Boot Admin 客户端与健康检查

  • Spring Boot Admin 客户端
    • 通过 yudao-spring-boot-starter-monitor 的 SBA 客户端依赖,自动上报实例状态。
  • 健康检查
    • Actuator 端点全量开放,结合 Nacos 注册中心实现健康检查与自动摘除。
  • Elasticsearch 健康检查
    • 通过 ActuatorEnvironmentPostProcessor 关闭 Elasticsearch 健康检查,避免误报。

Mermaid Diagram Code:

flowchart TD
Start(["应用启动"]) --> SBA["注册 SBA 客户端"]
SBA --> Health["开放 Actuator 端点"]
Health --> Nacos["注册到 Nacos"]
Nacos --> Probe["Prometheus/探针定期健康检查"]
Probe --> Healthy{"健康?"}
Healthy --> |是| OK["加入负载均衡"]
Healthy --> |否| Drain["从负载均衡摘除"]
OK --> End(["正常运行"])
Drain --> End

图表来源

章节来源

Arthas 动态诊断

  • 在各模块容器中启用 Arthas 端口,支持在线火焰图、线程分析、内存分析等,便于线上问题定位。
  • 部署脚本中配置 Arthas 端口与输出目录,便于导出分析结果。

章节来源

日志收集、聚合与可视化

  • 日志布局
    • 各模块统一使用 SkyWalking 的 TraceId Pattern Logback Layout,确保日志具备 traceId。
  • 日志轮转
    • 通过 RollingPolicy 控制文件大小、保留天数与压缩,结合容器卷挂载实现集中采集。
  • 可视化
    • SkyWalking 日志中心支持按 traceId、关键词检索日志,结合链路图进行关联分析。

章节来源

依赖关系分析

  • 模块依赖
    • yudao-spring-boot-starter-monitor 依赖 SkyWalking Toolkit、Micrometer Prometheus、Arthas、Spring Boot Admin 客户端。
    • 业务模块通过引入 starter-monitor 获得链路追踪、指标与日志能力。
  • 运行时依赖
    • SkyWalking Agent 通过环境变量与卷挂载注入到容器中。
    • Prometheus 通过服务发现接口与 Actuator 指标端点抓取数据。

Mermaid Diagram Code:

graph LR
M["yudao-spring-boot-starter-monitor"] --> T["SkyWalking Toolkit"]
M --> P["Micrometer-Prometheus"]
M --> A["Arthas"]
M --> SBA["Spring Boot Admin Client"]
B["业务模块"] --> M
B --> DC["Nacos DiscoveryClient"]
B --> AC["Actuator 端点"]
B --> LOG["Logback Layout"]
DC --> PR["PrometheusController"]
AC --> PR
PR --> PS["Prometheus Server"]

图表来源

章节来源

性能与容量规划

  • 指标采集
    • 合理设置抓取间隔与并发,避免对业务实例造成压力。
    • 对高频指标进行降采样或聚合,减少存储与查询成本。
  • 日志采集
    • 控制日志文件大小与保留天数,避免磁盘膨胀。
    • 使用压缩与分片策略降低传输与存储成本。
  • 链路追踪
    • 合理设置采样率,避免高流量场景下的性能损耗。
    • 对热点接口与异常链路进行重点观测。
  • 存储与查询
    • SkyWalking OAP 与 Prometheus 的存储容量应根据实例规模、指标维度与保留周期评估。
    • 建议对长期历史数据进行冷热分层或归档,优化查询性能。

[本节为通用指导,无需特定文件引用]

故障排查指南

  • 链路追踪不可用
    • 检查 SkyWalking Agent 是否正确挂载与配置,确认 Collector 地址与实例名。
    • 核对 TraceFilter 是否生效,响应头是否包含 traceId。
  • 指标缺失
    • 确认 Actuator 端点已开放,Prometheus 是否能访问 /actuator/prometheus。
    • 检查服务发现接口 /actuator/prometheus/sd 是否返回 targets。
  • 日志缺失或无 traceId
    • 检查 Logback 配置是否使用 SkyWalking TraceId Pattern Layout。
    • 确认日志卷挂载与轮转策略配置正确。
  • 健康检查异常
    • 检查 Actuator 端点与 Nacos 注册状态,必要时关闭不必要的健康检查项。
  • 动态诊断
    • 通过 Arthas 端口进入容器,使用 profiler 生成火焰图定位热点。

章节来源

结论

yudao-cloud 通过 SkyWalking 与 Prometheus 的双轨可观测方案,结合 Spring Boot Admin、Actuator、Arthas 与统一日志布局,形成了覆盖链路追踪、指标采集、健康检查、动态诊断与日志聚合的完整监控体系。配合 Nacos 服务发现与自动注册,能够满足生产环境的稳定性与可运维性需求。建议在实际部署中根据业务规模与 SLA 要求,合理配置采样率、抓取间隔与存储策略,持续优化查询与告警阈值。

[本节为总结,无需特定文件引用]

附录

监控仪表板配置与性能指标解读

  • 仪表板建议
    • 基础面板:实例健康、CPU/内存、GC、请求量与延迟、错误率。
    • 业务面板:关键接口耗时分布、慢调用链路、日志错误统计。
  • 指标解读
    • 延迟与吞吐:关注 p95/p99 延迟与错误率变化,识别性能瓶颈。
    • 资源使用:CPU/内存/GC 峰值与持续时间,判断资源瓶颈与 GC 问题。
    • 链路质量:异常链路占比与根因定位,结合日志与 TraceId 进行交叉验证。

[本节为通用指导,无需特定文件引用]

部署与运维要点

  • SkyWalking Agent
    • 通过环境变量与卷挂载注入,确保与 OAP 地址一致。
  • Prometheus
    • 配置服务发现与静态目标,合理设置抓取间隔与超时。
  • 日志
    • 统一布局与轮转策略,确保 traceId 可检索与磁盘容量可控。
  • 健康检查
    • 开放 Actuator 端点,结合 Nacos 实现自动摘除与恢复。

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答