跳到主要内容

监控系统配置

目录

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

简介

本文件面向运维与开发团队,提供一套完整的监控系统配置说明,覆盖以下方面:

  • Prometheus 监控系统的部署与配置:指标采集、服务发现、告警接收与处理
  • SkyWalking 链路追踪的 Agent 配置:探针安装、性能影响评估、分布式追踪配置
  • Micrometer 指标体系的集成:自定义指标定义、业务指标埋点、指标数据导出
  • Grafana 仪表板的配置与可视化展示
  • 监控告警配置示例:阈值设定、告警级别、通知渠道
  • 日志聚合系统的配置:ELK Stack 的部署与日志分析
  • 监控数据的长期存储、压缩策略、备份恢复方案

项目结构

监控相关能力主要分布在如下位置:

  • 配置层:统一的通用配置文件,集中管理 Actuator、Spring Boot Admin、监控开关等
  • 控制器层:Prometheus 服务发现控制器,对接注册中心输出标准格式
  • 自动配置层:Micrometer 与 Prometheus 集成的自动配置
  • 启动器层:监控启动器模块,引入 SkyWalking、Micrometer、Arthas、Spring Boot Admin 等依赖
  • 数据库层:TDengine 的监控与时序数据建模脚本
  • 编排层:Kafka、Canal 等中间件的 Docker Compose 编排文件

Mermaid Diagram Code:

graph TB
subgraph "配置层"
CFG["application-common.yaml"]
end
subgraph "控制器层"
PC["PrometheusController<br/>/actuator/prometheus/sd"]
end
subgraph "自动配置层"
MCFG["YudaoMetricsAutoConfiguration"]
end
subgraph "启动器层"
MOD["yudao-spring-boot-starter-monitor<br/>依赖: SkyWalking, Micrometer-Prometheus, SBA Client"]
end
subgraph "数据层"
TD["TDengine 监控与时序库"]
end
subgraph "编排层"
KAFKA["Kafka 编排"]
CANAL["Canal-Kafka 编排"]
end
CFG --> PC
CFG --> MCFG
MCFG --> MOD
PC --> CFG
TD --> CFG
KAFKA --> CFG
CANAL --> CFG

图表来源

章节来源

核心组件

  • Prometheus 服务发现控制器:从注册中心动态获取服务实例,输出 targets 与 labels,供 Prometheus 抓取
  • Micrometer + Prometheus:自动注入 common tags,启用指标导出端点
  • Spring Boot Admin:客户端注册与服务端启用,统一监控面板
  • SkyWalking:链路追踪依赖与工具包,便于分布式追踪与日志关联
  • TDengine:时序数据库,支撑监控数据的长期存储与查询

章节来源

架构总览

下图展示了监控系统的关键交互:Prometheus 通过服务发现接口获取服务列表,各应用通过 Actuator 暴露指标,Micrometer 将指标导出至 Prometheus,同时 SkyWalking 提供链路追踪能力。

Mermaid Diagram Code:

sequenceDiagram
participant P as "Prometheus"
participant C as "PrometheusController"
participant DC as "DiscoveryClient"
participant APP as "应用(Actuator/Micrometer)"
participant REG as "Prometheus Registry"
P->>C : GET /actuator/prometheus/sd
C->>DC : getServices()
DC-->>C : 服务列表
C->>DC : getInstances(service)
DC-->>C : 实例列表(host : port)
C-->>P : 返回 targets 与 labels
loop 每个采集周期
P->>APP : 抓取 /actuator/prometheus
APP-->>P : Micrometer 指标数据
P->>REG : 导入指标
end

图表来源

章节来源

详细组件分析

Prometheus 监控系统

  • 服务发现接口
    • 路径:/actuator/prometheus/sd
    • 功能:遍历注册中心的服务与实例,组装 targets 与 labels,供 Prometheus 抓取
    • 输出格式:每组包含 targets(host:port 列表)与 labels(如 job 名称)
  • 指标导出
    • Actuator 暴露端点:/actuator/prometheus
    • 配置:management.endpoints.web.exposure.include=*
  • 告警接收
    • 路径:/actuator/prometheus/alerts
    • 行为:接收告警消息并记录日志,可扩展为转发至通知系统

Mermaid Diagram Code:

flowchart TD
Start(["Prometheus 抓取开始"]) --> SD["调用 /actuator/prometheus/sd"]
SD --> Parse["解析服务与实例列表"]
Parse --> Build["组装 targets 与 labels"]
Build --> Export["暴露 /actuator/prometheus 指标"]
Export --> Done(["完成一轮采集"])

图表来源

章节来源

Micrometer 指标体系集成

  • 自动配置
    • 条件启用:yudao.metrics.enable(默认启用)
    • common tags:自动添加 application 标签,便于多应用聚合与筛选
  • 导出后端
    • 依赖:micrometer-registry-prometheus
    • 端点:/actuator/prometheus
  • 埋点建议
    • 业务指标:使用 Timer/Meter/Counter/Gauge 定义关键路径与资源使用
    • 常见维度:application、service、instance、status、method、uri 等

