告警与指标
SkyWalking 的 OAP 在聚合 Trace / Metric 的同时,也会按规则对指标做阈值判断并触发告警。理解告警规则、指标来源与扩展入口,是把它从"看板工具"升级为"主动预警系统"的关键。
指标来源
SkyWalking 里的指标(Metric)主要有两类来源:
| 来源 | 说明 |
|---|---|
| 由 Trace 聚合生成 | 基于 Trace 聚合出 Service / Instance / Endpoint 的 RT、QPS、错误率等 |
| 从外部拉取 | 通过 Prometheus Fetcher 等接入 Prometheus 指标(如 JVM、K8s、中间件指标) |
因此即使不额外埋点,接入 Agent 的服务也会自动产生 Service / Instance / Endpoint 三层的响应时间、吞吐、错误率等核心指标,用于健康度趋势与告警。
告警规则
SkyWalking 通过 oap-server 的告警规则文件(alarm-settings.yml)定义规则:每当指标满足条件时触发告警,并可通过 Webhook 通知外部系统。
yaml
rules:
# 服务平均响应时间超阈值
service_resp_time_rule:
metrics-name: service_resp_time
op: ">"
threshold: 1000
period: 10
count: 3
message: "服务响应时间超过 1000ms"
# 服务成功率低于阈值
service_sla_rule:
metrics-name: service_sla
op: "<"
threshold: 8000 # 80.00%
period: 10
count: 2
message: "服务成功率低于 80%"
webhooks:
- http://alerts.example.com/skywalking常用字段含义:
| 字段 | 作用 |
|---|---|
metrics-name | 要监控的指标名,如 service_resp_time、service_sla、endpoint_sla |
op / threshold | 比较运算符与阈值 |
period / count | 在多少个周期内满足多少次才触发(去抖动) |
silence-period | 静默期,避免风暴 |
message | 告警描述 |
webhooks | 触发送往外部系统的回调 |
具体指标名与语法以你所用 OAP 版本的
alarm-settings.yml为准,不同大版本略有差异。
告警抑制与风暴控制
生产环境同一故障会触发大量服务关联告警,需要控制:
- 静默期(silence-period):同一规则触发后静默一段时间,避免刷屏。
- 组合(Composite):多条件同时满足才告警,降低误报。
- 分级:按严重程度把告警分级,路由到不同通知渠道。
- 收敛:在 Webhook 端做聚合/去重,避免告警风暴。
与 Prometheus/Alertmanager 的关系
| 能力 | SkyWalking | Prometheus + Alertmanager |
|---|---|---|
| 数据来源 | Trace 聚合 + 自有 Receiver/Fetcher | 主动抓取各类 Exporter |
| 告警规则 | alarm-settings.yml | prometheus alert rules |
| 通知 | Webhook 等 | Alertmanager 路由到钉钉/邮件/Webhook 等 |
| 场景 | 链路/服务健康为主 | 通用指标监控为主 |
两者可结合:SkyWalking 负责链路与业务指标告警,Prometheus 负责基础设施与通用指标;Webhook 或打通数据源实现协同。
二次开发与扩展入口
当原生能力不满足时,可在以下层面扩展:
- 自定义指标:通过 Agent 手动埋点(Metric)或 OAP 自有的指标定义,产出业务自定义指标。
- Receiver/Fetcher:接入新数据源(如自定义 Exporter、Kafka 数据源)。
- GraphQL API:UI 通过 GraphQL 查询,二次开发可复用同一 API 做自定义仪表盘。
- 存储插件:接入自定义存储或对已有存储做优化。
- Webhook 集成:把告警接入公司的统一告警/工单平台。
排查思路
| 场景 | 做法 |
|---|---|
| 想监控某服务的响应时间 | 确认该服务已接入 Agent,用 service_resp_time 配置规则 |
| 看拓扑与链路图 | UI → 拓扑页 / Trace 页,先定位,再考虑是否落告警 |
| 指标总为 0 | 检查 Agent 是否上报、指标名拼写、OAP Receiver 是否开启 |
| 告警风暴 | 收紧 silence-period、用组合规则、Webhook 端做收敛 |
指标与 Trace 的关系(指标先发现异常、Trace 再钻取定位)参见 APM / 三大信号。