

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# PagerDuty 用作警报接收器
<a name="AMP-alertmanager-pagerduty"></a>

您可以将 Prometheus 的亚马逊托管服务配置为直接向其发送提醒。 PagerDuty此集成要求您将 PagerDuty 集成密钥存储在中， AWS Secrets Manager 并授予适用于 Prometheus 的亚马逊托管服务读取密钥的权限。

PagerDuty 集成可实现事件响应工作流程的自动化，并确保关键警报在正确的时间到达正确的团队成员。当你 PagerDuty 用作警报接收器时，你可以利用 PagerDuty的上报政策、待命调度和事件管理功能来确保警报得到快速确认和解决。这种集成对于生产环境特别有价值，在此类环境中，快速响应系统问题对于维护服务可用性和满足 SLA 要求至关重要。有关更多信息，请参阅*PagerDuty 网站*上的[PagerDuty 知识库](https://support.pagerduty.com/)。

## PagerDuty 配置选项
<a name="AMP-alertmanager-pagerduty-configuration-options"></a>




| 选项 | 描述 | 必填 | 
| --- | --- | --- | 
|  `routing_key`  |  服务集成的 PagerDuty 路由密钥。您必须将其指定为 Secrets Manager ARN  |  是  | 
|  `service_key`  |   PagerDuty 服务集成的服务密钥。您必须将其指定为 Secrets Manager ARN  |  是（对于事件 API v1）  | 
|  `client`  |  通知程序的客户端标识  |  否  | 
|  `client_url`  |  指向通知发送者的反向链接  |  否  | 
|  `description`  |  事件的描述  |  否  | 
|  `details`  |  一组任意 key/value 配对，可提供有关事件的更多细节  |  否  | 
|  `severity`  |  事件的严重性  |  否  | 
|  `class`  |  事件的类别或类型  |  否  | 
|  `component`  |  源计算机中负责事件的组件  |  否  | 
|  `group`  |  组件的逻辑分组  |  否  | 
|  `source`  |  受影响系统的唯一位置  |  否  | 

**注意**  
不支持 `url`、`service_key_file`、`routing_key_file` 和 `http_config` 选项。

以下主题介绍如何在亚马逊 Prometheu PagerDuty s 托管服务中配置为警报接收者。

**Topics**
+ [PagerDuty 配置选项](#AMP-alertmanager-pagerduty-configuration-options)
+ [配置 AWS Secrets Manager 和权限](AMP-alertmanager-pagerduty-permissions.md)
+ [配置警报管理器以向其发送警报 PagerDuty](AMP-alertmanager-pagerduty-configure-alertmanager.md)

# 配置 AWS Secrets Manager 和权限
<a name="AMP-alertmanager-pagerduty-permissions"></a>

在向发送警报之前 PagerDuty，必须安全地存储您的 PagerDuty 集成密钥并配置必要的权限。此过程包括在中创建密钥 AWS Secrets Manager，使用客户托管 AWS Key Management Service (AWS KMS) 密钥对其进行加密，以及向适用于 Prometheus 的 Amazon 托管服务授予访问该密钥及其加密密钥所需的权限。以下过程将指导您完成此配置过程的每个步骤。

**在 Secrets Manager 中为以下内容创建密钥 PagerDuty**  
要 PagerDuty 用作警报接收器，必须将 PagerDuty集成密钥存储在 Secrets Manager 中。按照以下步骤进行操作：

1. 打开 [Secrets Manager 控制台](https://console.aws.amazon.com/secretsmanager/)。

1. 选择**存储新密钥**。

1. 对于**密钥类型**，请选择**其他密钥类型**。

1. 对于**密钥/值对**，请输入您的 PagerDuty集成密钥作为秘密值。这要么是您的 PagerDuty 集成中的路由密钥，要么是服务密钥。

1. 选择**下一步**。

1. 输入密钥的名称和描述，然后选择**下一步**。

1. 根据需要配置轮换设置，然后选择**下一步**。

1. 检查您的设置，然后选择**存储**。

1. 创建密钥后，记下它的 ARN。在配置警报管理器时，需要此信息。

**使用客户管理 AWS KMS 的密钥加密您的密钥**

您必须向 Amazon Managed Service for Prometheus 授予访问您的密钥及其加密密钥的权限：

1. **密钥资源策略**：在 [Secrets Manager 控制台](https://console.aws.amazon.com/secretsmanager/)中打开您的密钥。

   1. 选择**资源权限**。

   1. 选择**编辑权限**。

   1. 添加以下策略语句。在语句中，*highlighted values*用您的特定值替换。

      ```
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "aps.amazonaws.com"
        },
        "Action": "secretsmanager:GetSecretValue",
        "Resource": "*",
        "Condition": {
          "ArnEquals": {
            "aws:SourceArn": "arn:aws:aps:aws-region:123456789012:workspace/WORKSPACE_ID"
          },
          "StringEquals": {
            "aws:SourceAccount": "123456789012"
          }
        }
      }
      ```

   1. 选择**保存**。

1. **KMS 密钥策略**：在[AWS KMS 控制台](https://console.aws.amazon.com/kms)中打开您的 AWS KMS 密钥。

   1. 选择**密钥策略**。

   1. 选择**编辑**。

   1. 添加以下策略语句。在语句中，*highlighted values*用您的特定值替换。

      ```
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "aps.amazonaws.com"
        },
        "Action": "kms:Decrypt",
        "Resource": "*",
        "Condition": {
          "ArnEquals": {
            "aws:SourceArn": "arn:aws:aps:aws-region:123456789012:workspace/WORKSPACE_ID"
          },
          "StringEquals": {
            "aws:SourceAccount": "123456789012"
          }
        }
      }
      ```

   1. 选择**保存**。

**后续步骤**：继续探讨下一个主题，即[配置警报管理器以向其发送警报 PagerDuty](AMP-alertmanager-pagerduty-configure-alertmanager.md)。

# 配置警报管理器以向其发送警报 PagerDuty
<a name="AMP-alertmanager-pagerduty-configure-alertmanager"></a>

要将警报管理器配置为向其发送警报 PagerDuty，您需要更新警报管理器定义。您可以使用 AWS 管理控制台 AWS CLI、或来执行此操作 AWS SDKs。

**Example 警报管理器配置**  
以下是向发送警报的警报管理器配置示例 PagerDuty。在示例中，*highlighted values*用您的特定值替换。  

```
alertmanager_config: |
  route:
    receiver: 'pagerduty-receiver'
    group_by: ['alertname']
    group_wait: 30s
    group_interval: 5m
    repeat_interval: 1h
  receivers:
    - name: 'pagerduty-receiver'
      pagerduty_configs:
      - routing_key: 
          aws_secrets_manager:
            secret_arn: 'arn:aws:secretsmanager:aws-region:123456789012:secret:YOUR_SECRET_NAME'
            secret_key: 'YOUR_SECRET_KEY'
            refresh_interval: 5m
        description: '{{ .CommonLabels.alertname }}'
        severity: 'critical'
        details:
          firing: '{{ .Alerts.Firing | len }}'
          status: '{{ .Status }}'
          instance: '{{ .CommonLabels.instance }}'
```

**Example AWS CLI**  
以下是用于更新警报管理器定义的 AWS CLI 命令。在示例中，*highlighted values*用您的特定值替换。  

```
aws amp put-alert-manager-definition \
  --workspace-id WORKSPACE_ID \
  --data file://alertmanager-config.yaml
```

## 故障排除 PagerDuty 集成
<a name="AMP-alertmanager-pagerduty-troubleshooting"></a>

如果未向发送警报 PagerDuty，请检查以下项目：
+ 确认您的密钥存在且包含正确的 PagerDuty集成密钥。
+ 确认您的密钥已使用客户自主管理型 KMS 密钥进行加密。
+ 确保密钥和 KMS 密钥的资源策略向 Amazon Managed Service for Prometheus 授予必要的权限。
+ 检查警报管理器配置中的 ARN 是否正确地引用您的密钥。
+ 确认您的 PagerDuty 集成密钥在您的 PagerDuty 账户中有效且有效。

适用于 Prometheus 的亚马逊托管服务支持 CloudWatch 亚马逊日志和以下指标， CloudWatch 以帮助进行故障排除。有关更多信息，请参阅[使用日志监控亚马逊托管服务 Prometheus 事件 CloudWatch](CW-logs.md)和[使用 CloudWatch 指标监控亚马逊托管服务的 Prometheus 资源](AMP-CW-usage-metrics.md)。CloudWatch 指标
+ `SecretFetchFailure`
+ `AlertManagerNotificationsThrottledByIntegration`
+ `AlertManagerNotificationsFailedByIntegration`