範例政策

本頁面提供一組特定的快訊政策,可用於啟發及啟動您自行設計的政策。

以 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
  • 建立通知管道,然後在快訊政策中參照這些通知管道 (您需要新的管道 ID)。
  • 從任何重新建立的快訊政策中移除下列欄位:
    • name
    • condition.name
    • creationRecord
    • mutationRecord

政策範例

這裡的政策在組織時使用的術語,與 Stackdriver Monitoring 主控台使用的術語相同,例如「變更頻率政策」,但實際上,只有兩種類型的條件是這裡所有分類的基礎:

  • 臨界值條件;UI 中提到的幾乎所有政策類型都是臨界值條件的變因
  • 不存在條件

在這裡的範例中,這些條件以 conditionThresholdconditionAbsent 條件表示。詳情請參閱 Condition 的參考資料頁面。

指標臨界值政策

指標臨界值政策是在一些值超過預先設定界限時進行偵測的政策。臨界值政策可讓您知道某些值正在接近一個重要的點,以便您可以採取一些動作。例如,可用磁碟空間低於總磁碟空間的 10%,且系統的磁碟空間可能很快就要用盡的時候。

下列政策使用平均 CPU 使用率做為 VM 群組健康狀態的指標。只要執行個體與區域中 VM 群組的平均 CPU 使用率 (以 60 秒為間隔進行測量) 超過 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
                }
            }
        }
    ],
}

指標不存在政策

指標不存在政策會在指定時間內沒有資料寫入指標時觸發。

說明這項政策的一個方法就是,建立一個不會寫入任何資料的自訂指標。這一類型的政策不需要自訂指標,但是基於示範的目的,這比較容易確保實際上沒有任何項目使用自訂指標。

以下是自訂指標的範例描述元。您可以使用 APIs Explorer 建立指標。

{
  "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"
}

詳情請參閱使用自訂指標一文。

如果大約一個小時的時間內沒有資料寫入這個指標,就會觸發下列快訊政策:換句話說,您的每小時管道是無法執行的。請注意,這裡使用的條件是 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 Explorer 列出群組詳細資料。

運作時間檢查政策

運作時間檢查的狀態會顯示在 Stackdriver Monitoring 主控台上,但您可以透過快訊政策,在運作時間檢查失敗時直接收到通知。

例如,下列的 JSON 描述 Google Cloud Platform 網站上的運作時間檢查。這個運作時間檢查會每 5 分鐘檢查一次可用性。

您可以使用 Stackdriver Monitoring 主控台建立運作時間檢查。這裡的例子是透過使用 Monitoring API 在專案中列出運作時間檢查的方式來建立 JSON 表示法;詳情請參閱 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\"

詳情請參閱監控篩選器一文。

程序健康狀態政策

如果符合某種模式的程序數超過臨界值,程序健康狀態政策就會通知您。舉例來說,這個政策可用來告知您,程序已經停止執行。

如果超過 5 分鐘的時間沒有符合 nginx 字串且以使用者 www 身分執行的程序可供使用,這個政策就會將通知傳送至指定通知管道。

{
    "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
需要協助嗎?請前往我們的支援網頁