이 페이지에서는 알림이 예상대로 수신되지 않는 이유를 설명하고 이러한 상황이 발생했을 때의 가능한 해결 방법을 제공합니다.
알림이 수신되지 않음
알림 채널을 구성하면 이슈가 발생할 때 알림을 받을 것으로 기대하지만, 알림을 받지 못한 경우입니다.
실패의 원인에 대한 정보를 수집하려면 다음을 수행합니다.
-
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
- 적합한 Google Cloud 프로젝트를 선택합니다.
알림 채널 이벤트의 로그를 쿼리합니다.
- 로그 이름 메뉴를 확장하고 notification_channel_events를 선택합니다.
- 심각도 메뉴를 확장하고 오류를 선택합니다.
- 선택사항: 커스텀 시간 범위를 선택하려면 시간 범위 선택기를 사용합니다.
- 쿼리 실행을 클릭합니다.
이전 단계에서는 다음 쿼리를 만듭니다.
resource.type:"stackdriver_notification_channel" logName="projects/PROJECT_ID/logs/monitoring.googleapis.com%2Fnotification_channel_events" severity=ERROR
요약 줄과
jsonPayload
필드에는 일반적으로 실패 정보가 포함됩니다. 예를 들어 게이트웨이 오류가 발생하면 요약 줄에 '502 잘못된 게이트웨이로 인한 실패'가 포함됩니다.
웹훅 알림이 수신되지 않음
웹훅 알림 채널을 구성하여 이슈가 발생하면 알림을 받게 되지만, 알림을 받지 못한 경우입니다.
비공개 엔드포인트
엔드포인트가 공개 상태가 아니면 알림용 웹훅을 사용할 수 없습니다.
이 문제를 해결하려면 해당 알림 주제에 대한 가져오기 구독과 함께 Pub/Sub 알림을 사용합니다.
Pub/Sub 알림 채널을 구성하면 Identity and Access Management가 포함된 Pub/Sub 큐로 이슈 알림이 전송됩니다. Pub/Sub 주제를 쿼리하거나 리슨할 수 있는 모든 서비스에서 이러한 알림을 사용할 수 있습니다. 예를 들어 App Engine, Cloud Run 또는 Compute Engine 가상 머신에서 실행되는 애플리케이션에서 이러한 알림을 사용할 수 있습니다.
가져오기 구독을 사용하는 경우 요청이 메시지가 도착하기를 기다리는 Google에 전송됩니다. 이러한 구독에는 Google에 대한 액세스 권한이 필요하지만 방화벽이나 인바운드 액세스에 대한 규칙은 필요하지 않습니다.
공개 엔드포인트
전송이 실패한 이유를 확인하려면 Cloud Logging 로그 항목을 검사하여 실패 정보를 확인합니다.
예를 들어 다음과 같이 필터와 함께 로그 탐색기를 사용해서 로그 항목에서 알림 채널 리소스를 검색할 수 있습니다.
resource.type="stackdriver_notification_channel"
Pub/Sub 알림이 수신되지 않음
Pub/Sub 알림 채널을 구성하지만 알림이 수신되지 않습니다.
이 조건을 해결하려면 다음을 시도해 보세요.
알림 서비스 계정이 있는지 확인합니다. 서비스 계정이 삭제되었으면 알림이 전송되지 않습니다.
서비스 계정이 있는지 확인하려면 다음을 수행합니다.
-
Google Cloud Console에서 IAM 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 IAM 및 관리자인 결과를 선택합니다.
다음 이름 지정 규칙이 사용된 서비스 계정을 검색합니다.
service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
이 서비스 계정이 나열되지 않으면 Google 제공 역할 부여 포함을 선택합니다.
알림 서비스 계정이 없으면 서비스 계정을 만들기 위해 Monitoring의 Pub/Sub 알림 채널을 만드는 프로세스를 시작해야 합니다.
-
Google Cloud 콘솔에서 notifications 알림 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.
- 알림 채널 수정을 클릭합니다.
Pub/Sub 섹션에서 새로 추가를 클릭합니다.
Monitoring은 서비스 계정이 없으면 알림 서비스 계정을 만듭니다. Pub/Sub 채널 만들기 대화상자에 알림 서비스 계정 이름이 표시됩니다.
알림 채널을 추가하지 않으려면 취소를 클릭합니다. 그렇지 않으면 알림 채널 만들기를 완료하고 채널 추가를 클릭합니다.
서비스 계정에 Pub/Sub 주제를 게시할 수 있는 권한을 부여합니다.
- 새 브라우저 탭에서 알림 채널 만들기 문서를 엽니다.
- Pub/Sub 탭을 선택한 후 페이지의 서비스 계정 승인 섹션에 있는 단계를 수행합니다.
-
알림 서비스 계정이 원하는 Pub/Sub 주제에 대해 알림을 전송하도록 승인되었는지 확인합니다.
서비스 계정의 권한을 보려면 Google Cloud 콘솔 또는 Google Cloud CLI 명령어를 사용하면 됩니다.
- Google Cloud 콘솔의 IAM 페이지에는 각 서비스 계정에 대한 역할이 표시됩니다.
- Google Cloud 콘솔의 Pub/Sub 주제 페이지에는 각 주제가 표시됩니다. 주제를 선택하면 권한 탭에 서비스 계정에 부여된 역할이 표시됩니다.
모든 서비스 계정과 해당 역할을 표시하려면 다음 Google Cloud CLI 명령어를 실행합니다.
gcloud projects get-iam-policy PROJECT_ID
다음은 이 명령어에 대한 부분 응답입니다.
serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/monitoring.notificationServiceAgent - members: [...] role: roles/owner - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/pubsub.publisher
명령어 응답은 역할만 포함하고, 주제별 승인을 포함하지 않습니다.
특정 주제에 대한 IAM binding을 나열하려면 다음 명령어를 실행합니다.
gcloud pubsub topics get-iam-policy TOPIC
다음은 이 명령어의 샘플 응답입니다.
bindings: - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwXPRb5WDPI= version: 1
알림 서비스 계정을 승인하는 방법은 서비스 계정 승인을 참조하세요.
업타임 체크 알림 정책 알림이 수신되지 않음
가상 머신(VM)이 재부팅되거나 다운되면 알림을 받고 싶기 때문에 측정항목 compute.googleapis.com/instance/uptime
을 모니터링하는 알림 정책을 만드는 경우는 생각해 봅시다.
측정항목 데이터가 없으면 이슈를 생성하도록 조건을 만들고 구성했습니다. MQL(모니터링 쿼리 언어)1를 사용하여 조건을 정의하지는 않았습니다.
그런데 가상 머신(VM)이 재부팅되거나 다운되어도 알림이 표시되지 않습니다.
이 알림 정책은 RUNNING
상태의 Compute Engine VM 인스턴스에 대해서만 시계열을 모니터링합니다. STOPPED
, DELETED
등 다른 상태에 있는 VM의 시계열은 조건이 평가되기 전에 필터링됩니다. 이 동작으로 인해, VM 인스턴스가 실행 중인지 확인하기 위해 측정항목 부재 알림 조건이 있는 알림 정책을 사용할 수 없습니다. VM 인스턴스 상태에 대한 자세한 내용은 VM 인스턴스 수명 주기를 참조하세요.
이 문제를 해결하려면 업타임 체크를 모니터링하는 알림 정책을 만듭니다. 비공개 엔드포인트의 경우 비공개 업타임 체크를 사용하세요.
업타임 체크에 대한 알림 대신 사용할 수 있는 방법은 데이터 부재를 모니터링하는 알림 정책을 사용하는 것입니다. 데이터가 없는 대신 업타임 체크에 대한 알림을 사용하는 것이 좋습니다. Monitoring 데이터의 가용성에 일시적인 문제가 있는 경우 측정항목 부재 알림 정책이 거짓양성을 생성할 수 있습니다.
그러나 업타임 체크를 사용할 수 없는 경우 MQL을 사용하여 VM이 종료되었음을 알리는 알림 정책을 만들 수 있습니다. MQL 정의 조건은 VM 인스턴스 상태를 기준으로 시계열 데이터를 사전 필터링하지 않습니다. MQL은 VM 상태로 데이터를 필터링하지 않으므로 이를 사용하여 종료된 VM에 데이터가 없음을 감지할 수 있습니다.
다음 MQL 조건은 compute.googleapis.com/instance/cpu/utilization
측정항목을 모니터링합니다.
fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
|absent_for 3m
이 조건으로 모니터링되는 VM이 종료되면 3분 후 이슈가 생성되고 알림이 전송됩니다. absent_for
값은 최소 3분 이상이어야 합니다.
MQL에 대한 상세 설명은 MQL을 사용한 알림 정책을 참조하세요.
1: MQL은 Cloud Monitoring API 호출 및 Google Cloud 콘솔에서 사용할 수 있는 표현적인 텍스트 기반 언어입니다. Google Cloud 콘솔을 사용할 때 MQL을 사용하여 조건을 구성하려면 코드 편집기를 사용해야 합니다.
요청 수 알림 정책 알림이 수신되지 않음
완료된 요청 수를 모니터링하려고 합니다. serviceruntime.googleapis.com/api/request_count
측정항목을 모니터링하는 알림 정책을 만들었지만 요청 수가 구성된 기준점을 초과하면 알림이 전송되지 않습니다.
요청 수 측정항목의 최대 정렬 기간은 7시간 30분입니다.
이 문제를 해결하려면 알림 정책에서 정렬 기간의 값을 확인합니다. 값이 이 측정항목의 최댓값보다 크면 정렬 기간을 7시간 30분 이하로 줄입니다.