샘플 정책

이 페이지에서는 영감을 얻고 고유한 디자인 정책을 부트스트랩하는 데 사용할 수 있는 특정 알림 정책 모음을 제공합니다.

JSON 또는 YAML 형식으로 정책 표현

JSON과 YAML의 두 가지 데이터 형식으로 알림 정책을 나타낼 수 있습니다. Cloud SDK는 두 형식을 모두 읽고 쓸 수 있습니다. REST API는 JSON을 읽을 수 있습니다.

기존 알림 정책과 알림 채널의 YAML(기본값) 표현을 생성하려면 gcloud alpha monitoring policies listdescribe 명령어나 gcloud alpha monitoring channels listdescribe 명령어를 각각 사용합니다.

예를 들어 다음 명령어는 정책 한 개를 검색하고 test-policy.yaml 파일에 출력을 캡처합니다.

gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307 > test-policy.yaml

기존 알림 정책과 알림 채널의 JSON 표현을 생성하려면 다음 안내를 따르세요.

정책 복사

백업/복원 예에 설명된 대로 저장된 정책을 사용하여 저장된 정책의 새 사본을 만들 수 있습니다. 또한 저장된 정책과 비슷한 정책을 만들기 위한 시작점으로 사용할 수도 있습니다.

한 프로젝트에 저장된 정책을 사용하여 다른 프로젝트에 새 정책이나 비슷한 정책을 만들 수 있습니다. 하지만 저장된 정책 사본을 다음과 같이 먼저 변경해야 합니다.

  • 알림 채널에서 다음 필드를 삭제합니다.
    • name
    • verificationStatus
  • 알림 채널을 만든 다음 알림 정책에서 채널을 참조합니다. 새 채널 식별자가 있어야 합니다.
  • 다시 만드는 모든 알림 정책에서 다음 필드를 삭제합니다.
    • name
    • condition.name
    • creationRecord
    • mutationRecord

정책 샘플

이 샘플의 정책은 Stackdriver Monitoring 콘솔에서 사용하는 용어와 동일한 용어(예 'rate-of-change policy')를 사용하여 구성되지만 실제로 이러한 모든 분류를 기반으로 하는 조건은 다음 두 가지 유형뿐입니다.

  • 임계 조건: UI에 언급 된 거의 모든 정책 유형이 임계 조건의 변형입니다.
  • 부재 조건

이 페이지의 샘플에서 이들은 conditionThresholdconditionAbsent 조건으로 표시됩니다. 자세한 내용은 Condition의 참조 페이지를 확인하세요.

측정항목 임계값 정책

측정항목 임계값 정책은 어떤 값이 미리 정의된 경계를 넘을 때 이를 감지하는 정책입니다. 임계값 정책은 조치를 취할 수 있도록 무언가가 중요한 점에 접근하고 있음을 알려줍니다. 예를 들어 사용 가능한 디스크 공간이 전체 디스크 공간의 10% 아래로 떨어지면 시스템의 디스크 공간이 곧 부족해질 수 있습니다.

다음 정책에서는 VM 그룹 상태의 표시기로 평균 CPU 사용량을 사용합니다. 60초 이상의 간격으로 측정되는 인스턴스 및 영역 내 VM 그룹의 평균 CPU 사용률이 15분(900초) 동안 사용률 임계값인 90%를 넘으면 알림이 발생합니다.

{
    "displayName": "Very high CPU usage",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "CPU usage is extremely high",
            "conditionThreshold": {
                "aggregations": [
                    {
                        "alignmentPeriod": "60s",
                        "crossSeriesReducer": "REDUCE_MEAN",
                        "groupByFields": [
                            "project",
                            "resource.label.instance_id",
                            "resource.label.zone"
                        ],
                        "perSeriesAligner": "ALIGN_MAX"
                    }
                ],
                "comparison": "COMPARISON_GT",
                "duration": "900s",
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
                           AND resource.type=\"gce_instance\"",
                "thresholdValue": 0.9,
                "trigger": {
                    "count": 1
                }
            }
        }
    ],
}

측정항목 부재 정책

