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 接收。
八、多语言支持
| 语言 | 支持方式 |
|---|---|
| Java | Micrometer、OpenTelemetry SDK |
| Go | Prometheus Client Golang |
| Python | prometheus_client |
| Node.js | prom-client |
| .NET | OpenTelemetry .NET |
✅ 只要你的应用能暴露 Prometheus 格式
/metrics,SkyWalking 就能采集。
九、高级特性
| 特性 | 说明 |
|---|---|
| 自动标签注入 | SkyWalking 自动添加 service、instance、endpoint 标签 |
| 指标聚合 | 支持按服务、实例、标签聚合 |
| 降采样 | 长期存储时自动降精度 |
| 与 Trace 关联 | 通过 trace_id 实现指标与链路联动 |
✅ 总结:Meter 使用口诀
“一曝露(/metrics)、二采集(OAP)、三存储(ES)、四查询(UI)”
Meter 是你的 “业务指标直通车”,让你轻松将:
- 订单数
- 库存变化
- 任务完成率
- 业务成功率
等关键业务指标,统一接入 SkyWalking,与技术指标(响应时间、错误率)一起分析。
198

被折叠的 条评论
为什么被折叠?



