Skip to content

关于本页

本页介绍更夫所基于的开源内核 Keep 的通用能力。更夫在其上提供国内化增强:钉钉/企业微信/飞书通知、国产大模型接入、LDAP 认证与值班管理。部署与上手请看快速上手。

描述 ​

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。

在工作流中 ​

此提供商可用于工作流。

作为"步骤"来查询数据,示例:

yaml
steps:
    - name: Query pagerduty
      provider: pagerduty
      config: "{{ provider.my_provider_name }}"
      with:
        incident_id: {value}
        incident_key: {value}

作为"操作"来进行更改或更新数据,示例:

yaml
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,可以按照以下步骤操作:

  1. 创建一个 PagerDuty 账户
  2. 在账户页面中,转到 Integrations > App Registration
  1. 点击右上角的 New App 蓝色按钮
  2. 填写必填字段
  3. 在 Functionality 部分选择"OAuth 2.0"并点击 Next
  4. 在 Redirect URL 中,您需要添加 Keep 的 PagerDuty OAuth2 重定向 URL,这取决于您的部署 URL。例如,如果 Keep 部署在 http://localhost:3000,则重定向 URL 为 http://localhost:3000/providers/oauth2/pagerduty
  1. 在 Authorization 部分,选择 Scoped OAuth 并选择以下范围:
  • Abilities: Read Access
  • Incidents: Read/Write Access
  • Services: Read/Write Access
  • Webhook Subscriptions: Read/Write Access
  1. 点击右下角的 Register App 蓝色按钮
  2. 从 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_read
  • webhook_subscriptions_write

相关链接 ​

基于 MIT 协议开源的 Keep · 由更夫社区维护