메트릭 부재 정책은 지정된 기간 동안 메트릭에 기록되는 데이터가 없을 때 트리거됩니다.

이를 보여주는 한 가지 방법은 아무 것도 기록되지 않는 커스텀 측정항목을 만드는 것입니다. 이러한 종류의 정책에는 커스텀 측정항목이 필요 없지만 시연을 위해 실제로 커스텀 측정항목이 사용되지 않음을 확인하는 것이 쉽습니다.

다음은 커스텀 측정항목의 샘플 설명자입니다. API 탐색기를 사용하여 측정항목을 만들 수 있습니다.

{
  "description": "Number of times the pipeline has run",
  "displayName": "Pipeline runs",
  "metricKind": "GAUGE",
  "type": "custom.googleapis.com/pipeline_runs",
  "labels": [
    {
      "description": "The name of the pipeline",
      "key": "pipeline_name",
      "valueType": "STRING"
    },
  ],
  "unit": "1",
  "valueType": "INT64"
}

자세한 내용은 커스텀 측정항목 사용하기를 참조하세요.

약 1시간 동안 이 측정항목에 데이터가 기록되지 않으면 다음 알림 정책이 트리거됩니다. 즉, 시간별 파이프라인 실행에 실패했습니다. 여기에 사용된 조건은 conditionAbsent입니다.

{
    "displayName": "Data ingestion functioning",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "Hourly pipeline is up",
            "conditionAbsent": {
                "duration": "3900s",
                "filter": "resource.type=\"global\"
                           AND metric.type=\"custom.googleapis.com/pipeline_runs\"
                           AND metric.label.pipeline_name=\"hourly\"",
            }
        }
    ],
}

변환율 정책

이 정책은 CPU 사용률이 빠르게 증가하고 있음을 알려줍니다.

{
  "displayName": "High CPU rate of change",
  "combiner": "OR",
  "conditions": [
    {
      "displayName": "CPU usage is increasing at a high rate",
      "conditionThreshold": {
         "aggregations": [
           {
             "alignmentPeriod": "900s",
             "perSeriesAligner": "ALIGN_PERCENT_CHANGE",
           }],
        "comparison": "COMPARISON_GT",
        "duration": "180s",
        "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
        "thresholdValue": 0.5,
        "trigger": {
          "count": 1
         }
      }
    }
  ],
}

그룹 집계 정책

이 정책은 Google Kubernetes Engine 클러스터의 평균 CPU 사용률이 임계값을 초과하면 알려줍니다.

{
    "displayName": "CPU utilization across GKE cluster exceeds 10 percent",
    "combiner": "OR",
    "conditions": [
         {
            "displayName": "Group Aggregate Threshold across All Instances in Group GKE cluster",
            "conditionThreshold": {
                "filter": "group.id=\"3691870619975147604\" AND metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
                "comparison": "COMPARISON_GT",
                "thresholdValue": 0.1,
                "duration": "300s",
                "trigger": {
                    "count": 1
                },
                "aggregations": [
                    {
                        "alignmentPeriod": "60s",
                        "perSeriesAligner": "ALIGN_MEAN",
                        "crossSeriesReducer": "REDUCE_MEAN",
                        "groupByFields": [
                              "project",
                              "resource.label.instance_id",
                              "resource.label.zone"
                        ]
                    },
                    {
                        "alignmentPeriod": "60s",
                        "perSeriesAligner": "ALIGN_SUM",
                        "crossSeriesReducer": "REDUCE_MEAN"
                    }
                ]
            },
        }
    ],
}

이 정책은 다음 그룹이 있다고 가정합니다.

{
    "name": "projects/a-gcp-project/groups/3691870619975147604",
    "displayName": "GKE cluster",
    "filter": "resource.metadata.name=starts_with(\"gke-kuber-cluster-default-pool-6fe301a0-\")"
}

그룹에 해당하는 필드를 식별하려면 project.groups.list 참조 페이지에서 API 탐색기를 사용하여 그룹 세부정보를 나열하세요.

업타임 체크 정책

업타임 체크 상태가 Stackdriver Monitoring 콘솔에 나타나지만 알림 정책을 사용하여 업타임 체크가 실패할 경우 바로 알림을 받을 수 있습니다.

