描述
Pagerduty Provider 实现了与 PagerDuty 的集成,以在 Keep 内创建、管理和同步事件和告警。它同时支持直接 API 密钥认证和 OAuth2,为安全集成提供了更大的灵活性。
认证
此提供商需要身份验证。
- routing_key: 路由密钥(集成或规则集密钥)(必需:False,敏感:False)
- api_key: API 密钥(用户或团队 API 密钥)(必需:False,敏感:True)
- oauth_data: 用于 OAuth 流程(必需:False,敏感:True)
- service_id: 服务 ID(如果提供,Keep 将仅在此服务上操作)(必需:False,敏感:False)
某些范围可能需要才能通过提供商执行特定操作或查询。以下是相关范围及其用例的摘要:
- incidents_read: 读取事件数据。(强制)
- incidents_write: 写入事件。
- webhook_subscriptions_read: 读取 webhook 数据。
- webhook_subscriptions_write: 写入 webhooks。
在工作流中
此提供商可用于工作流。
作为"步骤"来查询数据,示例:
steps:
- name: Query pagerduty
provider: pagerduty
config: "{{ provider.my_provider_name }}"
with:
incident_id: {value}
incident_key: {value}作为"操作"来进行更改或更新数据,示例:
actions:
- name: Query pagerduty
provider: pagerduty
config: "{{ provider.my_provider_name }}"
with:
title: {value} # 警报或事件的标题
dedup: {value} # 用于事件 API 去重的字符串,最多 255 个字符
service_id: {value} # 事件的服务 ID
routing_key: {value} # API routing_key(可选),如果未指定,则回退到提供商中提供的那个
requester: {value} # 请求创建事件的用户电子邮件
incident_id: {value} # 识别事件的密钥。如果未提供则生成 UUID
event_type: {value} # 事件 API 的事件类型(trigger/acknowledge/resolve)
severity: {value} # 事件 API 的严重程度(critical/error/warning/info)
source: {value} # 事件 API 的来源字段
priority: {value} # 事件优先级参考 ID
status: {value} # 事件更新的状态(resolved/acknowledged)
resolution: {value} # 已解决事件的解决备注
body: {value} # 事件的正文,详见 https://developer.pagerduty.com/api-reference/a7d81b0e9200f-create-an-incident#request-body
kwargs: {value} # 附加的事件/事件字段请查看以下工作流示例:
拓扑
此提供商向 Keep 拉取拓扑。可用于关联和映射,并作为警报和事件的上下文。
连接 Provider
要将 Keep 连接到 PagerDuty:
- Routing Key:用于通过 PagerDuty Events API 发布事件。在 PagerDuty UI 中,这显示为集成密钥。
- API Key:用于通过 PagerDuty Incidents API 创建和管理事件。
- Service Id(可选):如果提供,keep 将在服务范围内操作。
- OAuth2:令牌管理由 Keep 自动处理。

::: note 您可以在 PagerDuty Web 应用的 Services > Service Directory > Your service > Integrations > Expand Events API 下找到您的路由密钥(PagerDuty UI 中的集成密钥),并选择您要使用的集成。 您可以在 PagerDuty Web 应用的 Configuration > API Access 下找到您的 API 密钥。
routing_key 用于使用 events API 向 PagerDuty 发布事件。 api_key 用于使用 incidents API 创建事件。 :::
在开源版本中启用 OAuth
如果您想在自托管 Keep 的开源版本中使用 OAuth,可以按照以下步骤操作:
- 创建一个 PagerDuty 账户
- 在账户页面中,转到 Integrations > App Registration

- 点击右上角的 New App 蓝色按钮
- 填写必填字段
- 在 Functionality 部分选择"OAuth 2.0"并点击 Next
- 在 Redirect URL 中,您需要添加 Keep 的 PagerDuty OAuth2 重定向 URL,这取决于您的部署 URL。例如,如果 Keep 部署在 http://localhost:3000,则重定向 URL 为 http://localhost:3000/providers/oauth2/pagerduty

- 在 Authorization 部分,选择 Scoped OAuth 并选择以下范围:
- Abilities: Read Access
- Incidents: Read/Write Access
- Services: Read/Write Access
- Webhook Subscriptions: Read/Write Access
- 点击右下角的 Register App 蓝色按钮
- 从 OAuth 2.0 Client Information 模态框中复制 Client ID 和 Client Secret,并在 Keep 后端部署中设置
PAGERDUTY_CLIENT_ID和PAGERDUTY_CLIENT_SECRET环境变量。

PagerDuty Webhook 集成
默认情况下,当 Keep 安装为 webhook 集成时,它会订阅所有事件("Account Scope")。

如果您希望将 Keep 限制为某些特定服务,可以选择 Service 范围并选择您要订阅的服务。

在 Integrations > Generic Webhooks (v3) 下找到此页面
注意事项
provider 使用 events API 或 incidents API 来创建告警或事件。选择使用哪个 API 取决于存在 routing_key 还是 api_key。
使用免费版 PagerDuty 时,过期的试用版可能会在 Keep 中导致"pagerduty scopes are invalid"错误。
Webhook 集成修改
webhook 集成将 Keep 添加为 Pagerduty 内"Integrations" API 中的目标。 这授予 Keep 对 Pagerduty 内以下范围的访问权限:
webhook_subscriptions_readwebhook_subscriptions_write
相关链接
- Pagerduty Events API documentation: https://v2.developer.pagerduty.com/docs/send-an-event-events-api-v2
- Pagerduty Incidents API documentation: https://v2.developer.pagerduty.com/docs/create-an-incident-incidents-api-v2