Amazon SNS와 직접 연동하여 APM에서 경보 수집
APM이 Amazon SNS 주제로 경보 전송을 지원하는 경우 이 가이드에 따라 AWS 사고 탐지 및 대응에 APM 경보를 수집할 수 있습니다.
제공된 CloudFormation 템플릿을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 템플릿을 배포하기 위한 사전 조건:
-
APM에서 경보 이벤트를 수신하려면 Amazon Simple Notification Service 주제를 생성해야 합니다. Amazon Simple Notification Service 콘솔에서 SNS 주제를 생성합니다.
-
템플릿의
TransformLambdaFunction을 수정하여 사용 중인 APM에 따라 원하는 값으로["detail"]["incident-detection-response-identifier"]를 설정해야 합니다.
사전 조건 완료:
-
Amazon SNS 콘솔을 열고 주제를 선택합니다. APM에서 경보 이벤트를 수신하도록 생성된 SNS 주제의 ARN을 복사합니다.
-
예시:
arn:aws:sns:eu-west-1:012345678912:<your-apm-name>-sns
-
-
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 템플릿 배포:
-
통합을 설정해야 하는 계정 및 리전의 CloudFormation 콘솔로 이동합니다.
-
CloudFormation로 이동합니다.
-
스택 생성, 새 리소스 사용(표준)을 선택합니다.
-
기존 템플릿 선택, 템플릿 파일 업로드, 파일 선택을 선택한 다음 로컬로 저장한 CloudFormation 템플릿을 업로드합니다.
-
-
-
다음과 같이 스택 세부 정보를 지정합니다.
-
스택 이름 입력 예:
<your-apm-name>IntegrationForIDR -
사전 조건 완료 중에 얻은 파라미터 값 지정
-
APMNameParameter 예:
Grafana -
TriggerSNSParameter 예:
arn:aws:sns:eu-west-1:012345678912:<your-apm-name>-sns
-
-
[Next]를 선택합니다.
-
-
다음과 같이 스택 옵션을 구성합니다.
-
페이지 하단으로 스크롤하고 확인란을 선택하여 CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성하도록 허용합니다.
-
-
검토 및 생성
-
파라미터 값이 올바르게 구성되었는지 확인한 다음 제출을 선택합니다.
-
-
CloudFormation 스택은 APM 이벤트를 AWS 사고 탐지 및 대응에 통합하는 데 필요한 리소스를 배포합니다. CloudFormation 스택 상태가 CREATE_COMPLETE가 될 때까지 기다립니다.
-
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에서 전송된 후 다음을 수행합니다.
-
Lambda 콘솔로 이동하여
APMNameParameter-AWSIncidentDetectionResponse-Lambda-Transform함수를 선택합니다. 그러고 나서 모니터링 탭을 선택합니다. -
지표 그래프에서 성공적인 간접 호출을 관찰해야 합니다.
-
Amazon CloudWatch Logs 보기를 선택합니다. 로그 스트림의 로그 이벤트를 통해 APM에서 전송된 테스트 페이로드가 있는지 또는 오류가 발생했는지 확인할 수 있습니다.
이벤트 버스 ARN을 AWS 사고 탐지 및 대응과 공유
-
Amazon EventBridge 콘솔로 이동합니다. 이벤트 버스를 선택합니다.
-
CloudFormation 스택의 일부로 배포된 사용자 지정 이벤트 버스의 ARN을 기록합니다(예:
arn:aws:events:eu-west-1:012345678912:event-bus/Grafana-AWSIncidentDetectionResponse-EventBus).-
AWS 사고 탐지 및 대응에 이 사용자 지정 이벤트 버스의 ARN을 경보 수집 설문지 - 개요의 ‘타사 APM 경보’ 섹션에 있는 ‘EventBridge 이벤트 버스 ARN’ 필드에 제공합니다.
-
-
온보딩 프로세스 중에 AWS 사고 탐지 및 대응은 이 사용자 지정 이벤트 버스에 관리형 EventBridge 규칙을 생성하여 APM 경보를 수집합니다.
옵션 2: 수동 통합
-
Amazon SNS 콘솔을 열고 Amazon Simple Notification Service 콘솔에서 APM으로부터 경보 이벤트를 수신할 이름이
[apm_name]-sns인 SNS 토픽을 생성합니다. 생성된 SNS 주제의 ARN을 기록해 둡니다. -
다음 중 하나를 수행합니다.
-
(권장 방법) 이름이
[apm_name]-AWSIncidentDetectionResponse-EventBus인 EventBridge 사용자 지정 이벤트 버스를 만듭니다. -
(대체 방법) 사용자 지정 이벤트 버스 대신 기본 EventBridge 이벤트 버스를 사용합니다.
AWS 사고 탐지 및 대응은
AWSHealthEventProcessorEventSource-DO-NOT-DELETESLR을 통해 사용자 지정 또는 기본 이벤트 버스에 관리형 규칙(AWSServiceRoleForHealth_EventProcessor)을 설치합니다. 규칙 소스는 사용자 지정 또는 기본 이벤트 버스이고, 규칙 대상은 AWS 사고 탐지 및 대응이며, 규칙은 타사 APM 이벤트 수집 패턴과 일치합니다. -
-
$YourApmName-AWSIncidentDetectionResponse-LambdaFunction이라는 Lambda 함수를 생성하여 SNS 페이로드를 변환합니다.-
변환된 이벤트는 EventBridge를 사용하여 APM 알림을 수집하기 위한 페이로드 요구 사항에 명시된 페이로드 요구 사항을 충족해야 합니다.
-
Lambda 함수의 대상을 2단계에서 생성한 사용자 지정 이벤트 버스(권장) 또는 기본 이벤트 버스로 설정합니다.
-
-
SNS 주제를 Lambda 함수
$YourApmName-AWSIncidentDetectionResponse-LambdaFunction의 트리거로 설정합니다.-
‘트리거 추가’ 페이지에서 ‘SNS’를 검색합니다.
-
1단계에서 생성한 전용 SNS 주제의 ARN을 추가합니다.
-
‘추가’를 선택합니다.
-
-
APM 설명서에 따라 AWS 사고 탐지 및 대응에서 수집해야 하는 APM 페이로드의 SNS 대상을 설정합니다.
AWS 사고 탐지 및 대응은 AWSHealthEventProcessorEventSource-DO-NOT-DELETE SLR을 통해 사용자 지정 또는 기본 이벤트 버스에 관리형 규칙(AWSServiceRoleForHealth_EventProcessor)을 설치합니다. 규칙 소스는 사용자 지정 또는 기본 이벤트 버스이고, 규칙 대상은 AWS 사고 탐지 및 대응이며, 규칙은 타사 APM 이벤트 수집 패턴과 일치합니다.