예를 들어 다음 JSON은 Google Cloud Platform 사이트에 대한 업타임 체크를 설명합니다. 업타임 체크는 5분마다 가용성을 확인합니다.

Stackdriver Monitoring 콘솔로 업타임 체크가 만들어졌습니다. 여기에서 JSON 표현은 Monitoring API로 프로젝트의 업타임 체크를 나열하여 만들어졌습니다. uptimeCheckConfigs.list를 참조하세요. Monitoring API를 사용하여 업타임 체크를 만들 수도 있습니다.

{
    "name": "projects/a-gcp-project/uptimeCheckConfigs/uptime-check-for-google-cloud-site",
    "displayName": "Uptime check for Google Cloud site",
    "monitoredResource": {
        "type": "uptime_url",
        "labels": {
            "host": "cloud.google.com"
      }
    },
    "httpCheck": {
        "path": "/index.html",
        "port": 80,
        "authInfo": {}
    },
    "period": "300s",
    "timeout": "10s",
    "contentMatchers": [
        {}
    ]
}

업타임 체크에 대한 알림 정책을 만들려면 UPTIME_CHECK_ID를 사용하여 업타임 체크를 참조하세요. 이 ID는 업타임 체크를 만들 때 설정됩니다. name 필드의 마지막 구성요소로 표시되며, UI에는 표시되지 않습니다. Monitoring API를 사용 중이면 uptimeCheckConfigs.create 메소드가 이 ID를 반환합니다.

ID는 displayName(이 경우 UI에 설정됨)에서 파생됩니다. 업타임 체크를 나열하고 name 값을 참조하여 이를 확인할 수 있습니다.

이전에 설명한 업타임 체크의 ID는 uptime-check-for-google-cloud-site입니다.

업타임 체크가 실패하면 아래의 알림 정책이 트리거되고 지정된 알림 채널에 알림이 전송됩니다.

{
    "displayName": "Google Cloud site uptime failure",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "Failure of uptime check_id uptime-check-for-google-cloud-site",
            "conditionThreshold": {
                "aggregations": [
                    {
                        "alignmentPeriod": "1200s",
                        "perSeriesAligner": "ALIGN_NEXT_OLDER",
                        "crossSeriesReducer": "REDUCE_COUNT_FALSE",
                        "groupByFields": [ "resource.label.*" ]
                    }
                ],
                "comparison": "COMPARISON_GT",
                "duration": "600s",
                "filter": "metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"
                           AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
                           AND resource.type=\"uptime_url\"",
                "thresholdValue": 1,
                "trigger": {
                    "count": 1
                }
            }
        }
    ],
}

알림 정책의 필터는 유형 및 라벨을 사용하여 모니터링되는 측정항목을 지정합니다. 측정항목 유형은 monitoring.googleapis.com/uptime_check/check_passed입니다. 측정항목 라벨은 모니터링되는 특정 업타임 체크를 식별합니다. 이 예시에서는 check_id 라벨 필드에 업타임 체크 ID가 포함되어 있습니다.

AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"

자세한 내용은 모니터링 필터를 참조하세요.

프로세스 상태 정책

프로세스 상태 정책은 패턴과 일치하는 프로세스 수가 임계값을 초과하면 사용자에게 알릴 수 있습니다. 예를 들어 이 정책을 사용하여 프로세스가 실행 중지되었음을 사용자에게 알릴 수 있습니다.

이 정책은 사용자 www로 실행되고 문자열 nginx와 일치하는 프로세스를 5분 이상 사용할 수 없을 때 지정된 알림 채널에 알림을 전송합니다.

{
    "displayName": "Server health",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "Process 'nginx' is not running",
            "conditionThreshold": {
                "filter": "select_process_count(\"has_substring(\\\"nginx\\\")\", \"www\") AND resource.type=\"gce_instance\"",
                "comparison": "COMPARISON_LT",
                "thresholdValue": 1,
                "duration": "300s"
            }
        }
    ],
}

다른 예시는 프로세스 상태를 참조하세요.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Stackdriver Monitoring
도움이 필요하시나요? 지원 페이지를 방문하세요.