【SkyWalking】配置告警规则并通过 Webhook 推送钉钉通知_skywalking告警规则
🧭 本文为 【SkyWalking 系列】第 3 篇
👉 系列导航:点击跳转
【SkyWalking】配置告警规则并通过 Webhook 推送钉钉通知
简介
介绍 SkyWalking 告警机制、告警规则格式以及如何通过 webhook 方式将告警信息发送到钉钉。
引入
服务响应超时、失败率升高是系统预警的重点。SkyWalking 提供默认规则与自定义 webhook 推送机制,快速闭环告警链路。
SkyWalking 告警配置详解
在微服务系统中,及时发现接口异常、响应变慢、调用失败等问题是保障系统稳定性的关键。SkyWalking 不仅能提供可视化链路追踪,也内置了告警机制,能够自动监控服务运行状态并触发预警。
1 告警触发场景示例
当某个接口出现较长延迟、失败率升高时,SkyWalking 会自动检测并触发告警,如下图所示:
你可以在 Web UI 的 Alarm 页面 中查看最近的告警记录,包括服务名称、告警时间、告警指标和描述等信息。
2 SkyWalking 默认内置的告警规则
SkyWalking 提供了一些常用的默认规则,这些规则覆盖了服务响应时间、成功率、调用性能等关键维度。例如:
随着 SkyWalking 的版本不断迭代,也在持续新增其他告警规则
3 告警配置文件位置与格式
所有告警规则统一配置在:config/alarm-settings.yml
配置文件示例截图如下所示:
4 告警规则结构说明
每条规则都是以 YAML 格式编写,由如下属性组成:
metrics-name
op
>
、<
、=
等threshold
period
count
silence-period
message
{{name}}
、{{value}}
每个规则都由相同的属性组成,这些属性的含义如下图:
示例规则:
rules: slow_response_rule: metrics-name: service_resp_time op: \">\" threshold: 1000 period: 1 count: 3 silence-period: 5 message: | [服务慢响应告警] 服务名称: {{ name }} 平均响应时间: {{ value }}ms
如果想要调整默认的规则,比如监控返回的信息,监控的参数等等,只需要改动上述配置文件中的参数即可。
5 告警通知:Webhook 钩子集成
如果你想将告警信息实时推送给运维人员或系统平台(如钉钉、飞书、微信、邮件等),SkyWalking 提供了对 Webhook 机制的原生支持。
Webhook 本质上是一个 POST 请求,一旦告警被触发,SkyWalking 会自动将告警信息以 JSON 格式推送到你配置的 HTTP 接口。
✅ 修改规则参数
除了内置的几种默认规则外,你也可以按需修改响应时间、成功率等阈值,或者新增自定义规则,只需编辑:config/alarm-settings.yml
通过调整其中的参数即可灵活控制告警粒度与频率。
✅ Webhook 告警触发机制说明
- 告警触发后,将以 POST 请求 的方式调用指定的 webhook 地址;
- 请求体为
application/json
格式,内容为AlarmMessage
实例; - Webhook 接口的入参字段必须与
AlarmMessage
类一致。
⚠️ 注意:
AlarmMessage
类在不同 SkyWalking 版本中字段可能会变化,请前往你使用版本的源码中查看:org.apache.skywalking.oap.server.core.alarm.AlarmMessage
示意图如下:
✅ 示例:创建自定义告警接收模块
你可以创建一个新微服务(如 skywalking-alarm
),并定义一个简单的告警接收接口:
@RestController@RequestMapping(\"/alarm\")public class AlarmWebhookController { @PostMapping public void receiveAlarm(@RequestBody AlarmMessage message) { // 可将告警发送至钉钉、邮件、日志或数据库等 System.out.println(\"接收到告警: \" + message); }}
✅ 配置 alarm-settings.yml 中的 webhook 地址
在 config/alarm-settings.yml
文件中添加:
webhooks: - http://localhost:1004/alarm # 自定义告警接收接口地址
✅ 测试告警触发
使用前文中示例接口(如 http://localhost:1003/order/list
),进行多次慢响应调用(模拟接口卡顿,例如睡眠 2 秒),触发响应时间告警。
触发成功后,SkyWalking 会:
- 控制台打印告警日志;
- 向 webhook 接口发送 JSON 告警数据;
- 接收模块将其记录或转发至通知渠道。
✅ 总结
Webhook 机制让 SkyWalking 的告警不仅停留在日志层面,还能触发外部通知或自动化运维脚本。配合钉钉机器人、飞书通知、企业微信或邮件平台,你可以快速搭建完整的微服务监控告警链路,提升故障响应效率。
🧩 本文为【SkyWalking系列】第 3 篇
📌 喜欢记得点赞、收藏,或关注我持续更新更多微服务实战内容!
📮 有问题欢迎评论区讨论,看到必回 🙌
👉 下一篇预告:系列4:SkyWalking】性能剖析实战:定位慢接口与阻塞代码(欢迎提前收藏)