

# 직접 EventBridge 통합으로 APM에서 경보 수집
<a name="idr-gs-ingest_alarms_from_apm_to_eventbridge"></a>

다음 항목에서는 Amazon EventBridge와 직접 통합된 애플리케이션 성능 모니터링(APM) 도구에서 AWS 사고 탐지 및 대응으로 경보를 전송하는 프로세스를 보여 줍니다. Amazon EventBridge와 직접 통합되는 전체 APM 목록은 [Amazon EventBridge 통합](https://aws.amazon.com/eventbridge/integrations)을 참조하세요.

제공된 [CloudFormation 템플릿](https://dcl74d3hc5lj1.cloudfront.net/apms/ThirdPartyApmSaasEventBridgeIntegration.json)을 배포하거나 이 통합을 수동으로 설정할 수 있습니다. 통합을 설정하기 전에 AWS 서비스 연결 역할(SLR) `AWSServiceRoleForHealth_EventProcessor`가 계정에 [생성](https://docs.aws.amazon.com/IDR/latest/userguide/idr-gs-access-prov.html)되었는지 확인합니다.

## 옵션 1: 사용CloudFormation
<a name="idr-gs-apm-eb-cfn"></a>

CloudFormation 템플릿을 사용하면 Amazon EventBridge 통합을 통해 APM에서 AWS 사고 탐지 및 대응에 경보를 수집하는 데 필요한 통합 인프라를 생성하는 프로세스를 간소화할 수 있습니다.

**참고**  
이 CloudFormation 템플릿을 통해 배포된 리소스(예: Lambda 및 EventBridge)에 대해 추가 비용이 발생합니다. 이러한 서비스의 가격에 대한 자세한 내용은 [AWS 가격](https://aws.amazon.com/pricing/)을 참조하세요.
AWS 사고 탐지 및 대응에서 경보를 수집해야 하는 모든 AWS 계정 및 리전에 이 CloudFormation 템플릿을 배포합니다. 인시던트 및 지원 사례는 APM 알림을 받은 AWS 계정에서 열립니다.
이 문서에서는 New Relic을 예로 사용하지만, CloudFormation 템플릿은 [Amazon EventBridge와 SaaS 통합](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html)이 있는 모든 APM에 사용할 수 있습니다.
통합을 테스트한 후 `TransformLambdaFunction`에서 logger.info() 문을 제거하여 Amazon CloudWatch Logs에 페이로드가 표시되지 않도록 합니다.

**이 CloudFormation 템플릿을 배포하기 위한 사전 조건:**
+ 파트너 이벤트 소스는 Amazon EventBridge에서 설정해야 합니다. APM을 이벤트 소스로 설정하는 방법에 대한 자세한 내용은 *Amazon EventBridge 사용 설명서*의 [Amazon EventBridge를 사용하여 SaaS 파트너로부터 이벤트 수신](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html)을 참조하세요.
+ 템플릿의 `TransformLambdaFunction`(Lambda 함수)을 수정하여 APM 페이로드에서 알림 이름의 JSON 경로를 기반으로 `["detail"]["incident-detection-response-identifier"]`를 원하는 값으로 설정해야 합니다.

**사전 요구 사항 단계:**

1. EventBridge 콘솔을 엽니다. **통합** 메뉴에서 **파트너 이벤트 소스**를 선택합니다.
   + Amazon EventBridge 파트너 상자에서 APM을 검색합니다.
   + **설정**을 선택한 다음 제공된 지침을 따릅니다.
     + **참고:** 마지막 단계는 파트너 이벤트 소스에 대해 콘솔에서 **이벤트 버스와 연결**을 선택하는 것입니다. 이 옵션을 선택하면 파트너 이벤트 소스와 이름이 동일한 파트너 이벤트 버스가 자동으로 생성됩니다(이름이 일치해야 함).
   + 파트너 이벤트 버스 또는 소스의 이름을 복사합니다. 이벤트 버스 또는 소스는 CloudFormation 템플릿을 배포할 때 `PartnerEventBusNameParameter`라는 파라미터로 사용됩니다.
     + New Relic의 **예제**: `aws.partner/newrelic.com/1234567/source_name`
   + CloudFormation 템플릿을 배포할 때 `PartnerEventBusPrefixParameter`에 입력할 파트너 이벤트 버스 또는 소스의 첫 번째 부분을 복사합니다.
     + New Relic의 예제는 `aws.partner/newrelic.com`입니다.

1. [CloudFormation 템플릿](https://dcl74d3hc5lj1.cloudfront.net/apms/ThirdPartyApmSaasEventBridgeIntegration.json)을 다운로드하고 편집합니다.
   + 템플릿에서 `TransformLambdaFunction`을 찾습니다.
   + `def lambda_handler(event, context)`에서 경보 이름이 APM 경보의 JSON 페이로드에 표시되는 json 경로로 `event["detail"]["incident-detection-response-identifier"]`를 설정합니다. 모든 APM의 경로는 다릅니다. 아래에서 몇 가지 예를 볼 수 있지만 특정 페이로드는 다를 수 있습니다.
     + **New Relic 예제:** `event["detail"]["incident-detection-response-identifier"] = event["detail"]["workflowName"]`.
     + **Datadog 예제:** `event["detail"]["incident-detection-response-identifier"] = event["detail"]["meta"]["monitor"]["name"]`
     + **Splunk 예제:** `event["detail"]["incident-detection-response-identifier"] = event["detail"]["ruleName"]`
   + CloudFormation 템플릿을 저장합니다.

**CloudFormation 템플릿 배포:**

1. 대상 계정 및 리전에서 CloudFormation 콘솔을 엽니다.

1. 스택 생성, 새 리소스 사용(표준)을 선택합니다.
   + **기존 템플릿 선택**, **템플릿 파일 업로드**, **파일 선택**을 선택한 다음 로컬로 저장한 CloudFormation 템플릿을 업로드합니다.

1. 다음과 같이 스택 세부 정보를 지정합니다.
   + 스택 이름을 입력합니다(*예:* `NewRelicIntegrationForIDR`).
   + **사전 조건 완료** 중에 얻은 **파라미터 값**을 지정합니다.
     + APMNameParameter(*예*: `NewRelic`)
     + PartnerEventBusNameParameter(*예*: `aws.partner/newrelic.com/1234567/source_name`)
     + PartnerEventBusPrefixParameter(*예*: `aws.partner/newrelic.com`)
   + **다음**을 선택합니다.

1. 다음과 같이 스택 옵션을 구성합니다.
   + 페이지 하단으로 스크롤하고 확인란을 선택하여 CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성하도록 허용합니다.

1. 검토 및 생성
   + 파라미터 값이 올바르게 구성되었는지 확인하고 **제출**을 선택합니다.

1. CloudFormation 스택은 APM 이벤트를 AWS 사고 탐지 및 대응에 통합하는 데 필요한 리소스를 배포합니다. 스택 상태에 `CREATE_COMPLETE`가 표시될 때까지 기다립니다.

1. CloudFormation 스택은 예제 값이 New Relic의 파라미터에 입력되었고 US-EAST-1 리전에서 실행되었다고 가정하여 다음 리소스를 생성합니다.
   + CustomEventBus: NewRelic-AWSIncidentDetectionResponse-EventBus
   + EventBridgeRule: aws.partner/newrelic.com/1234567/source\_name\|NewRelic-AWSIncidentDetectionResponse-EventBridgeRule
   + TransformLambdaExecutionRole: IDR-TransformLambdaExecutionRole-us-east-1
   + TransformLambdaFunction: NewRelic-AWSIncidentDetectionResponse-Lambda-Transform
   + TransformLambdaPermission: NewRelicIntegrationForIDR-TransformLambdaPermission-[random\_string]

**통합 테스트하기**

스택을 배포한 후 APM에서 테스트 페이로드를 전송하여 통합을 테스트합니다.

1. Lambda 콘솔로 이동하여 `APMNameParameter-AWSIncidentDetectionResponse-Lambda-Transform` 함수를 선택합니다. **모니터링** 탭을 선택합니다.

1. 지표 그래프에서 성공적인 간접 호출을 찾습니다.

1. **Amazon CloudWatch Logs 보기**를 선택하여 테스트 페이로드 또는 오류가 있는지 로그 스트림을 확인합니다.

**이벤트 버스 ARN을 AWS 사고 탐지 및 대응과 공유**

1. Amazon EventBridge 콘솔을 엽니다. **이벤트 버스**를 선택합니다.

1. CloudFormation 스택의 일부로 생성된 **사용자 지정 이벤트 버스**의 ARN을 복사합니다(*예: `arn:aws:events:us-east-1:123456789123:event-bus/NewRelic-AWSIncidentDetectionResponse-EventBus`*).
   + [워크로드 세부 정보 - 경보 수집 질문](idr-gs-questionnaire.md#idr-gs-alarm-questionnaire)의 ‘타사 APM 경보’ 섹션에 있는 ‘EventBridge 이벤트 버스 ARN’ 필드에 이 ARN을 추가합니다.

1. 온보딩 프로세스 중에 AWS 사고 탐지 및 대응은 이 사용자 지정 이벤트 버스에 관리형 EventBridge 규칙을 생성하여 APM 경보를 수집합니다.

## 옵션 2: 수동 통합
<a name="idr-gs-apm-eb-manual"></a>

![파트너 이벤트 버스 또는 기타 AWS 이벤트 버스 소스를 사용한 예제 통합을 보여 주는 다이어그램입니다.](http://docs.aws.amazon.com/ko_kr/IDR/latest/userguide/images/example-int-partner-event-bus.png)


AWS 사고 탐지 및 대응이 경보를 수집해야 하는 각 AWS 계정 및 AWS 리전에 대해 다음 단계를 완료합니다. AWS 사고 탐지 및 대응은 영향을 받는 리소스를 더 빠르게 식별하고 조사할 수 있도록 애플리케이션 리소스와 동일한 AWS 계정 및 리전에 경보를 설정할 것을 권장합니다. 인시던트 및 지원 사례는 APM 알림을 받은 AWS 계정에서 열립니다.

1. APM을 Amazon EventBridge 파트너 이벤트 소스(예: `aws.partner/apm_name/integrationName`)로 설정하여 EventBridge 파트너 이벤트 버스를 생성합니다. APM을 이벤트 소스로 설정하는 방법에 대한 지침은 [Amazon EventBridge를 사용하여 SaaS 파트너로부터 이벤트 수신](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html)을 참조하세요.

1. 다음 중 하나를 수행합니다.
   + (권장 방법) 이름이 `$YourApmName-AWSIncidentDetectionResponse-EventBus`인 EventBridge 사용자 지정 이벤트 버스를 만듭니다.
   + (대체 방법) 사용자 지정 이벤트 버스 대신 기본 EventBridge 이벤트 버스를 사용합니다.

   AWS 사고 탐지 및 대응은 `AWSHealthEventProcessorEventSource-DO-NOT-DELETE` SLR을 통해 사용자 지정 또는 기본 이벤트 버스에 관리형 규칙(`AWSServiceRoleForHealth_EventProcessor`)을 설치합니다. 규칙 소스는 사용자 지정 또는 기본 이벤트 버스이고, 규칙 대상은 AWS 사고 탐지 및 대응이며, 규칙은 타사 APM 이벤트 수집 패턴과 일치합니다.

1. 이름이 `$YourApmName-AWSIncidentDetectionResponse-LambdaFunction`인 [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 함수를 만들어 파트너 이벤트 버스 이벤트를 변환합니다. 변환된 이벤트는 관리형 규칙 `AWSHealthEventProcessorEventSource-DO-NOT-DELETE`와 일치합니다.
   + 변환된 이벤트에는 고유한 AWS 사고 탐지 및 대응 식별자가 포함되며 이벤트의 소스 및 세부 정보 유형을 필요한 값으로 설정합니다. 이렇게 하면 변환된 JSON 페이로드 구조가 관리형 규칙 패턴과 일치할 수 있습니다.
   + Lambda 함수의 대상을 2단계에서 생성한 사용자 지정 이벤트 버스(권장) 또는 기본 이벤트 버스로 설정합니다.

1. EventBridge 규칙을 생성하고 AWS 사고 탐지 및 대응에 푸시하려는 이벤트 목록과 일치하는 이벤트 패턴을 정의합니다. 규칙의 소스는 1단계에서 생성한 파트너 이벤트 버스(`aws.partner/apm_name/integrationName`)입니다. 규칙의 대상은 3단계에서 생성한 Lambda 함수(`[apm_name]-AWSIncidentDetectionResponse-LambdaFunction`)입니다. EventBridge 규칙 정의에 대한 지침은 [Amazon EventBridge 규칙](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)을 참조하세요.

AWS 사고 탐지 및 대응과 파트너 이벤트 버스 통합을 수동으로 설정하는 방법에 대한 단계별 예제는 [Datadog 및 Splunk의 알림 통합](https://docs.aws.amazon.com/IDR/latest/userguide/example_integrating_notifications.html)을 참조하세요.