

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Managed Service for Prometheus에서 알림 관리자를 사용하여 알림 수신기에 알림 전달
알림 수신기 설정

알림 규칙에 의해 알림이 발생하면 알림 관리자에게 전송됩니다. 알림 관리자는 알림 중복 제거, 유지 관리 중 알림 금지 또는 필요에 따라 그룹화와 같은 기능을 수행합니다. 그런 다음 알림을 메시지로 *알림 수신기*에 전달합니다. 작업자에게 알리거나, 자동 응답을 하거나, 다른 방식으로 알림에 응답할 수 있도록 알림 수신기를 설정할 수 있습니다.

Amazon Managed Service for Prometheus에서는 Amazon Simple Notification Service(Amazon SNS) 및 PagerDuty를 알림 수신기로 구성할 수 있습니다. 다음 주제에서는 알림 수신기를 생성하고 구성하는 방법을 설명합니다.

**Topics**
+ [

# Amazon SNS를 알림 수신기로 사용
](AMP-alertmanager-receiver-createtopic.md)
+ [

# PagerDuty를 알림 수신기로 사용
](AMP-alertmanager-pagerduty.md)

# Amazon SNS를 알림 수신기로 사용
Amazon SNS

기존 Amazon SNS 주제를 Amazon Managed Service for Prometheus의 알림 수신기로 사용하거나 새 주제를 생성할 수 있습니다. 주제의 알림을 이메일, SMS 또는 HTTP로 전달할 수 있도록 **표준** 유형의 주제를 사용하는 것이 좋습니다.

