Cloud Logging을 통해 알림 구성

이 문서에서는 서비스 상태 이벤트의 알림을 설정, 맞춤설정, 테스트하는 방법을 설명합니다.

Personalized Service Health는 Cloud Monitoring 로그 알림과 통합되므로 알림을 구성하고 수신할 수 있습니다. 다음과 같은 조건에 대한 알림을 만들 수 있습니다.

  • 새 이슈가 신고될 때
  • Google Cloud 지원팀에서 새 메시지를 보낼 때와 같이 기존 이슈가 업데이트되는 경우
  • 특정 제품 또는 지역과 같은 위치의 이슈가 생성되거나 업데이트될 때 Google Cloud
  • 상태, 관련성 등 기존 이슈의 특정 세부정보가 업데이트될 때

이러한 알림은 로그 알림을 사용하므로 각 알림은 모니터링 이슈와 연결됩니다. 각 알림에는 이슈 페이지 링크와 Service Health 대시보드로 연결되는 직접 링크가 포함됩니다. Incident 조사에 대해 자세히 알아보세요.

알림을 구성하면 알림 정책 조건이 충족될 때마다 알림이 전송됩니다. 이러한 알림에는 모니터링 한도가 적용됩니다. 예를 들어 프로젝트당 정책당 하루에 알림 20개가 전송될 수 있습니다.

다음 섹션에서는 로그 알림 정책을 구성하는 방법을 설명하고 일반적인 알림 시나리오의 예를 제공합니다. 로그 알림은 이메일, SMS, Pub/Sub, 웹훅, Slack, PagerDuty 등 다양한 통합을 지원하는 알림 채널을 사용합니다.

앞서 나열된 옵션 이외의 대상에 알림을 라우트하려면 Webhook을 사용하는 것이 좋습니다. 예를 들어 ServiceNow에 웹훅을 구성할 수 있습니다. 자세한 내용은 ServiceNow 문서의 Google Cloud에서 webhook 구성을 참고하세요.

알림 형식

알림 형식은 알림 채널에 따라 다릅니다.

이메일

이메일을 보내도록 알림을 구성하면 알림 조건이 충족되면 선택한 이메일 주소로 alerting-noreply@google.com 주소를 사용하는 메시지가 전송됩니다.

Slack

Slack에 게시하도록 맞춤 알림을 구성하면 이벤트가 발생할 때 선택한 채널에 Cloud Monitoring 애플리케이션의 메시지가 표시됩니다.

알림 정책 설정

알림은 알림을 받을 상황과 방법을 설명하는 알림 정책을 사용합니다.

Service Health 대시보드 내에서 또는 Google Cloud CLI를 사용하여 알림 정책을 구성할 수 있습니다.

알림 정책에는 알림이 전송되는 위치를 정의하는 Cloud Monitoring 알림 채널이 필요합니다. 알림 채널이 없는 경우 Google Cloud 콘솔에서 또는 Monitoring API를 사용하여 만들 수 있습니다.

Service Health 대시보드 내에서

빠른 시작을 참고하세요.

gcloud CLI 사용

gcloud CLI를 사용하여 알림 정책을 설정하려면 다음 단계를 따르세요.

  1. 알림 채널 ID를 가져옵니다.

    a. 알림 채널 ID를 나열합니다.

    gcloud config set project PROJECT_ID gcloud beta monitoring channels list
    

    b. projects/PROJECT_ID/notificationChannels/로 항목을 찾습니다. 이 항목은 알림 채널 ID입니다.

  2. 다음 콘텐츠로 policy.json 파일을 만듭니다.

    • ALERT_NAME가 알림에 표시됩니다. 예: 'Google Cloud SQL 문제'

    • ALERT_CONDITION는 알림을 보낼 시점을 정의합니다.

      • 조건을 정의할 때는 Google Cloud productslocations에 있는 값을 사용하세요.
      • 알림 조건의 예:

        알림 조건 ALERT_CONDITION
        Cloud SQL 이벤트에 대한 알림 받기 jsonPayload.impactedProductIds =~ \"hV87iK5DcEXKgWU2kDri\"
        us-central1-a 영역에서 발생하는 모든 활동에 대한 알림 수신 jsonPayload.impactedLocations =~ \"us-central1-a\"

      알림 조건의 예를 자세히 알아보세요.

    • NOTIFICATION_CHANNEL는 이전 단계에서 list 명령어를 사용하여 가져온 알림 채널 ID입니다. 예를 들면 projects/PROJECT_ID/notificationChannels/885798905074입니다.

    다음 스니펫은 policy.json 파일의 예를 보여줍니다.

    {
      "displayName": "ALERT_NAME",
      "combiner": "OR",
      "conditions": [ {
        "displayName": "Log match condition",
        "conditionMatchedLog": {
          "filter": "ALERT_CONDITION",
         } } ],
      "notificationChannels": [ "NOTIFICATION_CHANNEL" ],
    }
    
  3. Cloud Monitoring 정책을 만듭니다.

    gcloud config set project PROJECT_ID
    gcloud alpha monitoring policies create --policy-from-file="policy.json"
    

