SkyWalking 告警配置:alarm-settings.yml 实战指南

入 SkyWalking 生产落地的关键环节 —— 监控与告警配置

一份合理的 alarm-settings.yml 文件,能让系统在出现性能瓶颈、错误激增时自动通知你,真正实现“从被动救火到主动防控”。

下面,我为你提供一份 实战级、可落地的告警规则配置指南,包含:

  • ✅ 告警规则编写语法
  • ✅ 常见场景的规则示例(响应时间、错误率、JVM 等)
  • ✅ 生产环境最佳实践
  • ✅ 如何测试告警是否生效

🚨 SkyWalking 告警配置:alarm-settings.yml 实战指南

📌 文件路径:apache-skywalking-apm-bin/config/alarm-settings.yml


一、告警规则基本结构

rules:
  # 规则名称(自定义,建议语义化)
  rule_name:
    metrics-name: service_resp_time     # 监控的指标
    op: ">"                             # 比较操作符
    threshold: 1000                     # 阈值(单位:ms/%等)
    period: 10                          # 统计周期(分钟)
    count: 3                            # 连续几个周期满足条件触发
    silence-period: 5                   # 静默期(分钟),防止重复告警
    message: "服务响应超时: {name}, 当前值: {value}ms"  # 告警消息模板

二、常用指标名称(metrics-name)

指标说明
service_resp_time服务 P99 响应时间(ms)
service_sla服务成功率(%)
service_cpm每分钟调用次数(Calls Per Minute)
instance_resp_time实例 P99 响应时间
jvm_memory_old_usageJVM 老年代使用率(%)
jvm_gc_countFull GC 次数/分钟
endpoint_avg端点(接口)平均响应时间
database_access_resp_time数据库访问 P99 耗时
database_connection_usage数据库连接池使用率

🔍 查看所有指标:SkyWalking UI → Metrics Browser


三、实战告警规则示例

1. 🔥 服务响应时间过高(P99 > 1秒 持续10分钟)
service_resp_time_rule:
  metrics-name: service_resp_time
  op: ">"
  threshold: 1000
  period: 10
  count: 3
  silence-period: 5
  message: "⚠️ 服务响应超时\n📌 服务: {name}\n📊 P99: {value}ms\n🕒 发生时间: {startTime}"

2. ❌ 服务错误率过高(SLA < 95%)
service_sla_rule:
  metrics-name: service_sla
  op: "<"
  threshold: 95.0
  period: 10
  count: 3
  silence-period: 5
  message: "❌ 服务错误率过高\n📌 服务: {name}\n📊 成功率: {value}%\n💡 可能存在异常或依赖故障\n🕒 发生时间: {startTime}"

3. 📉 服务流量突降(可能服务宕机)
service_qps_drop_rule:
  metrics-name: service_cpm
  op: "<"
  threshold: 10
  period: 5
  count: 3
  silence-period: 10
  message: "📉 服务流量异常下降\n📌 服务: {name}\n📊 当前QPS: {value}\n💡 可能服务宕机或注册异常\n🕒 发生时间: {startTime}"

4. 🔥 某关键接口响应时间 > 2秒
critical_endpoint_slow:
  metrics-name: endpoint_avg
  op: ">"
  threshold: 2000
  period: 5
  count: 3
  silence-period: 5
  endpoint-name: "/api/order/create"  # 可选:只监控特定接口
  message: "🐌 关键接口超时\n📌 接口: {name}\n📊 平均耗时: {value}ms\n🕒 发生时间: {startTime}"

5. 💣 JVM 老年代内存使用率 > 90%
jvm_memory_high_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💡 建议检查内存泄漏\n🕒 发生时间: {startTime}"

6. 🔄 Full GC 频繁(> 5次/分钟)
jvm_gc_freq_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💡 可能存在内存压力或对象频繁创建\n🕒 发生时间: {startTime}"

四、通知渠道配置(Webhook)

SkyWalking 支持通过 Webhook 发送到:

  • 钉钉
  • 飞书
  • 企业微信
  • Prometheus Alertmanager
  • 自定义告警中心
webhooks:
  # 钉钉机器人(需设置安全令牌)
  - https://oapi.dingtalk.com/robot/send?access_token=your-dingtalk-token

  # 飞书机器人
  - 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

  # 自定义告警系统
  # - http://alert-center.internal/api/v1/alerts

✅ 消息格式:SkyWalking 会自动发送 JSON 到 Webhook,包含告警详情。


五、生产环境最佳实践

项目建议
🎯 分级告警CRITICAL / WARN,不同等级通知不同人
🔕 静默期设置 silence-period 避免刷屏(如 5~15 分钟)
🧩 分环境配置dev / test / prod 使用不同阈值或关闭部分告警
📊 避免误报count: 3 表示连续3个周期才触发,避免瞬时抖动
📅 定期回顾每月 review 无效告警,优化规则
🛡️ 安全通知Webhook 使用加签或 Token 认证

六、如何测试告警是否生效?

方法 1:制造异常流量

写一个测试接口,模拟慢响应和错误:

@GetMapping("/test/slow")
public String slow() throws InterruptedException {
    Thread.sleep(2000);
    return "slow";
}

@GetMapping("/test/error")
public String error() {
    if (Math.random() > 0.5) {
        throw new RuntimeException("模拟异常");
    }
    return "ok";
}

连续调用:

for i in {1..100}; do curl http://localhost:8080/test/slow; done
方法 2:查看 OAP 日志
tail -f logs/alarm.log

应看到类似:

[Alarm] Rule: service_resp_time_rule, Service: order-service, Value: 1250ms
[Alarm] Webhook sent to: https://oapi.dingtalk.com/...
方法 3:检查是否收到通知
  • 查看钉钉/飞书群消息
  • 检查邮件收件箱(如果配置了 email)

七、高级技巧

技巧说明
📌 自定义消息模板使用 {name}, {value}, {startTime} 等变量
🎯 按服务过滤使用 include-names / exclude-names
⏱️ 动态阈值目前不支持,可通过外部系统实现(如 Prometheus)
📈 结合 Grafana将 SkyWalking 指标导出到 Prometheus,用 Alertmanager 做更复杂告警

✅ 总结:告警规则编写口诀

“一选指标,二设阈值,三定周期,四配通知”

只要记住:

  • 告警是基于聚合指标
  • 规则是周期性检查
  • 消息要清晰可读
  • 通知要准确送达

你就能构建一个智能、可靠、不扰民的监控告警体系

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值