알림 관리자 수신기로 사용할 새 Amazon SNS 주제를 생성하려면 [1단계: 주제 생성](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html#step-create-queue)의 단계를 따르세요. 주제 유형으로는 **표준**을 선택해야 합니다.

해당 Amazon SNS 주제로 메시지가 전송될 때마다 이메일을 수신하려면 [2단계: 주제 구독 생성](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html#step-send-message)의 단계를 따르세요.

새 Amazon SNS 주제 또는 기존 Amazon SNS 주제를 사용할 때 다음 작업을 완료하려면 Amazon SNS 주제의 Amazon 리소스 이름(ARN)이 필요합니다.

**Topics**
+ [

# Amazon Managed Service for Prometheus에 Amazon SNS 주제로 알림 메시지를 전송할 수 있는 권한 부여
](AMP-alertmanager-receiver-AMPpermission.md)
+ [

# Amazon SNS 주제로 메시지를 보내도록 알림 관리자 구성
](AMP-alertmanager-receiver-config.md)
+ [

# Amazon SNS에 JSON으로 메시지를 보내도록 알림 관리자 구성
](AMP-alertmanager-receiver-JSON.md)
+ [

# 다른 대상으로 알림 메시지를 보내도록 Amazon SNS 구성
](AMP-alertmanager-SNS-otherdestinations.md)
+ [

# Amazon SNS 메시지 검증 규칙 이해
](AMP-alertmanager-receiver-validation-truncation.md)

# Amazon Managed Service for Prometheus에 Amazon SNS 주제로 알림 메시지를 전송할 수 있는 권한 부여
Amazon SNS 권한 필요

Amazon Managed Service for Prometheus에 Amazon SNS 주제로 메시지를 전송할 수 있는 권한을 부여해야 합니다. 다음 정책 문은 해당 권한을 부여합니다. 여기에는 *혼동된 대리자* 문제라고 하는 보안 문제를 방지하는 데 도움이 되는 `Condition` 문이 포함되어 있습니다. 이 `Condition` 문은 Amazon SNS 주제에 대한 액세스를 제한하여 이 특정 계정 및 Amazon Managed Service for Prometheus 워크스페이스에서 발생하는 작업만 허용하도록 합니다. 혼동된 대리자 문제에 대한 자세한 내용은 [교차 서비스 혼동된 대리인 방지](#cross-service-confused-deputy-prevention)를 참조하세요.

**Amazon Managed Service for Prometheus에 Amazon SNS 주제에 메시지를 전송할 수 있는 권한을 부여하려면**

1. [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)에서 Amazon SNS 콘솔을 엽니다.

1. 탐색 창에서 **주제**를 선택합니다.

1. Amazon Managed Service for Prometheus에서 사용하는 주제의 이름을 선택합니다.

1. **편집**을 선택합니다.

1. **액세스 정책**을 선택하고 기존 정책에 다음 정책 문을 추가합니다.

   ```
   {
       "Sid": "Allow_Publish_Alarms",
       "Effect": "Allow",
       "Principal": {
           "Service": "aps.amazonaws.com"
       },
       "Action": [
           "sns:Publish",
           "sns:GetTopicAttributes"
       ],
       "Condition": {
           "ArnEquals": {
               "aws:SourceArn": "workspace_ARN"
           },
           "StringEquals": {
               "AWS:SourceAccount": "account_id"
           }
       },
       "Resource": "arn:aws:sns:region:account_id:topic_name"
   }
   ```

   [선택 사항] Amazon SNS 주제가 서비스 측 암호화(SSE)를 활성화한 경우 주제를 암호화하는 데 사용되는 키의 AWS KMS 키 정책에 `kms:GenerateDataKey*` 및 `kms:Decrypt` 권한을 추가하여 Amazon Managed Service for Prometheus가이 암호화된 주제에 메시지를 보내도록 허용해야 합니다.

   예를 들어 정책에 다음을 추가할 수 있습니다.

   ```
   {
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "Service": "aps.amazonaws.com"
       },
       "Action": [
         "kms:GenerateDataKey*",
         "kms:Decrypt"
       ],
       "Resource": "*"
     }]
   }
   ```

   자세한 내용을 알아보려면 [SNS 주제에 대한AWS KMS 권한](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#sns-what-permissions-for-sse)을 참조하세요.

1. **변경 사항 저장**을 선택합니다.

**참고**  
 기본적으로 Amazon SNS는 `AWS:SourceOwner`에 대한 조건을 적용해서 액세스 정책을 생성합니다. 자세한 내용은 [SNS 액세스 정책](https://docs.aws.amazon.com/sns/latest/dg/sns-access-policy-use-cases.html#source-account-versus-source-owner)을 참조하세요.

**참고**  
IAM은 [가장 제한적인 정책 우선](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) 규칙을 따릅니다. SNS 주제에서 문서화된 Amazon SNS 정책 블록보다 더 제한적인 정책 블록이 있는 경우 주제 정책에 대한 권한은 부여되지 않습니다. 정책을 평가하고 어떤 권한이 부여되었는지 알아보려면 [정책 평가 로직](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)을 참조하세요.

## 옵트인 리전에 대한 SNS 주제 구성


`aps.amazonaws.com`를 사용하여 Amazon Managed Service for Prometheus 워크스페이스와 동일한에서 Amazon SNS 주제를 구성할 수 있습니다. AWS 리전 비옵트인 리전(예: us-east-1)의 SNS 주제를 옵트인 리전(예: af-south-1)과 함께 사용하려면 리전 서비스 위탁자 형식을 사용해야 합니다. 리전 서비스 보안 주체에서 *us-east-1*을 사용하려는 비옵트인 리전으로 바꿉니다. **aps.*us-east-1*.amazonaws.com** 

다음 표에는 옵트인 리전과 해당하는 리전 서비스 보안 주체가 나열되어 있습니다.


**옵트인 리전 및 해당 리전 서비스 보안 주체**  

| 리전 이름 | 리전 | 리전 서비스 보안 주체 | 
| --- | --- | --- | 
| Africa (Cape Town) | af-south-1 | af-south-1.aps.amazonaws.com | 
| Asia Pacific (Hong Kong) | ap-east-1 | ap-east-1.aps.amazonaws.com | 
| 아시아 태평양(태국) | ap-southeast-7 | ap-southeast-7.aps.amazonaws.com | 
| Europe (Milan) | eu-south-1 | eu-south-1.aps.amazonaws.com | 
| 유럽(취리히) | eu-central-2 | eu-central-2.aps.amazonaws.com | 
| 중동(UAE) | me-central-1 | me-central-1.aps.amazonaws.com | 
| 아시아 태평양(말레이시아) | ap-southeast-5 | ap-southeast-5.aps.amazonaws.com | 

옵트인 리전 활성화에 대한 자세한 내용은 Amazon Web Services 일반 참조의 **IAM 사용 설명서에서 [AWS 리전관리](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)를 참조하세요.

이러한 옵트인 리전에 대해 Amazon SNS 주제를 구성할 때는 올바른 리전 서비스 보안 주체를 사용하여 교차 리전 알림 전송을 활성화해야 합니다.

## 교차 서비스 혼동된 대리인 방지


혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. 에서 AWS교차 서비스 가장은 혼동된 대리자 문제를 초래할 수 있습니다. 교차 서비스 가장은 한 서비스(*직접 호출하는 서비스*)가 다른 서비스(*직접 호출되는 서비스*)를 직접 호출할 때 발생할 수 있습니다. 직접 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다. 이를 방지하기 위해 AWS 에서는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 위탁자를 사용하여 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 제공합니다.

Amazon Managed Service for Prometheus가 리소스에 대해 Amazon SNS에 부여하는 권한을 제한하려면 리소스 정책에서 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 글로벌 조건 컨텍스트 키를 사용하는 것이 좋습니다. 두 전역 조건 컨텍스트 키를 모두 사용하는 경우 `aws:SourceAccount` 값과 `aws:SourceArn` 값의 계정은 동일한 정책 문에서 사용할 경우 동일한 계정 ID를 사용해야 합니다.

`aws:SourceArn` 값은 Amazon Managed Service for Prometheus 워크스페이스의 ARN이어야 합니다.

혼동된 대리인 문제로부터 보호하는 가장 효과적인 방법은 리소스의 전체 ARN이 포함된 `aws:SourceArn`글로벌 조건 컨텍스트 키를 사용하는 것입니다. 리소스의 전체 ARN을 모를 경우 또는 여러 리소스를 지정하는 경우, ARN의 알 수 없는 부분에 대해 와일드카드(`*`)를 포함한 `aws:SourceArn`전역 조건 컨텍스트 키를 사용합니다. 예제: `arn:aws:servicename::123456789012:*`.

[Amazon Managed Service for Prometheus에 Amazon SNS 주제로 알림 메시지를 전송할 수 있는 권한 부여](#AMP-alertmanager-receiver-AMPpermission)에 표시되는 정책은 Amazon Managed Service for Prometheus에서 `aws:SourceArn` 및 `aws:SourceAccount` 전역 조건 컨텍스트 키를 사용하여 혼동된 대리자 문제를 방지하는 방법을 보여 줍니다.

# Amazon SNS 주제로 메시지를 보내도록 알림 관리자 구성
Amazon SNS 주제에 알림 전송

(신규 또는 기존) **표준** 유형 Amazon SNS 주제가 있으면 알림 관리자 구성에 이를 알림 수신기로 추가할 수 있습니다. 알림 관리자는 구성된 알림 수신기에 알림을 전달할 수 있습니다. 이를 완료하기 위해서는 Amazon SNS 주제의 Amazon 리소스 이름(ARN)을 알아야 합니다.

Amazon SNS 수신기 구성에 대한 자세한 내용은 Prometheus 구성 설명서에서 [<sns\$1configs>](https://prometheus.io/docs/alerting/latest/configuration/#sns_configs)를 참조하세요.

**지원되지 않는 속성**

Amazon Managed Service for Prometheus는 Amazon SNS를 알림 수신기로 지원합니다. 하지만 서비스 제약으로 인해 Amazon SNS 수신기의 모든 속성이 지원되는 것은 아닙니다. 다음 속성은 Amazon Managed Service for Prometheus 알림 관리자 구성 파일에서 허용되지 않습니다.
+ `api_url:`—Amazon Managed Service for Prometheus가 `api_url`을 설정하므로 이 속성은 허용되지 않습니다.
+ `Http_config`—이 속성을 사용하면 외부 프록시를 설정할 수 있습니다. Amazon Managed Service for Prometheus는 현재 이 기능을 지원하지 않습니다.

또한 리전 속성이 있으려면 SigV4 설정이 필요합니다. 리전 속성이 없으면 Amazon Managed Service for Prometheus에는 권한 부여를 요청하는 데 필요한 정보가 충분하지 않습니다.

**Amazon SNS 주제를 수신기로 사용하여 알림 관리자를 구성하려면**

1. 기존 알림 관리자 구성 파일을 사용하는 경우 텍스트 편집기에서 엽니다.

1. `receivers` 블록에 Amazon SNS 이외의 현재 수신기가 있는 경우 해당 수신기를 제거하세요. 여러 Amazon SNS 주제를 `receivers` 블록 내 개별 `sns_config` 블록에 배치하여 수신기가 되도록 구성할 수 있습니다.

1. `receivers` 섹션 내에 다음 YAML 블록을 추가합니다.

   ```
   - name: name_of_receiver
     sns_configs:
       - sigv4:
           region: AWS 리전
         topic_arn: ARN_of_SNS_topic
         subject: yoursubject
         attributes:
           key: yourkey
           value: yourvalue
   ```

`subject`를 지정하지 않으면 기본적으로 레이블 이름과 값이 포함된 기본 템플릿으로 제목이 생성되므로 SNS에 맞지 않게 값이 너무 길어질 수 있습니다. 제목에 적용되는 템플릿을 변경하려면 이 가이드의 [Amazon SNS에 JSON으로 메시지를 보내도록 알림 관리자 구성](AMP-alertmanager-receiver-JSON.md)을 참조하세요.

이제 Amazon Managed Service for Prometheus에 알림 관리자 구성 파일을 업로드해야 합니다. 자세한 내용은 [Amazon Managed Service for Prometheus에 알림 관리자 구성 파일 업로드](AMP-alertmanager-upload.md) 단원을 참조하십시오.

# Amazon SNS에 JSON으로 메시지를 보내도록 알림 관리자 구성
JSON으로 메시지 전송

기본적으로 Amazon Managed Service for Prometheus 알림 관리자는 메시지를 일반 텍스트 목록 형식으로 출력합니다. 이는 다른 서비스에서 구문 분석하기가 더 어려울 수 있습니다. 대신 JSON 형식으로 알림을 보내도록 알림 관리자를 구성할 수 있습니다. JSON을 사용하면 AWS Lambda 또는 웹후크 수신 엔드포인트에서 Amazon SNS의 다운스트림 메시지를 더 간단하게 처리할 수 있습니다. 기본 템플릿을 사용하는 대신 메시지 내용을 JSON으로 출력하는 사용자 지정 템플릿을 정의하여 다운스트림 함수에서 더 쉽게 구문 분석하도록 할 수 있습니다.

알림 관리자의 메시지를 JSON 형식으로 Amazon SNS로 출력하려면 `template_files` 루트 섹션 내에 다음 코드를 포함하도록 알림 관리자 구성을 업데이트하세요.

```
default_template: |
   {{ define "sns.default.message" }}{{ "{" }}"receiver": "{{ .Receiver }}","status": "{{ .Status }}","alerts": [{{ range $alertIndex, $alerts := .Alerts }}{{ if $alertIndex }}, {{ end }}{{ "{" }}"status": "{{ $alerts.Status }}"{{ if gt (len $alerts.Labels.SortedPairs) 0 -}},"labels": {{ "{" }}{{ range $index, $label := $alerts.Labels.SortedPairs }}{{ if $index }}, {{ end }}"{{ $label.Name }}": "{{ $label.Value }}"{{ end }}{{ "}" }}{{- end }}{{ if gt (len $alerts.Annotations.SortedPairs ) 0 -}},"annotations": {{ "{" }}{{ range $index, $annotations := $alerts.Annotations.SortedPairs }}{{ if $index }}, {{ end }}"{{ $annotations.Name }}": "{{ $annotations.Value }}"{{ end }}{{ "}" }}{{- end }},"startsAt": "{{ $alerts.StartsAt }}","endsAt": "{{ $alerts.EndsAt }}","generatorURL": "{{ $alerts.GeneratorURL }}","fingerprint": "{{ $alerts.Fingerprint }}"{{ "}" }}{{ end }}]{{ if gt (len .GroupLabels) 0 -}},"groupLabels": {{ "{" }}{{ range $index, $groupLabels := .GroupLabels.SortedPairs }}{{ if $index }}, {{ end }}"{{ $groupLabels.Name }}": "{{ $groupLabels.Value }}"{{ end }}{{ "}" }}{{- end }}{{ if gt (len .CommonLabels) 0 -}},"commonLabels": {{ "{" }}{{ range $index, $commonLabels := .CommonLabels.SortedPairs }}{{ if $index }}, {{ end }}"{{ $commonLabels.Name }}": "{{ $commonLabels.Value }}"{{ end }}{{ "}" }}{{- end }}{{ if gt (len .CommonAnnotations) 0 -}},"commonAnnotations": {{ "{" }}{{ range $index, $commonAnnotations := .CommonAnnotations.SortedPairs }}{{ if $index }}, {{ end }}"{{ $commonAnnotations.Name }}": "{{ $commonAnnotations.Value }}"{{ end }}{{ "}" }}{{- end }}{{ "}" }}{{ end }}
   {{ define "sns.default.subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]{{ end }}
```

**참고**  
이 템플릿은 영숫자 데이터로 JSON을 생성합니다. 데이터에 특수 문자가 있는 경우 이 템플릿을 사용하기 전에 특수 문자를 인코딩하세요.

이 템플릿이 발신 알림에 사용되도록 하려면 다음과 같이 `alertmanager_config` 블록에서 템플릿을 참조하세요.

```
alertmanager_config: |
  global:
  templates:
    - 'default_template'
```

**참고**  
이 템플릿은 전체 메시지 본문을 JSON으로 작성하기 위한 것입니다. 이 템플릿은 전체 메시지 본문을 덮어씁니다. 이 특정 템플릿을 사용하려는 경우 메시지 본문을 재정의할 수 없습니다. 수동으로 수행한 모든 재정의는 템플릿보다 우선합니다.

해당 내용은 다음을 참조하세요.
+ 알림 관리자 구성 파일: [Amazon Managed Service for Prometheus에서 알림 관리자 구성을 생성하여 알림을 관리하고 라우팅합니다.](AMP-alertmanager-config.md)을 참조하세요.
+ 구성 파일 업로드: [Amazon Managed Service for Prometheus에 알림 관리자 구성 파일 업로드](AMP-alertmanager-upload.md)을 참조하세요.

# 다른 대상으로 알림 메시지를 보내도록 Amazon SNS 구성
다른 대상으로 알림 전송

Amazon Managed Service for Prometheus는 Amazon Simple Notification Service(Amazon SNS)로만 알림 메시지를 보낼 수 있습니다. 이러한 메시지를 이메일, 웹후크, Slack 또는 OpsGenie와 같은 다른 대상으로 보내려면 해당 엔드포인트에 메시지를 전달하도록 Amazon SNS를 구성해야 합니다.

다음 섹션에서는 다른 대상으로 알림을 전달하도록 Amazon SNS를 구성하는 방법에 대해 설명합니다.

**Topics**
+ [

## 이메일
](#AMP-alertmanager-SNS-otherdestinations-email)
+ [

## Webhook
](#AMP-alertmanager-SNS-otherdestinations-webhook)
+ [

## Slack
](#AMP-alertmanager-SNS-otherdestinations-Slack)
+ [

## OpsGenie
](#AMP-alertmanager-SNS-otherdestinations-OpsGenie)

## 이메일


메시지를 이메일로 출력하도록 Amazon SNS 주제를 구성하려면 구독을 생성하세요. Amazon SNS 콘솔에서 **구독** 탭을 선택하여 **구독** 목록 페이지를 엽니다. **구독 생성**을 선택하고 **이메일**을 선택합니다. Amazon SNS는 나열된 이메일 주소로 확인 이메일을 보냅니다. 확인을 수락하면 구독한 주제의 Amazon SNS 알림을 이메일로 받을 수 있습니다. 자세한 내용은 [Amazon SNS 주제에 구독 설정](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)을 참조하세요.

## Webhook


메시지를 webhook 엔드포인트로 출력하도록 Amazon SNS 주제를 구성하려면 구독을 생성하세요. Amazon SNS 콘솔에서 **구독** 탭을 선택하여 **구독** 목록 페이지를 엽니다. **구독 생성**을 선택하고 **HTTP/HTTPS**를 선택합니다. 구독을 생성한 후에는 확인 단계에 따라 구독을 활성화해야 합니다. 활성화되면 HTTP 엔드포인트는 Amazon SNS 알림을 수신합니다. 자세한 내용은 [Amazon SNS 주제에 구독 설정](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)을 참조하세요. Slack webhook를 사용하여 다양한 대상으로 메시지를 게시하는 방법에 대한 자세한 내용은 [Webhook를 사용하여 Amazon Chime, Slack 또는 Microsoft Teams에 Amazon SNS 메시지를 게시하려면 어떻게 해야 하나요?](https://aws.amazon.com/premiumsupport/knowledge-center/sns-lambda-webhooks-chime-slack-teams/)를 참조하세요.

## Slack


메시지를 Slack에 출력하도록 Amazon SNS 주제를 구성하는 방법에는 두 가지가 있습니다. Slack의 이메일-채널 통합 기능으로 통합하여 Slack에서 이메일 메시지를 수락하고 Slack 채널로 전달하도록 하거나 Lambda 함수를 사용하여 Amazon SNS 알림을 Slack에 다시 작성할 수 있습니다. 슬랙 채널로 이메일을 전달하는 방법에 대한 자세한 내용은 [Slack Webhook의 AWS SNS 주제 구독 확인을 참조하세요](https://stackoverflow.com/questions/49341187/confirming-aws-sns-topic-subscription-for-slack-webhook). Amazon SNS 메시지를 Slack으로 변환하는 Lambda 함수를 구성하는 방법에 대한 자세한 내용은 [Amazon Managed Service for Prometheus를 Slack과 통합하는 방법](https://aws.amazon.com/blogs/mt/how-to-integrate-amazon-managed-service-for-prometheus-with-slack/)을 참조하세요.

## OpsGenie


메시지를 OpsGenie로 출력하도록 Amazon SNS 주제를 구성하는 방법에 대한 자세한 내용은 [수신 Amazon SNS와 Opsgenie 통합](https://support.atlassian.com/opsgenie/docs/integrate-opsgenie-with-incoming-amazon-sns/)을 참조하세요.

# Amazon SNS 메시지 검증 규칙 이해
Amazon SNS 검증 규칙

Amazon Simple Notification Service(Amazon SNS)는 특정 표준을 충족하는 메시지가 필요합니다. 이러한 표준을 충족하지 않는 메시지는 수신될 때 수정됩니다. 필요한 경우 Amazon SNS 수신기는 다음 규칙에 따라 알림 메시지를 검증하거나 자르거나 수정합니다.
+ 메시지에 utf가 아닌 문자가 포함되어 있습니다.
  + 메시지가 **Error - not a valid UTF-8 encoded string**으로 바뀝니다.
  + 키가 **truncated**이고 값이 **true**인 하나의 메시지 속성이 추가됩니다.
  + 키가 **modified**이고 값이 **Message: Error - not a valid UTF-8 encoded string**인 하나의 메시지 속성이 추가됩니다.
+ 메시지가 비어 있습니다.
  + 메시지가 **Error - Message should not be empty**로 바뀝니다.
  + 키가 **modified**이고 값이 **Message: Error - Message should not be empty**인 하나의 메시지 속성이 추가됩니다.
+ 메시지가 잘렸습니다.
  + 메시지에는 잘린 내용이 포함됩니다.
  + 키가 **truncated**이고 값이 **true**인 하나의 메시지 속성이 추가됩니다.
  + 키가 "modified"이고 값이 **Message: Error - Message has been truncated from *X* KB, because it exceeds the 256 KB size limit**인 하나의 메시지 속성이 추가됩니다.
+ 제목에 제어 문자 또는 비ASCII 문자가 포함되어 있습니다.
  + 제목에 제어 문자 또는 비 ASCII 문자가 포함된 경우 SNS는 제목을 **Error - contains control- or non-ASCII characters**로 바꿉니다.
  + SNS 이메일 제목의 경우 줄 바꿈(`\n`)과 같은 제어 문자를 제거합니다.
+ 제목이 ASCII가 아닙니다.
  + 제목이 **Error - contains non printable ASCII characters**로 바뀝니다.
  + 키가 **modified**이고 값이 **Subject: Error - contains non-printable ASCII characters**인 하나의 메시지 속성이 추가됩니다.
+ 제목이 잘렸습니다.
  + 제목에는 잘린 내용이 표시됩니다.
  + 키가 **modified**이고 값이 **Subject: Error - Subject has been truncated from *X* characters, because it exceeds the 100 character size limit**인 하나의 메시지 속성이 추가됩니다.
+ 메시지 속성에 잘못된 키/값이 있습니다.
  + 잘못된 메시지 속성은 제거됩니다.
  + 키가 **modified**이고 값이 **MessageAttribute: Error - *X* of the message attributes have been removed because of invalid MessageAttributeKey or MessageAttributeValue**인 하나의 메시지 속성이 추가됩니다.
+ 메시지 속성이 잘렸습니다.
  + 추가 메시지 속성은 제거됩니다.
  + 키가 **modified**이고 값이 **MessageAttribute: Error - *X* of the message attributes have been removed, because it exceeds the 256KB size limit**인 하나의 메시지 속성이 추가됩니다.

# PagerDuty를 알림 수신기로 사용
PagerDuty

PagerDuty로 직접 알림을 보내도록 Amazon Managed Service for Prometheus를 구성할 수 있습니다. 이 통합을 위해서는 PagerDuty 통합 키를에 저장 AWS Secrets Manager 하고 Amazon Managed Service for Prometheus에 보안 암호를 읽을 수 있는 권한을 부여해야 합니다.

PagerDuty 통합은 자동화된 인시던트 대응 워크플로를 가능하게 하며, 중요한 알림이 적시에 올바른 팀원에게 전달되도록 보장합니다. PagerDuty를 알림 수신기로 사용할 경우 PagerDuty의 에스컬레이션 정책, 대기 예약 및 인시던트 관리 기능을 활용하여 알림을 신속하게 확인하고 해결할 수 있습니다. 이 통합은 서비스 가용성을 유지하고 SLA 요구 사항을 충족하는 데 시스템 문제에 대한 신속한 대응이 필수적인 생산 환경에 특히 유용합니다. 자세한 내용은 *PagerDuty 웹 사이트*에서 [PagerDuty Knowledge Base](https://support.pagerduty.com/)를 참조하세요.

## PagerDuty 구성 옵션
PagerDuty 사용




| 옵션 | 설명 | 필수 | 
| --- | --- | --- | 
|  `routing_key`  |  서비스의 통합을 위한 PagerDuty 라우팅 키입니다. 이 값은 Secrets Manager ARN으로 지정해야 합니다.  |  예  | 
|  `service_key`  |  서비스의 통합을 위한 PagerDuty 서비스 키입니다. 이 값은 Secrets Manager ARN으로 지정해야 합니다.  |  예(이벤트 API v1의 경우)  | 
|  `client`  |  알리미의 클라이언트 식별  |  아니요  | 
|  `client_url`  |  알림 발신자에 대한 백링크  |  아니요  | 
|  `description`  |  인시던트 설명  |  아니요  | 
|  `details`  |  인시던트에 대한 추가 세부 정보를 제공하는 임의의 키/값 페어 세트  |  아니요  | 
|  `severity`  |  인시던트의 심각도  |  아니요  | 
|  `class`  |  이벤트의 클래스 또는 유형  |  아니요  | 
|  `component`  |  이벤트를 담당하는 소스 시스템의 구성 요소  |  아니요  | 
|  `group`  |  구성 요소의 논리적 그룹화  |  아니요  | 
|  `source`  |  영향을 받는 시스템의 고유한 위치  |  아니요  | 

**참고**  
`url`, `service_key_file`, `routing_key_file`, `http_config` 옵션은 지원되지 않습니다.

다음 주제에서는 Amazon Managed Service for Prometheus에서 PagerDuty를 알림 수신기로 구성하는 방법을 설명합니다.

**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 및 권한 구성
Secrets Manager 및 권한 구성

PagerDuty에 알림을 보내기 전에 PagerDuty 통합 키를 안전하게 저장하고 필요한 권한을 구성해야 합니다. 이 프로세스에는에서 보안 암호를 생성하고 AWS Secrets Manager, 고객 관리형 AWS Key Management Service (AWS KMS) 키로 암호화하고, Amazon Managed Service for Prometheus에 보안 암호와 암호화 키 모두에 액세스하는 데 필요한 권한을 부여하는 작업이 포함됩니다. 다음 절차는 이 구성 프로세스의 각 단계를 안내합니다.

**Secrets Manager for 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. 다음 정책 설명을 추가합니다. 설명에서 *강조 표시된 값*을 특정 값으로 바꿉니다.

      ```
      {
        "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. 다음 정책 설명을 추가합니다. 설명에서 *강조 표시된 값*을 특정 값으로 바꿉니다.

      ```
      {
        "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에 알림을 보내도록 알림 관리자 구성
PagerDuty에 알림 보내기

PagerDuty에 알림을 보내도록 알림 관리자를 구성하려면 알림 관리자 정의를 업데이트해야 합니다. 이 작업은 AWS Management Console AWS CLI또는 AWS SDKs.

**Example 알림 관리자 구성**  
다음은 PagerDuty에 알림을 보내는 알림 관리자 구성의 예입니다. 이 예제에서는 *강조 표시된 값*을 특정 값으로 바꿉니다.  

```
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 명령입니다. 이 예제에서는 *강조 표시된 값*을 특정 값으로 바꿉니다.  

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

## PagerDuty 통합 문제 해결


알림이 PagerDuty로 전송되지 않는 경우 다음 항목을 확인하세요.
+ 보안 암호가 존재하고 올바른 PagerDuty 통합 키가 포함되어 있는지 확인합니다.
+ 보안 암호가 고객 관리형 KMS 키로 암호화되었는지 확인합니다.
+ 보안 암호와 KMS 키 모두에 대한 리소스 정책이 Amazon Managed Service for Prometheus에 필요한 권한을 부여하는지 확인합니다.
+ 알림 관리자 구성의 ARN이 보안 암호를 올바르게 참조하는지 확인합니다.
+ PagerDuty 통합 키가 PagerDuty 계정에서 유효하고 활성 상태인지 확인합니다.

Amazon Managed Service for Prometheus는 문제 해결에 도움이 되도록 Amazon CloudWatch Logs와 다음 CloudWatch 지표를 지원합니다. 자세한 내용은 [CloudWatch Logs를 사용하여 Amazon Managed Service for Prometheus 이벤트 모니터링](CW-logs.md) 및 [CloudWatch 지표를 사용하여 Amazon Managed Service for Prometheus 리소스 모니터링](AMP-CW-usage-metrics.md) 섹션을 참조하세요.CloudWatch 지표
+ `SecretFetchFailure`
+ `AlertManagerNotificationsThrottledByIntegration`
+ `AlertManagerNotificationsFailedByIntegration`