SkyWalking 高级特性探索:Meter(指标采集)与 Prometheus 集成

SkyWalking 的现代化指标体系 —— Meter(度量) 功能。

这是 SkyWalking 从传统 APM 向 云原生可观测性平台 演进的关键一步。

下面,我为你系统讲解 SkyWalking Meter 机制,重点解析:

  • ✅ Meter 是什么?
  • ✅ 如何与 Prometheus 集成?
  • ✅ 如何采集自定义业务指标?
  • ✅ 如何在 UI 中查看 Meter 数据?

📊 高级特性探索:Meter(指标采集)与 Prometheus 集成

✅ 目标:
理解 SkyWalking 如何通过 Meter System 统一处理应用指标,并与 Prometheus 生态无缝集成,实现“一平台看所有指标”。


一、什么是 Meter?

Meter 是 SkyWalking 从 8.x 版本引入的 新一代指标采集与处理系统,用于:

  • 收集应用通过 OpenTelemetry、Micrometer、Dropwizard 等 SDK 上报的结构化指标
  • 与 SkyWalking 原生指标(如服务响应时间)统一处理
  • 支持 Prometheus 风格的 Pull 模型(被 scrape)
  • 实现 多语言、多框架、多协议的指标统一管理

✅ 简单说:Meter = SkyWalking 的 Prometheus 兼容层


二、为什么需要 Meter?传统方式的局限

传统方式局限
SkyWalking Agent 自动采集 JVM、HTTP 指标无法采集业务指标(如订单数、库存变化)
Prometheus 直接 scrape 应用无法与 SkyWalking 的 Trace、Log 联动
手动埋点 + 自定义上报维护成本高,格式不统一

Meter 的优势

统一指标入口,打通 Trace + Metrics + Logs,实现“全栈可观测性”


三、Meter 的核心架构

+----------------+     +---------------------+
|   Application  |     |   SkyWalking OAP    |
| (Java/Go/Python)|     |                     |
|                |     |  +----------------+ |
|  Micrometer    |----->|  Meter Receiver  | |
|  OpenTelemetry |     |  (Prometheus)    | |
|  Dropwizard     |     |  +-------+--------+ |
+----------------+     |          |          |
                       |          v          |
                       |  +----------------+ |
                       |  |  Meter Analyzer| |
                       |  +-------+--------+ |
                       |          |          |
                       |          v          |
                       |  +----------------+ |
                       |  |   Storage      | |
                       |  | (ES / MySQL)   | |
                       |  +-------+--------+ |
                       |          |          |
                       |  +-------v--------+ |
                       |  |   Query API    | |
                       |  | (GraphQL)      | |
                       |  +----------------+ |
                       +----------+---------+
                                  |
                         +---------v----------+
                         |       UI           |
                         | (查看 Meter 指标)  |
                         +--------------------+

四、如何与 Prometheus 集成?(最常用方式)

SkyWalking OAP 可以作为一个 Prometheus Target,被 Prometheus 抓取。

步骤 1️⃣:启用 Meter Receiver(OAP 配置)

修改 application.yml

receiver-meter:
  prometheus:
    selector: ${SW_METER_PROMETHEUS_ENABLED:true}
    httpHost: 0.0.0.0
    httpPort: 1234
    tlsEnabled: false
    # basicAuthenticationEnabled: true

✅ 启动后,OAP 会暴露一个 Prometheus 兼容的 /metrics 接口:

http://oap-server:1234/metrics
步骤 2️⃣:配置 Prometheus 抓取
# prometheus.yml
scrape_configs:
  - job_name: 'skywalking-meter'
    static_configs:
      - targets: ['oap-server:1234']
    metrics_path: /metrics
    scheme: http
步骤 3️⃣:验证抓取

访问 Prometheus → Status → Targets → 应看到 skywalking-meter 处于 UP 状态。


五、应用端如何上报指标?(以 Java 为例)

方式 1️⃣:使用 Micrometer(推荐)
<!-- pom.xml -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-core</artifactId>
    <version>1.10.0</version>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>1.10.0</version>
</dependency>
// 代码中创建指标
MeterRegistry registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);

Counter orderCounter = Counter.builder("orders_created")
    .description("Total orders created")
    .tags("env", "prod", "service", "order-service")
    .register(registry);

// 上报
orderCounter.increment();
方式 2️⃣:暴露 Prometheus Endpoint(Spring Boot Actuator)
# application.yml
management:
  endpoints:
    web:
      exposure:
        include: prometheus,health,metrics
  metrics:
    export:
      prometheus:
        enabled: true

访问:http://your-app:8080/actuator/prometheus

✅ SkyWalking Agent 会自动发现并采集这些指标(需启用 prometheus-fetcher 插件)


六、SkyWalking UI 中查看 Meter 指标

1. Metrics Browser(指标浏览器)
  • 路径:UI → “Metrics”
  • 可查询所有 Meter 指标(如 orders_created_total
  • 支持按标签(tags)过滤
  • 支持绘制图表
2. Dashboard 联动
  • 将 Meter 指标添加到自定义仪表盘
  • 与 Trace、Log 同屏展示
3. 告警集成
  • 可在 alarm-settings.yml 中基于 Meter 指标设置告警:
rules:
  high_order_rate_rule:
    metrics-name: orders_created_m_1_rate  # 每分钟创建订单数
    op: ">"
    threshold: 1000
    period: 5
    count: 3
    message: "🔥 订单创建速率过高\n📊 当前值: {value}\n🕒 发生时间: {startTime}"

七、支持的指标类型

类型说明示例
Counter单调递增计数器http_requests_total
Gauge瞬时值jvm_memory_used
Histogram分布统计(P50/P95/P99)http_request_duration_seconds
Summary摘要统计rpc_duration_seconds

✅ 所有 OpenMetrics 兼容指标均可被 SkyWalking 接收。


八、多语言支持

语言支持方式
JavaMicrometer、OpenTelemetry SDK
GoPrometheus Client Golang
Pythonprometheus_client
Node.jsprom-client
.NETOpenTelemetry .NET

✅ 只要你的应用能暴露 Prometheus 格式 /metrics,SkyWalking 就能采集。


九、高级特性

特性说明
自动标签注入SkyWalking 自动添加 serviceinstanceendpoint 标签
指标聚合支持按服务、实例、标签聚合
降采样长期存储时自动降精度
与 Trace 关联通过 trace_id 实现指标与链路联动

✅ 总结:Meter 使用口诀

“一曝露(/metrics)、二采集(OAP)、三存储(ES)、四查询(UI)”

Meter 是你的 “业务指标直通车”,让你轻松将:

  • 订单数
  • 库存变化
  • 任务完成率
  • 业务成功率

等关键业务指标,统一接入 SkyWalking,与技术指标(响应时间、错误率)一起分析。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值