下面是一份 完整、实用、生产可用的 alarm-settings.yml 配置模板,适用于 SkyWalking 9.x 版本(如 9.7.0),涵盖了服务、实例、端点、数据库等常见监控场景,并支持 钉钉/飞书/企业微信/Webhook 告警。
🚨 alarm-settings.yml 完整配置模板(适用于 SkyWalking 9.x)
✅ 说明:此文件应放置在 SkyWalking OAP Server 的
config/目录下,OAP 启动时自动加载。
# alarm-settings.yml
# SkyWalking 告警规则配置文件
# 支持服务、服务实例、端点、数据库等维度的指标监控
rules:
# ========================================================================
# 1. 服务级别告警
# ========================================================================
# 服务响应时间过高(P99 > 1秒 持续10分钟)
service_resp_time_rule:
metrics-name: service_resp_time
op: ">"
threshold: 1000 # 毫秒
period: 10 # 统计周期(分钟)
count: 3 # 连续3个周期触发
silence-period: 5 # 静默期(分钟),避免重复告警
message: "⚠️ 服务响应超时\n📌 服务: {name}\n📊 当前P99: {value}ms\n🕒 发生时间: {startTime}"
# 服务错误率过高(SLA < 95%)
service_sla_rule:
metrics-name: service_sla
op: "<"
threshold: 95.0 # 成功率低于95%
period: 10
count: 3
silence-period: 5
message: "❌ 服务错误率过高\n📌 服务: {name}\n📊 成功率: {value}%\n📉 触发阈值: <95%\n🕒 发生时间: {startTime}"
# 服务吞吐量突降(QPS < 10,且之前有流量)
service_qps_drop_rule:
metrics-name: service_cpm # Calls Per Minute
op: "<"
threshold: 10
period: 10
count: 3
silence-period: 10
message: "📉 服务流量异常下降\n📌 服务: {name}\n📊 当前QPS: {value}\n🕒 发生时间: {startTime}\n💡 可能服务宕机或路由异常"
# ========================================================================
# 2. 服务实例级别告警
# ========================================================================
# 实例响应时间过高
instance_resp_time_rule:
metrics-name: instance_resp_time
op: ">"
threshold: 1200
period: 10
count: 3
silence-period: 5
message: "🔥 实例响应慢\n📌 服务: {name}\n📊 P99: {value}ms\n🕒 发生时间: {startTime}"
# 实例JVM内存使用率过高(老年代 > 90%)
instance_jvm_memory_rule:
metrics-name: jvm_memory_old_usage # 老年代使用率(百分比)
op: ">"
threshold: 90.0
period: 10
count: 3
silence-period: 15
message: "MemoryWarning! JVM老年代内存过高\n📌 服务: {name}\n📊 使用率: {value}%\n🕒 发生时间: {startTime}\n💡 建议检查内存泄漏"
# 实例GC频繁(Full GC 次数/分钟 > 5)
instance_jvm_gc_count_rule:
metrics-name: jvm_gc_count
op: ">"
threshold: 5
period: 1
count: 3
silence-period: 10
message: "'gc' JVM GC频繁\n📌 服务: {name}\n📊 Full GC次数/分钟: {value}\n🕒 发生时间: {startTime}\n💡 可能存在内存压力"
# ========================================================================
# 3. 端点(Endpoint)级别告警
# ========================================================================
# 某个关键接口响应时间过高
endpoint_resp_time_rule:
metrics-name: endpoint_avg
op: ">"
threshold: 2000 # 2秒
period: 5
count: 3
silence-period: 5
message: "🐌 关键接口超时\n📌 接口: {name}\n📊 平均耗时: {value}ms\n🕒 发生时间: {startTime}"
# 端点错误率过高
endpoint_sla_rule:
metrics-name: endpoint_sla
op: "<"
threshold: 90.0
period: 5
count: 3
silence-period: 5
message: "💥 接口错误率过高\n📌 接口: {name}\n📊 成功率: {value}%\n🕒 发生时间: {startTime}"
# ========================================================================
# 4. 数据库相关告警
# ========================================================================
# 数据库访问响应时间过高
database_access_rule:
metrics-name: database_access_resp_time
op: ">"
threshold: 800
period: 10
count: 3
silence-period: 10
message: "🗄️ 数据库访问变慢\n📌 DB实例: {name}\n📊 响应时间: {value}ms\n🕒 发生时间: {startTime}"
# 数据库连接池使用率过高
database_pool_usage_rule:
metrics-name: database_connection_usage
op: ">"
threshold: 90.0
period: 5
count: 3
silence-period: 10
message: "🔌 数据库连接池紧张\n📌 DB: {name}\n📊 使用率: {value}%\n🕒 发生时间: {startTime}\n💡 建议扩容或优化连接"
# ========================================================================
# 通知渠道配置
# ========================================================================
# Webhook(支持钉钉、飞书、企业微信等)
webhooks:
# 钉钉机器人(需设置安全令牌)
- https://oapi.dingtalk.com/robot/send?access_token=your-dingtalk-token-here
# 飞书机器人
- https://open.feishu.cn/open-apis/bot/v2/hook/your-feishu-token
# 企业微信机器人
- https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your-wechat-work-key
# 自定义告警中心(如 Prometheus Alertmanager)
# - http://alert-center.internal/api/v1/alerts
# ========================================================================
# Email 告警(可选)
# 需要启用 email 插件
# ========================================================================
# email:
# smtp-host: smtp.example.com
# smtp-port: 587
# username: alert@example.com
# password: your-app-password
# from: alert@example.com
# to: devops@example.com, team-leader@example.com
# cc: sre-team@example.com
# ========================================================================
# gRPC 告警(高级用法,用于对接自定义系统)
# ========================================================================
# grpc:
# target: alarm-receiver.internal:9876
# authority: alarm-receiver.internal
📌 配置说明与最佳实践
1. 常用指标名称(metrics-name)
| 指标 | 说明 |
|---|---|
service_resp_time | 服务P99响应时间(ms) |
service_sla | 服务成功率(%) |
service_cpm | 每分钟调用次数 |
instance_resp_time | 实例P99响应时间 |
jvm_memory_old_usage | JVM老年代使用率(%) |
jvm_gc_count | Full GC次数/分钟 |
endpoint_avg | 端点平均响应时间 |
database_access_resp_time | 数据库访问P99耗时 |
database_connection_usage | 数据库连接池使用率 |
🔍 查看所有可用指标:进入 SkyWalking UI → Metrics Browser
2. 关键参数解释
| 参数 | 说明 |
|---|---|
op | 比较操作符:>, <, = |
threshold | 阈值(数值) |
period | 统计周期(单位:分钟) |
count | 连续多少个周期满足条件才触发告警 |
silence-period | 告警触发后,相同问题的静默时间(分钟) |
message | 支持的变量:{name}, {value}, {startTime}, {endpoint} |
3. Webhook 消息格式(以钉钉为例)
SkyWalking 会自动发送 JSON 到 Webhook:
{
"msgtype": "text",
"text": {
"content": "⚠️ 服务响应超时\n📌 服务: order-service\n📊 当前P99: 1250ms\n🕒 发生时间: 2025-04-05 14:30:00"
}
}
✅ 钉钉机器人需设置“自定义关键词”或“加签”安全策略。
4. 生产环境建议
| 项目 | 建议 |
|---|---|
| 🎯 告警分级 | 分 CRITICAL / WARN,不同等级通知不同人 |
| 🔕 静默期 | 设置合理静默期,避免刷屏 |
| 📊 分环境配置 | dev / test / prod 使用不同阈值或关闭部分告警 |
| 🧩 结合运维流程 | 告警 → 工单系统 → 自动升级机制 |
| 📅 定期回顾 | 每月 review 无效告警,优化规则 |
✅ 如何验证告警是否生效?
- 启动 OAP Server
- 查看日志:
logs/skywalking-oap.log- 应看到:
Alarm rules loaded加载成功
- 应看到:
- 制造异常:
- 写一个接口
Thread.sleep(2000) - 调用多次触发
endpoint_resp_time_rule
- 写一个接口
- 检查是否收到钉钉/飞书消息
📦 文件保存路径
skywalking-oap-server/
├── config/
│ └── alarm-settings.yml ← 放在这里
├── bin/
└── libs/
⚠️ 修改后需重启 OAP Server 生效(v9.x 不支持热加载)
🎁 附件:钉钉机器人配置指南
- 在群聊中添加“自定义机器人”
- 设置安全策略:加签(推荐)
- 复制 Webhook 地址:
https://oapi.dingtalk.com/robot/send?access_token=xxx×tamp=xxx&sign=xxx - 填入
webhooks列表

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



