Grafana OnCall 外发 Webhook 配置与使用指南
前言
在现代运维体系中,告警通知的自动化处理是提高运维效率的关键。Grafana OnCall 作为一款专业的告警管理工具,其外发 Webhook 功能能够将告警信息灵活地推送到各类系统,实现告警信息的自动化流转和处理。本文将详细介绍 Grafana OnCall 中外发 Webhook 的配置方法、使用场景以及高级技巧。
外发 Webhook 概述
外发 Webhook 是 Grafana OnCall 向外部系统发送数据的机制,它支持通过 HTTP 请求将告警信息推送到指定 URL。该功能具有以下特点:
- 事件驱动:可根据不同类型的事件触发
- 高度可定制:支持 Jinja2 模板引擎处理数据
- 灵活集成:可与各类第三方系统对接
版本兼容性说明
对于 v1.3.11 之前版本创建的 Webhook,系统会标记为 (Legacy)。这些 Webhook 仍能正常工作,但无法直接编辑。如需修改,需使用"Make a copy"功能创建新 Webhook 并更新相关配置。
Webhook 创建步骤
- 导航至 Outgoing Webhooks 页面
- 点击 + Create 按钮
- 选择预设模板或创建自定义 Webhook
- 配置各项参数(详见下文)
- 保存配置
核心配置参数详解
基础配置
| 参数名 | 说明 | 必填 | 支持模板 | 默认值 | |--------|------|------|----------|--------| | 名称 | Webhook 显示名称 | 是 | 否 | 空 | | 启用状态 | 控制 Webhook 是否生效 | 是 | 否 | True | | 所属团队 | 设置 Webhook 的可见范围 | 否 | 否 | 空 |
触发条件
| 参数名 | 说明 | 必填 | 支持模板 | 默认值 | |--------|------|------|----------|--------| | 触发类型 | 决定哪些事件会触发 Webhook | 是 | 否 | 无 | | 集成限制 | 限制仅特定集成的事件触发 | 否 | 否 | 无 |
请求配置
| 参数名 | 说明 | 必填 | 支持模板 | 默认值 | |--------|------|------|----------|--------| | HTTP 方法 | 请求使用的 HTTP 方法 | 是 | 否 | POST | | Webhook URL | 目标 URL(需完整域名) | 是 | 是 | 空 | | 请求头 | 自定义请求头 | 否 | 是 | 空 | | 认证信息 | 基础认证或授权头 | 否 | 部分 | 空 |
数据配置
| 参数名 | 说明 | 必填 | 支持模板 | 默认值 | |--------|------|------|----------|--------| | 触发模板 | 动态判断是否执行 Webhook | 否 | 是 | 空 | | 数据体 | 请求主体内容 | 否 | 是 | 空 | | 转发全部 | 发送完整 Webhook 负载 | 否 | 否 | False |
事件类型详解
Grafana OnCall 支持多种触发事件类型:
- 手动或升级步骤:作为升级链中的一步触发
- 个人通知:用户收到通知时触发
- 告警组创建:新告警组产生时触发
- 已确认:告警被确认时触发
- 已解决:告警被解决时触发
- 静默/取消静默:告警静默状态变化时触发
- 未解决/未确认:告警状态回退时触发
- 状态变更:任何状态变化时触发
模板引擎使用指南
Grafana OnCall 使用 Jinja2 模板引擎处理数据,支持在多个字段中使用模板变量。模板可访问的数据结构包括:
核心数据结构
{
"event": {}, // 事件信息
"user": {}, // 用户信息
"alert_group": {}, // 告警组详情
"alert_payload": {}, // 告警内容
"integration": {}, // 集成信息
"responses": {} // 其他 Webhook 响应
}
常用模板示例
- 基础告警信息提取:
{
"alert_name": "{{ alert_payload.labels.alertname }}",
"description": "{{ alert_payload.annotations.description }}"
}
- 条件判断:
{% if alert_group.state == 'resolved' %}
"status": "已解决"
{% else %}
"status": "待处理"
{% endif %}
- 循环处理:
"notified_users": [
{% for user in notified_users %}
"{{ user.email }}"{% if not loop.last %},{% endif %}
{% endfor %}
]
高级应用技巧
响应数据复用
通过 responses
对象可以访问同一告警组中其他 Webhook 的响应数据,实现工作流串联:
"ticket_id": "{{ responses['WHP936BM1GPVHQ'].content.ticket_id }}"
UID 获取方法
各类对象的 UID 可通过以下方式获取:
- Webhook:表格中的信息图标
- 集成:集成名称旁的信息图标
- 路由:集成详情页中的信息图标
- 告警组:浏览器地址栏中的 URL
- 用户:用户详情页 URL
最佳实践建议
- 超时控制:确保目标系统在4秒内响应,避免超时
- 错误处理:在模板中添加默认值处理,如
{{ value|default('N/A') }}
- 日志检查:定期查看 Webhook 执行记录,监控成功率
- 版本管理:对重要 Webhook 配置进行版本备份
常见问题解答
Q: Webhook 执行失败怎么办? A: 检查"Last Run"中的响应信息,确认目标 URL 可达且返回正确格式
Q: 如何测试 Webhook? A: 可通过创建测试告警或使用集成中的"Send Demo Alert"功能
Q: 模板语法错误如何排查? A: 系统会标记模板错误位置,建议先在简单字段测试复杂模板
通过本文介绍,您应该已经掌握了 Grafana OnCall 外发 Webhook 的核心配置方法和使用技巧。合理利用这一功能,可以大幅提升告警处理的自动化程度和响应效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考