알림 콘텐츠 맞춤설정

JSON 파일의 다음 필드를 통해 알림 내 필드를 설정할 수 있습니다.

  • labelExtractors: 알림 헤더에 포함할 속성입니다. 이러한 속성을 맞춤설정하려면 LabelExtractors 가이드를 참고하세요.
  • content: 이메일 알림의 형식입니다. labelExtractors를 변수로 사용할 수 있는 마크다운 변수 대체를 사용할 수 있습니다. 이러한 변수를 맞춤설정하려면 이 가이드를 참고하세요.

알림을 맞춤설정하는 방법은 알림 정책 및 조건 예시를 참고하세요.

알림 테스트

알림을 테스트하려면 Cloud Logging을 사용하여 샘플 테스트 로그를 사용합니다. 테스트 로그에는 이전에 구성한 알림 로직이 표시됩니다.

Google Cloud 콘솔 사용

다음 단계를 따르세요.

  1. Cloud Logging에 로그 항목을 쓸 수 있는 entries:write 메서드의 참조 페이지로 이동합니다. 메서드를 사용해 볼 수 있는 창이 표시됩니다.
  2. 요청 본문에서 PROJECT_ID를 자체 프로젝트로 변경합니다.
  3. 테스트 중인 알림 조건에 따라 요청 본문의 jsonPayload 필드를 변경합니다. event_log.proto 스키마를 확인하고 로그의 값을 조정하여 관심 있는 특정 시나리오를 테스트할 수도 있습니다.

    {
      "entries": [
        {
          "logName": "projects/PROJECT_ID/logs/servicehealth.googleapis.com%2Factivity",
          "resource": {
            "type": "servicehealth.googleapis.com/Event",
            "labels": {
              "resource_container": "PROJECT_ID",
              "location": "global",
              "event_id": "U4AqrjwFQYi5fFBmyAX-Gg"
            }
          },
          "labels": {
            "servicehealth.googleapis.com/new_event": "true",
            "servicehealth.googleapis.com/updated_fields": "[]"
          },
          "jsonPayload": {
            "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog",
            "category": "INCIDENT",
            "title": "EXAMPLE... NOT REAL INCIDENT",
            "description": "EXAMPLE FOR TESTING, NOT REAL INCIDENT. We are experiencing an issue with Google Cloud infrastructure components at us-east1, australia-southeast2. Our engineering team continues to investigate the issue. We apologize to all who are affected by the disruption.",
            "updateTime": "2022-07-15T22:26:40Z",
            "endTime": "2022-07-16T22:13:20Z",
            "impactedLocations": "['us-east1', 'australia-southeast2']",
            "impactedProducts": "['CloudSQL']",
            "impactedProductIds": "['hV87iK5DcEXKgWU2kDri']",
            "startTime": "2022-07-13T12:26:40Z",
            "nextUpdateTime": "2022-07-13T16:26:40Z",
            "state": "ACTIVE",
            "detailedState": "CONFIRMED",
            "relevance": "RELATED"
          }
        }
      ]
    }
    
  4. 실행을 클릭합니다. Google API 탐색기에서 계정에 대한 액세스를 요청하는 창이 표시됩니다.

  5. Google API 탐색기 액세스를 허용합니다. 요청 본문이 있는 창에 다음 스크린샷이 표시되어 성공을 나타냅니다.

    메시지 200개

  6. 몇 분 정도 기다린 후 알림이 실행되었는지 확인합니다.

    1. Google Cloud 콘솔에서 Cloud Monitoring > Incidents로 이동하여 알림을 찾습니다.
    2. 알림 정책에서 사용하는 알림 채널에 알림이 수신되었는지 확인합니다.

알림을 다시 테스트해야 하는 경우 최소 5분 후에 테스트하세요.

gcloud 사용

gcloud 명령어를 사용하여 Cloud Logging API를 호출하여 테스트 로그 항목을 만들 수도 있습니다.

  1. (선택사항) 현재 프로젝트를 확인합니다.

    gcloud config list
    
  2. 현재 프로젝트를 설정합니다.

    gcloud_name config set project PROJECT_ID
    
  3. 테스트 로그 항목을 작성합니다.

    gcloud logging write --payload-type=json
    LOG_NAME
    '{ "category": "INCIDENT", "relevance": "IMPACTED", "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog", "description": "This is a test log entry"}'
    
  4. 몇 분 정도 기다린 후 알림이 실행되었는지 확인합니다.