community.general.pagerduty_alert 模块 – 触发、确认或解决 PagerDuty 事件

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则您可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,请参阅 需求 获取详细信息。

要在 playbook 中使用它,请指定:community.general.pagerduty_alert

概要

  • 此模块允许您通过发送事件来触发、确认或解决 PagerDuty 事件。

需求

执行此模块的主机需要以下需求。

  • PagerDuty API 访问权限

参数

参数

注释

api_key

字符串

PagerDuty API 密钥(只读访问权限),在 PagerDuty 网站上生成。

如果 api_version=v1,则需要此参数。

api_version

字符串

在 community.general 7.4.0 中添加

我们要用来运行模块的 API 版本。

V1 版本提供的触发事件选项比较有限。

V2 版本有更多变量,例如,severitysourcecustom_details 等。

选项

  • "v1" ← (默认)

  • "v2"

client

字符串

触发此事件的监控客户端的名称。

client_url

字符串

触发此事件的监控客户端的 URL。

component

字符串

在 community.general 7.4.0 中添加

负责此事件的源机器的组件,例如 mysqleth0

custom_details

字典

在 community.general 7.4.0 中添加

有关事件和受影响系统的其他详细信息。

包含自定义键值对的字典。

desc

字符串

对于 state=triggered - 必需。导致此触发器的问题的简短描述。此字段(或其截断版本)将在生成电话呼叫、短信和警报电子邮件时使用。它还会出现在 PagerDuty UI 的事件表中。最大长度为 1024 个字符。

对于 state=acknowledgedstate=resolved - 将显示在与该事件关联的事件日志中的文本。

默认值: "Created via Ansible"

incident_class

字符串

在 community.general 7.4.0 中添加

事件的类别/类型,例如 ping failurecpu load

incident_key

字符串

标识应将此 state 应用到的事件。

对于 state=triggered - 如果没有使用此密钥的未解决的开放事件,则会创建一个新的事件。如果已经有一个具有匹配密钥的开放事件,则此事件将附加到该事件的日志中。事件密钥提供了一种简便的方法来“去除重复”问题报告。如果没有提供 incident_key,则 PagerDuty 将生成它。

对于 state=acknowledgedstate=resolved - 这应该是事件首次由触发事件打开时收到的 incident_key。引用已解决或不存在的事件的确认事件将被丢弃。

integration_key

字符串

您其中一个“通用 API”服务的 GUID。

这是 PagerDuty 服务“集成”选项卡上列出的“集成密钥”。

字符串

在 community.general 7.4.0 中添加

link_url 的简短描述。

字符串

在 community.general 7.4.0 中添加

与警报相关的链接 URL。例如,网站或作业链接。

name

字符串

PagerDuty 唯一的子域。已弃用。它不用于 PagerDuty REST v2 API。

service_id

字符串

触发、确认或解决事件时 PagerDuty 服务的 ID。

如果 api_version=v1,则需要此参数。

service_key

字符串

您其中一个“通用 API”服务的 GUID。已弃用。请使用integration_key

严重程度

字符串

在 community.general 7.4.0 中添加

事件所描述的状态相对于受影响系统而言的感知严重程度。

state=triggerapi_version=v2 的情况下需要。

选项

  • "critical" ← (默认)

  • "warning"

  • "error"

  • "info"

来源

字符串

在 community.general 7.4.0 中添加

受影响系统的唯一位置,最好是主机名或 FQDN。

state=triggerapi_version=v2 的情况下需要。

状态

字符串 / 必需

要发送的事件类型。

选项

  • "triggered"

  • "acknowledged"

  • "resolved"

属性

属性

支持

描述

check_mode

支持:完全支持

可以在check_mode下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持:不支持

在 diff 模式下,将返回有关已更改内容(或可能需要在check_mode下更改的内容)的详细信息。

示例

- name: Trigger an incident with just the basic options
  community.general.pagerduty_alert:
    name: companyabc
    integration_key: xxx
    api_key: yourapikey
    service_id: PDservice
    state: triggered
    desc: problem that led to this trigger

- name: Trigger an incident with more options
  community.general.pagerduty_alert:
    integration_key: xxx
    api_key: yourapikey
    service_id: PDservice
    state: triggered
    desc: problem that led to this trigger
    incident_key: somekey
    client: Sample Monitoring Service
    client_url: http://service.example.com

- name: Acknowledge an incident based on incident_key
  community.general.pagerduty_alert:
    integration_key: xxx
    api_key: yourapikey
    service_id: PDservice
    state: acknowledged
    incident_key: somekey
    desc: "some text for incident's log"

- name: Resolve an incident based on incident_key
  community.general.pagerduty_alert:
    integration_key: xxx
    api_key: yourapikey
    service_id: PDservice
    state: resolved
    incident_key: somekey
    desc: "some text for incident's log"

- name: Trigger an v2 incident with just the basic options
  community.general.pagerduty_alert:
    integration_key: xxx
    api_version: v2
    source: My Ansible Script
    state: triggered
    desc: problem that led to this trigger

- name: Trigger an v2 incident with more options
  community.general.pagerduty_alert:
    integration_key: xxx
    api_version: v2
    source: My Ansible Script
    state: triggered
    desc: problem that led to this trigger
    incident_key: somekey
    client: Sample Monitoring Service
    client_url: http://service.example.com
    component: mysql
    incident_class: ping failure
    link_url: https://pagerduty.com
    link_text: PagerDuty

- name: Acknowledge an incident based on incident_key using v2
  community.general.pagerduty_alert:
    api_version: v2
    integration_key: xxx
    incident_key: somekey
    state: acknowledged

- name: Resolve an incident based on incident_key
  community.general.pagerduty_alert:
    api_version: v2
    integration_key: xxx
    incident_key: somekey
    state: resolved

作者

  • Amanpreet Singh (@ApsOps)

  • Xiao Shen (@xshen1)