View a markdown version of this page

Amazon SNS와 직접 연동하여 APM에서 경보 수집 - AWS 사고 탐지 및 대응 사용 설명서

Amazon SNS와 직접 연동하여 APM에서 경보 수집

APM이 Amazon SNS 주제로 경보 전송을 지원하는 경우 이 가이드에 따라 AWS 사고 탐지 및 대응에 APM 경보를 수집할 수 있습니다.

제공된 CloudFormation 템플릿을 배포하거나 이 통합을 수동으로 설정할 수 있습니다. 통합을 설정하기 전에 AWS 서비스 연결 역할(SLR) AWSServiceRoleForHealth_EventProcessor가 계정에 생성되었는지 확인합니다.

옵션 1: 사용CloudFormation

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

참고
  • 이 CloudFormation 템플릿을 통해 배포된 리소스(예: Lambda 및 EventBridge)에 대해 추가 비용이 발생합니다. 이러한 서비스의 가격에 대한 자세한 내용은 AWS 가격을 참조하세요.

  • 이 CloudFormation 템플릿은 AWS 사고 탐지 및 대응에서 경보를 수집해야 하는 모든 AWS 계정 및 리전에 배포되어야 합니다.

  • 이 문서에 제공된 예제는 Grafana용이지만 이 템플릿은 Amazon Simple Notification Service와 직접 통합되는 모든 APM에 사용할 수 있습니다.

  • 보안상의 이유로 AWS는 페이로드가 Amazon CloudWatch Logs에 로깅되지 않도록 TransformLambdaFunction에서 logger.info() 문을 제거할 것을 권장합니다.

이 CloudFormation 템플릿을 배포하기 위한 사전 조건:

사전 조건 완료:

  1. Amazon SNS 콘솔을 열고 주제를 선택합니다. APM에서 경보 이벤트를 수신하도록 생성된 SNS 주제의 ARN을 복사합니다.

    • 예시: arn:aws:sns:eu-west-1:012345678912:<your-apm-name>-sns

  2. CloudFormation 템플릿 다운로드 및 열기

    • 템플릿에서 TransformLambdaFunction을 찾습니다.

      • def lambda_handler(event, context)에서 SNS 레코드의 JSON 페이로드에 경보 이름이 표시되는 json 경로로 event["detail"]["incident-detection-response-identifier"]를 설정합니다.

        • SNS를 통해 TransformLambdaFunction으로 전송되는 모든 이벤트는 event["Records"][n]["Sns"]["Message"]의 상위 페이로드 구조를 갖습니다. 소스(APM)의 실제 페이로드 오리진은 상위 구조 내에 래핑됩니다.

        • Grafana의 예: event["Records"][n]["Sns"]["Message"]["alerts"][n]["labels"]["alertname"]

CloudFormation 템플릿 배포:

  1. 통합을 설정해야 하는 계정 및 리전의 CloudFormation 콘솔로 이동합니다.

  2. CloudFormation로 이동합니다.

    • 스택 생성, 새 리소스 사용(표준)을 선택합니다.

      • 기존 템플릿 선택, 템플릿 파일 업로드, 파일 선택을 선택한 다음 로컬로 저장한 CloudFormation 템플릿을 업로드합니다.

  3. 다음과 같이 스택 세부 정보를 지정합니다.

    • 스택 이름 입력 예: <your-apm-name>IntegrationForIDR

    • 사전 조건 완료 중에 얻은 파라미터 값 지정

      • APMNameParameter 예: Grafana

      • TriggerSNSParameter 예: arn:aws:sns:eu-west-1:012345678912:<your-apm-name>-sns

    • [Next]를 선택합니다.

  4. 다음과 같이 스택 옵션을 구성합니다.

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

  5. 검토 및 생성

    • 파라미터 값이 올바르게 구성되었는지 확인한 다음 제출을 선택합니다.

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

  7. CloudFormation 스택은 예제 값이 Grafana의 파라미터에 입력되었고 EU-WEST-1 리전에서 실행되었다고 가정하여 아래 리소스를 생성합니다.

    • CustomEventBus: Grafana-AWSIncidentDetectionResponse-EventBus

    • SNSSubscription: arn:aws:sns:eu-west-1:012345678912:grafana-sns:[random_string]

    • TransformLambdaExecutionRole: IDR-TransformLambdaExecutionRole-eu-west-1

    • TransformLambdaFunction: Grafana-AWSIncidentDetectionResponse-Lambda-Transform

    • TransformLambdaPermission: GrafanaIntegrationForIDR-TransformLambdaPermission-[random_string]

통합 테스트하기

CloudFormation 스택이 성공적으로 배포되면 APM에서 테스트 페이로드를 전송하여 통합을 검증할 수 있습니다. 테스트 페이로드가 APM에서 전송된 후 다음을 수행합니다.

  1. Lambda 콘솔로 이동하여 APMNameParameter-AWSIncidentDetectionResponse-Lambda-Transform 함수를 선택합니다. 그러고 나서 모니터링 탭을 선택합니다.

  2. 지표 그래프에서 성공적인 간접 호출을 관찰해야 합니다.

  3. Amazon CloudWatch Logs 보기를 선택합니다. 로그 스트림의 로그 이벤트를 통해 APM에서 전송된 테스트 페이로드가 있는지 또는 오류가 발생했는지 확인할 수 있습니다.

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

  1. Amazon EventBridge 콘솔로 이동합니다. 이벤트 버스를 선택합니다.

  2. CloudFormation 스택의 일부로 배포된 사용자 지정 이벤트 버스의 ARN을 기록합니다(예: arn:aws:events:eu-west-1:012345678912:event-bus/Grafana-AWSIncidentDetectionResponse-EventBus).

    • AWS 사고 탐지 및 대응에 이 사용자 지정 이벤트 버스의 ARN을 경보 수집 설문지 - 개요의 ‘타사 APM 경보’ 섹션에 있는 ‘EventBridge 이벤트 버스 ARN’ 필드에 제공합니다.

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

옵션 2: 수동 통합

Amazon SNS를 사용한 통합의 예를 보여 주는 다이어그램입니다.
  1. Amazon SNS 콘솔을 열고 Amazon Simple Notification Service 콘솔에서 APM으로부터 경보 이벤트를 수신할 이름이 [apm_name]-sns인 SNS 토픽을 생성합니다. 생성된 SNS 주제의 ARN을 기록해 둡니다.

  2. 다음 중 하나를 수행합니다.

    • (권장 방법) 이름이 [apm_name]-AWSIncidentDetectionResponse-EventBus인 EventBridge 사용자 지정 이벤트 버스를 만듭니다.

    • (대체 방법) 사용자 지정 이벤트 버스 대신 기본 EventBridge 이벤트 버스를 사용합니다.

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

  3. $YourApmName-AWSIncidentDetectionResponse-LambdaFunction이라는 Lambda 함수를 생성하여 SNS 페이로드를 변환합니다.

  4. SNS 주제를 Lambda 함수 $YourApmName-AWSIncidentDetectionResponse-LambdaFunction의 트리거로 설정합니다.

    • ‘트리거 추가’ 페이지에서 ‘SNS’를 검색합니다.

    • 1단계에서 생성한 전용 SNS 주제의 ARN을 추가합니다.

    • ‘추가’를 선택합니다.

  5. APM 설명서에 따라 AWS 사고 탐지 및 대응에서 수집해야 하는 APM 페이로드의 SNS 대상을 설정합니다.

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