简介
PagerDuty 是一款为企业 IT 部门提供事件响应的软件。您可以将告警管理接入 PagerDuty 从而触发自动事件或追踪服务变化。当服务出现问题时,PagerDuty 支持以电话、短信、邮件等方式通知企业 IT 部门。本文介绍观测云的告警事件如何推送到 PagerDuty 来丰富告警能力。
关于 PagerDuty 的更多信息,请参见 PagerDuty 官网。
前置条件
- 注册观测云 SaaS:Guance
- 观测云组件 Func:单机部署
- 已具备 Pagerduty 账号
集成方案
1、配置 PagerDuty
- 创建 service
- 选择 Generate a new Escalation Policy
- 选择 Intelligent
- 选择 V2
- 记录下 Events API V2 的 Integration Key 和 Integration URL (Alert Events)
2、Func 提供 Webhook 服务
创建授权链接脚本
需要改动的地方有:webhook_pagerduty、routing_key 两个字端对应 1 步骤配置 PagerDuty 中的 Events API V2 的 Integration Key 和 Integration URL (Alert Events)值。
注:该脚本仅仅对观测云常用的告警内容做了提取并推动到了 PagerDuty,读者可根据使用场景灵活调整 params 的参数部分。调整参考:接收观测云 Webhook 自定义告警。
import requests
import json
webhook_pagerduty = 'https://events.pagerduty.com/v2/enqueue'
@DFF.API('Webhook 对接')
def webhook_accept(**event):
#print(f'事件数据:{event}')
params = {
"payload": {
"summary": event.get('df_message'),
"severity": event.get('df_status'),
"source": event.get('df_title')
},
"routing_key": "000000000000000000000000000",
"event_action": "trigger"
}
r = requests.post(webhook_pagerduty, data=json.dumps(params), timeout=3)
print(f'接口返回:{r.status_code} {r.text}')
return r.status_code, r.text
发布为授权链接
发布后会产生观测云调用所需的 Webhook 地址,配置到 3 步骤中的 Webhook 地址里。
3、观测云配置 Webhook 通知方式
配置观测云的通知方式为 Webhook 如下图,Webhook 的地址为 Func 发布的授权链接地址。
4、配置告警策略
将 3 步骤 Webhook 通知方式关联到 Pageduty 的告警通知策略中,如下图对紧急、告警、信息都关联到 pagerduty 的通知方式。
效果展示
触发一个告警
在观测云配置《监控告警》,并触发告警事件,如下图所示:
PagerDuty 平台查看告警事件
在 PagerDuty 的 All Incidents 页面查看手动触发的告警事件。
Summary 为观测云告警的事件内容(见下图)。