Mermaid Diagram Code:

classDiagram
class YudaoMetricsAutoConfiguration {
+metricsCommonTags(applicationName) MeterRegistryCustomizer
}
class MicrometerPrometheus {
+prometheus registry
+actuator endpoint
}
YudaoMetricsAutoConfiguration --> MicrometerPrometheus : "配置 common tags 并启用导出"

图表来源

章节来源

SkyWalking 链路追踪

  • 依赖引入
    • apm-toolkit-trace、apm-toolkit-logback-1.x、apm-toolkit-opentracing
  • Agent 配置要点
    • 启用方式:通过 JVM 参数或环境变量加载 SkyWalking Agent
    • 影响评估:CPU 占用、内存占用、网络开销;建议在测试环境充分压测后再上线
    • 分布式追踪:确保跨服务 Header 透传一致,日志与 TraceId 关联
  • 与 Micrometer 的关系
    • SkyWalking 提供链路视图,Micrometer 提供指标视图,二者互补

章节来源

Spring Boot Admin

  • 服务端启用
    • AdminServerConfiguration 启用 @EnableAdminServer
  • 客户端注册
    • yml 中配置 spring.boot.admin.client.instance.service-host-type 与 context-path
  • 作用
    • 统一监控面板,查看应用健康状态、指标、日志、线程 Dump 等

章节来源

日志聚合与 ELK

  • Kafka 与 Canal 集成
    • 通过 docker-compose 启动 Kafka 与 Canal,实现数据库变更事件的采集与投递
  • 日志采集
    • 建议结合 Filebeat/Fluent Bit 采集应用日志,经 Kafka 中转后写入 Elasticsearch
  • 可视化
    • Kibana 构建仪表板,实现日志检索、聚合与告警

章节来源

监控数据长期存储与压缩

  • TDengine 时序库
    • 数据库与超级表建模脚本,包含保留时长、缓存、行数等参数
    • 建议按天/月/年划分数据库,配合标签与时间范围查询优化
  • 压缩策略
    • 利用 TDengine 的内置压缩与分区策略,结合业务峰值与查询热点
  • 备份与恢复
    • 定期快照与增量备份,验证恢复流程,确保 RPO/RTO 满足业务要求

章节来源

依赖关系分析

监控相关模块之间的依赖关系如下:

Mermaid Diagram Code:

graph LR
A["application-common.yaml"] --> B["PrometheusController"]
A --> C["YudaoMetricsAutoConfiguration"]
C --> D["yudao-spring-boot-starter-monitor"]
E["AdminServerConfiguration"] --> F["Spring Boot Admin Server"]
G["Kafka 编排"] --> H["Canal 编排"]
H --> I["日志/事件流"]

图表来源

章节来源

性能考量

  • 指标采集频率与数量
    • 合理设置 scrape_interval,避免过度抓取导致目标端压力
    • 控制指标数量与标签基数,避免 cardinality explosion
  • Micrometer 指标开销
    • 在高并发场景下,适当减少 Histogram 的桶数量或采样率
  • SkyWalking Agent
    • 建议灰度发布,持续观察 CPU/内存/GC 指标变化
  • Kafka/Canal
    • 监控队列积压与消费者 lag,及时扩容或优化消费者处理逻辑

故障排查指南

  • Prometheus 无法发现服务
    • 检查 /actuator/prometheus/sd 返回内容是否为空
    • 确认注册中心连通性与服务列表
  • 指标无法抓取
    • 确认 Actuator 暴露端点已开放(include=*)
    • 检查 /actuator/prometheus 返回内容是否正常
  • 告警未到达
    • 检查 /actuator/prometheus/alerts 是否收到消息
    • 核对告警规则与通知通道配置
  • 日志聚合异常
    • 检查 Kafka 与 Canal 状态,确认主题与消费者组正常
    • 校验 Filebeat/Fluent Bit 与 Logstash/Elasticsearch 连通性

章节来源

结论

本项目通过 Prometheus + Micrometer + SkyWalking + Spring Boot Admin + ELK 的组合,实现了可观测性的闭环。建议在生产环境中:

  • 明确监控范围与指标边界,控制标签基数
  • 分阶段启用 SkyWalking Agent,持续评估性能影响
  • 建立完善的告警分级与通知机制
  • 采用 TDengine 等时序数据库进行长期存储,并制定备份与恢复策略
  • 以 Prometheus 服务发现与 Actuator 指标导出为基础,逐步完善 Grafana 仪表板与日志聚合

附录

  • 配置清单
    • Actuator 暴露端点:management.endpoints.web.exposure.include=*
    • Spring Boot Admin 客户端:spring.boot.admin.client.instance.service-host-type、context-path
    • 监控开关:yudao.metrics.enable、yudao.tracer.enable
  • 常用端点
    • /actuator/prometheus:指标导出
    • /actuator/prometheus/sd:服务发现
    • /actuator/prometheus/alerts:告警接收
  • 参考文档
    • README 中关于 Prometheus 集成与 Actuator 配置的说明

章节来源

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