观测云告警集成 PagerDuty 最佳实践

PagerDuty 是一款为企业 IT 部门提供事件响应的软件。您可以将告警管理接入 PagerDuty 从而触发自动事件或追踪服务变化。当服务出现问题时,PagerDuty 支持以电话、短信、邮件等方式通知企业 IT 部门。本文介绍观测云的告警事件如何推送到 PagerDuty 来丰富告警能力。

最佳实践
banner.jpg

简介

PagerDuty 是一款为企业 IT 部门提供事件响应的软件。您可以将告警管理接入 PagerDuty 从而触发自动事件或追踪服务变化。当服务出现问题时,PagerDuty 支持以电话、短信、邮件等方式通知企业 IT 部门。本文介绍观测云的告警事件如何推送到 PagerDuty 来丰富告警能力。

关于 PagerDuty 的更多信息,请参见 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 为观测云告警的事件内容(见下图)。

Get a tailored plan

Contact us

Join the community

Scan with WeChat
to join the community

Try Guance

Start online and pay only for what you use.

Get started

Choose a Guance plan

Code hosting