割り当て指標をグラフ化してモニタリングする

このドキュメントでは、 Google Cloudによって割り当てられた割り当てをモニタリングするアラート ポリシーとグラフを作成する方法について、いくつかの例を示しながら説明します。Google Cloud には、プロジェクトまたは組織によって消費されるリソースの追跡や制限に使用できるさまざまな割り当てがあります。数量に基づく割り当てと頻度に基づく割り当てに関する情報など、割り当ての詳細については、割り当ての操作をご覧ください。

始める前に

このページは、時系列データとその操作に精通していることを前提としています。詳細については、次のリソースをご覧ください。

  • 時系列データの操作については、フィルタリングと集計をご覧ください。
  • ゲージ、デルタ、累積という用語の定義については、指標の種類をご覧ください。
  • 時系列の結合に使用する関数の詳細については、AlignerReducer をご覧ください。

割り当て管理

Cloud Monitoring では、次の 2 つの方法で割り当てを管理します。

  • コンシューマー割り当て: このタイプの割り当てでは、モニタリング対象リソースは consumer_quota です。このリソースの指標は、serviceruntime 指標のサブセットです。

    このページに挙げた例の多くはコンシューマー割り当てです。

  • リソース固有の割り当て: 一部のサービスでは、割り当てにリソース固有の指標を持つモニタリング対象リソースを提供しています。これらの指標タイプは 3 つのグループで表示され、次の命名形式に従います。

    • service/quota/quota-type/exceeded
    • service/quota/quota-type/limit
    • service/quota/quota-type/usage

    たとえば、Compute Engine には compute.googleapis.com/VpcNetwork リソースがあります。このリソースに関連付けられている割り当て関連の指標は、compute 指標compute.googleapis.com/quota サブセットです。「VPC ネットワークあたりのインスタンス数」の割り当てに関連する指標タイプは次の 3 つです。

割り当て指標と上限名を特定する

割り当て使用量に関する元データ(特にコンシューマー割り当ての場合)には、多数の異なる割り当て情報が含まれている可能性があります。グラフまたはアラート ポリシーの特定の割り当て情報を抽出するには、割り当てデータのサブセットを特定する必要があります。

ソースによっては、割り当てデータに、必要な情報を分離するために使用できるラベルが含まれている場合があります。これらのラベルには次のものがあります。

  • 割り当て指標: 割り当て指標は、割り当てのタイプを示す識別子です。指標リストで説明されている指標タイプの一つではありません。たとえば、コンシューマー割り当てデータはすべて、quota/allocation/usage のような serviceruntime.googleapis.com 指標タイプとして記述されます。この指標タイプには、割り当て対使用量のデータなどで特定の割り当てをフィルタリングするときに使用できる quota_metric ラベルがあります。
  • 上限名: 上限名は、特定の割り当てタイプに対する上限を示します。1 つの割り当てに複数の上限を設定できます。たとえば、読み取り呼び出しの割り当てとして、readsPerMinutereadsPerDay という上限名を付け、1 分あたりの上限が 100、1 日あたりの上限が 1,000 という 2 つ上限を設定できます。割り当て関連の指標タイプには、この値として limit_name フィールドが含まれる場合があります。

quota_metric ラベルはすべての serviceruntime.googleapis.com/quota 指標タイプに含まれますが、limit_name ラベルを含むのはその中の一部のみです。リソース固有の割り当て指標タイプには、limit_name ラベルが含まれます。

すべての Google Cloud サービスが割り当て指標をサポートしているわけではありません。サービスが割り当て指標をサポートしているかどうかを判断し、割り当て固有のラベルの値を特定するには、次の操作を行います。

  1. Google Cloud コンソールで、[割り当てとシステム上限] ページに移動します。

    [割り当てとシステム上限] に移動

    このページを検索バーで検索する場合は、小見出しが「IAM と管理」の結果を選択します。

  2. 列を表示)をクリックし、割り当て表示に次の列を追加します。

    • 指標: この列には quota_metric ラベルの値が表示されます。
    • 上限名: この列には limit_name ラベルの値が表示されます。
    • モニタリング対象リソース: データを入力すると、割り当ては一覧表示されたモニタリング対象リソースを使用します。空の場合、割り当てのモニタリング対象リソースは consumer_quota です。
  3. 目的の割り当てを見つけます。

    たとえば、Compute Engine API のサブネットワーク割り当てでは、指標compute.googleapis.com/subnetworks として、上限名SUBNETWORKS-per-project として一覧表示されます。また、モニタリング対象リソースは一覧表示されません。したがって、この割り当てのモニタリング対象リソースは consumer_quota です。

例: 特定のコンシューマー割り当て指標の使用状況を表示する

Compute Engine の合計ディスク ストレージ割り当てをリージョン別に表示するグラフを作成することが目標です。このコンシューマー割り当ての例では、quota/allocation/usage データを取得した後、特定の割り当て指標の割り当て使用量が表示されるようにデータをフィルタリングします。

  1. Google Cloud コンソールで、[Cloud Monitoring] を選択し、[Metrics Explorer] を選択します。

  2. ツールバーで、期間メニューを開き、[過去 14 日間] を選択します。

  3. [ウィジェット タイプ] メニューを開き、[積み上げ棒グラフ] を選択します。

  4. 数量に基づく割り当て使用量を表示するように Metrics Explorer を構成します。

    1. [指標を選択] をクリックし、フィルタバー)に「allocation」と入力します。
    2. リソースに [Consumer Quota] を選択します。
    3. 指標カテゴリの [割り当て] を選択します。
    4. 指標の [Allocation quota usage] を選択し、[適用] をクリックします。
    5. [集計] メニューを開き、[未集計] を選択します。

    コンシューマー割り当てを選択します。

    グラフには、割り当て使用量が 6 週間の棒グラフとして表示されます。凡例を表示すると、グラフに複数のサービスの割り当て使用量が表示されます。

    Cloud Monitoring API を使用する場合、同等のフィルタ値は次のとおりです。

    metric.type="serviceruntime.googleapis.com/quota/allocation/usage" resource.type="consumer_quota"
    

    このフィルタ値を表示するには、[リソースの種類] メニューを開き、[ダイレクト フィルタモード] を選択します。

  5. グラフを Compute Engine サービスに制限するには、フィルタ service = compute.googleapis.com を追加します。

    コンピューティング サービスでコンシューマー割り当てをフィルタ。

    Cloud Monitoring API を使用する場合、同等のフィルタ値は次のとおりです。

    metric.type="serviceruntime.googleapis.com/quota/allocation/usage" resource.type="consumer_quota" resource.label.service="compute.googleapis.com"
    

    Compute Engine 割り当てに割り当てられている割り当て使用量の時系列がグラフに表示されます。凡例には、表示されている各時系列の quota_metric ラベルの値が表示されます。この値は特定の割り当てを示します。たとえば、compute.googleapis.com/disks_total_storage は時系列が Compute Engine の合計ディスク ストレージ割り当て用であることを示します。

    グラフには、使用状況を記録した割り当ての割り当て使用量のみが表示されます。たとえば、プロジェクトに Compute Engine リソースがない場合、compute.googleapis.com サービスをフィルタリングすると、データのないグラフが作成されます。

  6. Compute Engine の合計ディスク ストレージの割り当て使用量を表示するグラフを作成するには、フィルタ quota_metric = compute.googleapis.com/disks_total_storage を使用します。

    割り当て指標でコンシューマー割り当てをフィルタ。

    Cloud Monitoring API を使用する場合、同等のフィルタ値は次のとおりです。

    metric.type="serviceruntime.googleapis.com/quota/allocation/usage" resource.type="consumer_quota" metric.label.quota_metric="compute.googleapis.com/disks_total_storage"
    
  7. 前のグラフでは、リージョン us-central1us-east1 の時系列と、ゾーン us-central1-a を含む複数のゾーンの時系列が表示されています。

    ゾーンのデータを表示せずにリージョンのデータのみを表示するようにグラフを改良するには、location ラベルに基づくフィルタを追加します。この例で、両方のリージョンが us- で始まり 1 で終わる場合、正規表現 location =~ ^us.*1$ を使用するフィルタが正常に機能します。

    割り当て指標とリージョンでフィルタ。

コンシューマー割り当ての場合、quota_metric ラベルの値は、サービスとモニタリング対象の特定の割り当て使用量の両方を識別します。特定の割り当て指標をモニタリングするグラフまたはアラート ポリシーを作成するときに、この情報を使用します。

Cloud Monitoring のアラート ポリシー

アラート ポリシーは、割り当て上限の 85% に達した場合などに通知を受け取れるよう Monitoring を構成する方法です。

アラート ポリシーとは、次のような条件と通知情報の集合です。

  • 条件では、モニタリング対象、そのリソースの時系列データの結合方法、インシデントの生成のタイミングを記述します。アラート ポリシーには少なくとも 1 つの条件が必要です。
  • 通知チャンネルは、インシデントが発生したときの通知先と通知方法を指定します。たとえば、特定のユーザーまたはグループにメールを送信するようにアラート ポリシーを構成できます。

アラート ポリシー条件を作成するには、次の 2 つの方法があります。

  • Monitoring フィルタを使用してデータを選択して操作する。たとえば、グラフィカル インターフェースを使用してアラート ポリシーの条件を作成するときに、フィルタを作成します。割り当て指標の操作に示す例では、フィルタを使用してグラフのデータを選択します。Monitoring API へのリクエストでフィルタを使用することもできます。

  • MQL を使用してデータを選択して操作する。MQL はテキストベースのクエリ言語です。MQL コードエディタを使用すると、フィルタベースの手法では作成できないクエリを作成できます。比率ベースのアラート ポリシーを作成する場合は、MQL を使用することをおすすめします。詳細については、MQL アラート ポリシーの例をご覧ください。

このページでは、両方の手法について説明します。どちらかの手法でもグラフを作成することもできます。

フィルタ アラート ポリシーの例

このセクションの各サブセクションには、アラート ポリシーの JSON 表現と、 Google Cloud コンソールでポリシーを構成する方法を説明する 2 つの表があります。

  • 最初の表は、モニタリング対象とデータの結合方法を示しています。
  • 2 番目の表は、インシデントが生成されるタイミングを示しています。

以下の例は、フィルタベースのアプローチを対象としています。

これらのポリシーでは比率を計算しません。比率ベースの例については、MQL アラート ポリシーの例をご覧ください。

quota/exceeded エラーのアラート

Google Cloud プロジェクトのいずれかのサービスが割り当て超過エラーを報告している場合に通知するアラート ポリシーを作成できます。このタイプのポリシーは、 Google Cloud コンソールまたは Cloud Monitoring API を使用して作成できます。

Google Cloud コンソールの使用

このサブセクションの以降の内容は、アラート ポリシーの条件ダイアログについて説明します。

次の表の設定を使用して、[新しい条件] ダイアログを完成させます。これらの設定では、 Google Cloud プロジェクトのすべてのサービスの serviceruntime 指標 /quota/exceeded の時系列データのモニタリングと、割り当て上限によるデータのグループ化を指定します。

[新しい条件] ダイアログの
フィールド

リソースと指標 [リソース] メニューで、[Consumer Quota] を選択します。
[指標カテゴリ] メニューで、[割り当て] を選択します。
[指標] メニューで [Quota exceeded error] を選択します。

metric.typeserviceruntime.googleapis.com/quota/exceeded
resource.typeconsumer_quota です)。
フィルタ

フィルタを追加することで、モニタリングするサービスのデータのみがグラフに表示されます。たとえば、Identity and Access Management サービスをモニタリング��るには、以下のフィルタを追加します。service = iam.googleapis.com

フィルタ フィールドが空の場合、利用可能なすべての指標データがグラフに含まれます。

ローリング ウィンドウ 1 m を選択
ローリング ウィンドウ関数 count true を選択

この指標は GAUGE 型で、時系列の各データポイントが瞬間的な測定値であることを意味します。値の型は BOOL です。true の値が、割り当ての超過を示します。

この指標では、count truecount のローリング ウィンドウ関数が同等です。

時系列全体
時系列集計

sum を選択します。

データがグループ化されると、集計フィールドは自動的に sum に設定されます。この設定では、個々の時系列データを組み合わせる方法を定義します。

時系列全体
時系列のグループ化の基準

quota_metric を選択します。

このオプションでは、quota_metric の名前のタイプでデータをグループ化します。

次の設定を使用して、[トリガーの設定] ダイアログを完成させます。これらの設定では、割り当て超過エラーの数が 1 分間に 0 個を超えると、アラート ポリシーがアラートを作成します。ここでは、値 0 が選択されています。これは、割り当て超過エラーは予期せず、割り当てを増やす必要があること、または API リクエストを減らすためにサービスを変更する必要があることを示しているためです。より高いしきい値を使用することもできます。

[トリガーの設定] ダイアログの
フィールド

条件タイプ Threshold
Alert trigger Any time series violates
しきい値の位置 Above threshold
しきい値 0
再テスト ウィンドウ 1 分

Cloud Monitoring API の使用

このアラート ポリシーは、API メソッド alertPolicies.create を使用して作成できます。Cloud Monitoring API は、Google Cloud CLI またはクライアント ライブラリを使用して、直接呼び出すことができます。詳細については、ポリシーの作成をご覧ください。

JSON または YAML のアラート ポリシーの表現の詳細については、サンプル ポリシーをご覧ください。

JSON 形式のこのアラート ポリシーの表現は以下のとおりです。


{
    "combiner": "OR",
    "conditions": [
      {
        "conditionThreshold": {
          "aggregations": [
            {
              "alignmentPeriod": "60s",
              "crossSeriesReducer": "REDUCE_SUM",
              "groupByFields": [
                "metric.label.quota_metric"
              ],
              "perSeriesAligner": "ALIGN_COUNT_TRUE"
            }
          ],
          "comparison": "COMPARISON_GT",
          "duration": "60s",
          "filter": "metric.type=\"serviceruntime.googleapis.com/quota/exceeded\" resource.type=\"consumer_quota\"",
          "trigger": {
            "count": 1
          }
        },
        "displayName": "Quota exceeded error by label.quota_metric SUM",
      }
    ],
    "displayName": "Quota exceeded policy",
  }

絶対値 quota/allocation/usage でのアラート

Google Cloud プロジェクトの特定のサービスの割り当て量の使用率の割り当てがユーザー指定のしきい値を超えた場合に通知するアラート ポリシーを作成できます。このタイプのポリシーは、 Google Cloud コンソールまたは Cloud Monitoring API を使用して作成できます。

Google Cloud コンソールの使用

このサブセクションの以降の内容は、アラート ポリシーの条件ダイアログについて説明します。

次の表の設定を使用して、[新しい条件] ダイアログを完成させます。これらの設定では、 Google Cloud プロジェクトの 1 つのサービスの serviceruntime 指標 /quota/allocation/usage の時系列データのモニタリングと、割り当て上限によるデータのグループ化を指定します。

[新しい条件] ダイアログの
フィールド

リソースと指標 [リソース] メニューで、[Consumer Quota] を選択します。
[指標カテゴリ] メニューで、[割り当て] を選択します。
[指標] メニューで、[Allocation quota usage] を選択します。

metric.typeserviceruntime.googleapis.com/quota/allocation/usage
resource.typeconsumer_quota です)。
フィルタ

フィルタを追加することで、モニタリングするサービスのデータのみがグラフに表示されます。たとえば、Identity and Access Management サービスをモニタリングするには、以下のフィルタを追加します。service = iam.googleapis.com

フィルタ フィールドが空の場合、利用可能なすべての指標データがグラフに含まれます。

ローリング ウィンドウ 1440 m を選択

期間はこの指標のサンプリング間隔に一致します。

ローリング ウィンドウ関数 next older を選択

この GAUGE 指標の最新の測定値を含めるには、ウィンドウ関数を next older に設定します。

時系列全体
時系列集計

sum を選択します。

データがグループ化されると、集計フィールドは自動的に sum に設定されます。この設定では、個々の時系列データを組み合わせる方法を定義します。

時系列全体
時系列のグループ化の基準

quota_metric を選択します。

このオプションでは、quota_metric の名前のタイプでデータをグループ化します。

次の設定を使用して、[トリガーの設定] ダイアログを完成させます。これらの設定により、時系列の値が 1,440 分あたり 2.5 を超える場合に、アラート ポリシーでアラートが作成されます。1,440 分は、ローリング ウィンドウと一致します。2.5 は、テストシステムの通常値よりわずかに高いため、この例では 2.5 が選択されています。モニタリングするサービスに基づいて、指標の値の想定範囲を把握したうえで、しきい値を選択する必要があります。

[トリガーの設定] ダイアログの
フィールド

条件タイプ Threshold
Alert trigger Any time series violates
しきい値の位置 Above threshold
しきい値 2.5
再テスト ウィンドウ 1,440 分

Cloud Monitoring API の使用

このアラート ポリシーは、API メソッド alertPolicies.create を使用して作成できます。Cloud Monitoring API は、Google Cloud CLI またはクライアント ライブラリを使用して、直接呼び出すことができます。詳細については、ポリシーの作成をご覧ください。

JSON または YAML のアラート ポリシーの表現の詳細については、サンプル ポリシーをご覧ください。

JSON 形式のこのアラート ポリシーの表現は以下のとおりです。


{
    "combiner": "OR",
    "conditions": [
      {
        "conditionThreshold": {
          "aggregations": [
            {
              "alignmentPeriod": "86400s",
              "crossSeriesReducer": "REDUCE_SUM",
              "groupByFields": [
                "metric.label.quota_metric"
              ],
              "perSeriesAligner": "ALIGN_NEXT_OLDER"
            }
          ],
          "comparison": "COMPARISON_GT",
          "duration": "86400s",
          "filter": "metric.type=\"serviceruntime.googleapis.com/quota/allocation/usage\" resource.type=\"consumer_quota\" resource.label.\"service\"=\"iam.googleapis.com\"",
          "thresholdValue": 2.5,
          "trigger": {
            "count": 1
          }
        },
        "displayName": "Allocation quota usage for iam.googleapis.com by label.quota_metric SUM",
      }
    ],
    "displayName": "Absolute quota usage policy",
  }

MQL アラート ポリシーの例

MQL は、パイプでリンクされた一連のオペレーションを使用するテキストベースのクエリ言語です。MQL では、Monitoring フィルタで作成する場合よりも強力で柔軟なクエリを構築できます。比率ベースのアラート ポリシーを設定する場合は、MQL を使用することをおすすめします。たとえば MQL では、レートに基づく割り当ての使用量の比率を設定できます。これは、ゲージ指標(上限)とデルタ指標(レート)の比率を計算する必要があります。

MQL ベースのアラート ポリシーを作成するには、 Google Cloud コンソールまたは Monitoring API を使用します。

  • Google Cloud コンソール: アラートの条件を作成するには、MQL Query Editor を使用します。コードエディタを表示するには、[アラート ポリシーを作成] ダイアログのツールバーをクリックして、[ クエリエディタ] をクリックします。このエディタの使用の詳細については、MQL に対してコードエディタを使用するをご覧ください。

  • Monitoring API: alertPolicies.create メソッドを使用して、MonitoringQueryLanguageCondition タイプの条件を指定します。この条件タイプは、MQL クエリをフィールド値として受け取ります。MQL で Monitoring API を使用する方法の詳細については、MQL アラート ポリシーの条件を作成するをご覧ください。

MQL に固有の情報については、Monitoring Query Language の使用をご覧ください。MQL ベースのアラート ポリシーの一般的な情報については、MQL のアラート ポリシーをご覧ください。

頻度に基づく割り当てと割り当て上限の比率をモニタリングするアラート ポリシー

次の MQL クエリパターンは、特定のリソース サービスの 1 分あたりのレートが指定の上限の 80% を超えたときに通知を送信するアラート ポリシーを記述しています。

fetch consumer_quota
| filter resource.service == 'sample.googleapis.com'
| { metric serviceruntime.googleapis.com/quota/rate/net_usage
    | align delta_gauge(1m)
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        sum(value.net_usage)
  ; metric serviceruntime.googleapis.com/quota/limit
    | filter metric.limit_name == 'Limit'
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        sliding(1m), max(val()) }
| ratio
| every 1m
| condition gt(val(), 0.8 '1')

このクエリパターンを使用するには、次の変更を行います。

  • sample.googleapis.com は、モニタリングするサービスに置き換えます。
  • metric.limit_nameLimit は、追跡する上限に置き換えます。上限名の検索については、割り当て指標と上限名の特定をご覧ください。
  • delta_gauge 関数と sliding 関数の 1m を、上限に適したウィンドウに置き換えます。

クエリ結果内のデータポイントの間隔を決める every 1m のオペレーションを変更しないでください。

フィルタを使用してこのクエリを作成することはできません。

ワイルドカードを使用して頻度に基づく割り当ての比率をモニタリングするアラート ポリシー

MQL では、ワイルドカード、正規表現、ブール論理を使用したフィルタリングがサポートされています。たとえば、MQL を使用して、複数の上限を追跡し、しきい値を超えた場合に警告を出すアラート ポリシーを作成できます。

次の MQL クエリパターンは、1 分ごとまたは 1 日あたりのリソース サービスの使用率が 80% を超えたときに通知を送信するアラート ポリシーを記述するものです。

fetch consumer_quota
| filter resource.service =~ '.*'
| { { metric serviceruntime.googleapis.com/quota/rate/net_usage
      | align delta_gauge(1m)
      | group_by [resource.project_id, metric.quota_metric, resource.location],
          sum(value.net_usage)
    ; metric serviceruntime.googleapis.com/quota/limit
      | filter metric.limit_name =~ '.*PerMinute.*'
      | group_by [resource.project_id, metric.quota_metric, resource.location],
          sliding(1m), max(val()) }
    | ratio
  ; { metric serviceruntime.googleapis.com/quota/rate/net_usage
      | align delta_gauge(23h)
      | group_by [resource.project_id, metric.quota_metric, resource.location],
          sum(value.net_usage)
    ; metric serviceruntime.googleapis.com/quota/limit
      | filter metric.limit_name =~ '.*PerDay.*'
      | group_by [resource.project_id, metric.quota_metric, resource.location],
          sliding(23h), max(val()) }
    | ratio }
| union
| every 1m
| condition gt(val(), 0.8 '1')

上記のクエリでは、delta_gauge 整列指定子の引数が 1 日ではなく 23 時間に設定されています。MQL に必要なデータは 23 時間 30 分のみですが、計算の目的で、delta_gauge 整列指定子はアライメント期間に 1 時間を追加します。delta_gauge(1d) を使用している場合、条件には 25 時間分のデータが必要なため、条件を保存できません。この動作は、アライメント期間をパディングしない next_older 整列指定子とは異なります。

このクエリパターンを使用するには、次の変更を行います。

  • resource.service の正規表現を、追跡するサービスの正規表現に置き換えます。
  • 1 つ目の比率では、次のようになります。
    • metric.limit_name.*PerMinute.* を、追跡する最初の上限グループの正規表現に置き換えます。上限名の検索については、割り当て指標と上限名の特定をご覧ください。
    • delta_gauge 関数と sliding 関数の 1m を、上限に適したウィンドウに置き換えます。
  • 2 つ目の比率では、次のようになります。
    • metric.limit_name.*PerDay.* を、追跡する 2 番目の上限グループの正規表現に置き換えます。
    • delta_gauge 関数と sliding 関数の 23h を、上限に適したウィンドウに置き換えます。

クエリ結果内のデータポイントの間隔を決める every 1m のオペレーションを変更しないでください。

フィルタを使用してこのクエリを作成することはできません。

1 つの上限に対する数量に基づく割り当ての使用量についての比率アラート

次の MQL クエリパターンは、特定のリソース サービスの 1 日の数量に基づく割り当て使用量が特定の上限の 80% を超えたときにモニタリングするアラートを記述します。

fetch consumer_quota
| filter resource.service == 'sample.googleapis.com'
| { metric serviceruntime.googleapis.com/quota/allocation/usage
    | align next_older(1d)
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        max(val())
  ; metric serviceruntime.googleapis.com/quota/limit
    | filter metric.limit_name == 'Limit'
    | align next_older(1d)
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        min(val())
  }
| ratio
| every 1m
| condition gt(val(), 0.8 '1')

このクエリパターンを使用するには、次の変更を行います。

  • sample.googleapis.com は、モニタリングするサービスに置き換えます。
  • metric.limit_nameLimit は、追跡する上限に置き換えます。上限名の検索については、割り当て指標と上限名の特定をご覧ください。

クエリ結果内のデータポイントの間隔を決める every 1m のオペレーションを変更しないでください。

例: 任意のリージョンでの CPU 使用率 75%

次のクエリで、Compute Engine VM インスタンスの CPU 使用量が、任意のリージョンで上限の 75% を超えたときにトリガーするアラート ポリシーを作成します。

fetch consumer_quota
| filter resource.service == 'compute.googleapis.com'
| { metric serviceruntime.googleapis.com/quota/allocation/usage
    | align next_older(1d)
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        max(val())
  ; metric serviceruntime.googleapis.com/quota/limit
    | filter metric.limit_name == 'CPUS-per-project-region'
    | align next_older(1d)
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        min(val())
  }
| ratio
| every 1m
| condition gt(val(), 0.75 '1')

このコンシューマー割り当てポリシーでは、Compute Engine API の「CPU」割り当てで CPUS-per-project-region の上限名を使用します。上限名の検索については、割り当て指標と上限名の特定をご覧ください。

いずれかのサービスの割り当ての比率をモニタリングするアラート ポリシー

MQL では、ワイルドカード、正規表現、ブール論理を使用したフィルタリングがサポートされています。たとえば、MQL を使用して、複数の上限やサービスを追跡するアラートを作成し、しきい値を超えると警告が出るようにすることができます。

次の MQL クエリは、いずれかのリソース サービスの 1 日あたりの数量に基づく割り当て使用量が、割り当て上限の 80% を超えたときにモニタリングするアラートを記述します。

fetch consumer_quota
| filter resource.service =~ '.*'
| { metric serviceruntime.googleapis.com/quota/allocation/usage
    | align next_older(1d)
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        max(val())
  ; metric serviceruntime.googleapis.com/quota/limit
    | align next_older(1d)
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        min(val())
  }
| ratio
| every 1m
| condition gt(val(), 0.8 '1')

このクエリをそのまま使用することも、resource.service の正規表現を追跡するサービスの正規表現に置き換えることもできます。特定のサービスでフィルタリングし、上限フィルタでワイルドカードを使用することもできます。

クエリ結果内のデータポイントの間隔を決める every 1m のオペレーションを変更しないでください。

例: 特定のゾーンの CPU 使用率が 50% を超えた

次のクエリで、Compute Engine VM インスタンスの CPU 使用率が任意の us-central1 ゾーンの上限の 50% を超えるとトリガーされるアラート ポリシーを作成します。このクエリは、limit データを上限名とリソース ロケーションでフィルタリングします。

fetch consumer_quota
| filter resource.service == 'compute.googleapis.com'
| { metric serviceruntime.googleapis.com/quota/allocation/usage
    | align next_older(1d)
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        max(val())
  ; metric serviceruntime.googleapis.com/quota/limit
    | filter metric.limit_name == 'CPUS-per-project-zone' &&
              resource.location =~ 'us-central1-.*'
    | align next_older(1d)
    | group_by [resource.project_id, metric.quota_metric, resource.location],
        min(val())
  }
| ratio
| every 1m
| condition gt(val(), 0.50 '1')

このコンシューマー割り当てポリシーでは、Compute Engine API の「CPU」割り当てで CPUS-per-project-zone の上限名を使用します。上限名の検索については、割り当て指標と上限名の特定をご覧ください。

リソース固有の割り当てを使用する比率アラート

MQL を使用すると、リソース固有の割り当て関連指標の比率を設定できます。この場合、サービス固有のモニタリング対象リソースを指定して、リソース固有の割り当て関連指標のペアに占める比率を計算します。

次のクエリは、割り当ての使用量が上限の 80% を超えたことをモニタリングするアラートを記述します。

fetch sample.googleapis.com/SampleResource
  | { metric sample.googleapis.com/quota/samplemetric/usage
    | align next_older(1d)
    | group_by [resource.label_1, ... , resource.label_n,
                metric.label_1, ... , metric.label_n],
        max(val())
  ; metric sample.googleapis.com/quota/samplemetric/limit
    | align next_older(1d)
    | group_by [resource.label_1, ... , resource.label_n,
                metric.label_1, ... , metric.label_n],
        min(val())
  }
| ratio
| every 1m
| condition gt(val(), 0.8 '1')

このクエリパターンを使用するには、次の変更を行います。

  • sample.googleapis.com は、モニタリングするサービスに置き換えます。
  • sampleResource は、関連するモニタリング対象リソースに置き換えます。
  • samplemetric は、一連の指標タイプの文字列に置き換えます。
  • group_by オペレーションで、リソースラベルと指標ラベルをそれぞれ一覧表示します。

例: 任意のリージョンでの CPU 使用率 75%

たとえば、次の MQL クエリは、任意のネットワーク ID の Compute Engine の instances_per_vpc_network 割り当てが 80% を超えたときにモニタリングするアラートを設定します。

fetch compute.googleapis.com/VpcNetwork
| { metric compute.googleapis.com/quota/instances_per_vpc_network/usage
    | align next_older(1d)
    | group_by [resource.resource_container, metric.limit_name,
                resource.location, resource.network_id],
        max(val())
  ; metric compute.googleapis.com/quota/instances_per_vpc_network/limit
    | align next_older(1d)
    | group_by [resource.resource_container, metric.limit_name,
                resource.location, resource.network_id],
        min(val())
  }
| ratio
| every 1m
| condition gt(val(), 0.80 '1')

このクエリでは consumer_quota ではなくリソースタイプ compute.googleapis.com/VpcNetwork が使用されており、2 つの compute.googleapis.com/quota/instances_per_vpc_network 指標(usagelimit)の比率が取られます。

グラフの例

グラフには、時系列データが表示されます。Metrics Explorer を使用して、グラフを作成できます。Metrics Explorer では、不要になったグラフの破棄や、ダッシュボードへの保存ができます。ダッシュボード ビューでは、グラフをダッシュボードに追加できます。

割り当てデータを表示するグラフのみを構成する場合は、「新しい条件」表の設定を使用できます。アラートの条件では、グラフ作成ツールと異なる表記を使用します。グラフ作成ツールのカスタム ダ���シュボード���は、Metrics Explorer のグラフや構成グラフが含まれています。
[新しい条件] ダイアログの
フィールド名
グラフ
ローリング ウィンドウ関数

選択した指標と集計設定に基づいて最適に構成されます。

アライメント関数を指定するには、次の操作を行います。

  1. [集計] 要素で最初のメニューを開いて、[整列指定子を構成] を選択します。[アライメント関数] と [グループ化] 要素が追加されます。
  2. [アライメント関数] 要素を開いて、選択を行います。

ローリング ウィンドウ 最小間隔
(アクセスするには、[ クエリ要素を追加] をクリックします)
時系列のグループ化の基準
(「時系列全体」セクション)
[集計] 要素の 2 番目のメニュー
時系列集計
(「時系列全体」セクション)
[集計] 要素の最初のメニュー

quota/rate/net_usage の時系列

Google Cloud プロジェクトのすべてのサービスで、データが割り当て指標の名前でグループ化され、使用率が表示されるように、serviceruntime 指標 quota/rate/net_usage の時系列データを表示するには、次の設定を使用します。

[新しい条件] ダイアログの
フィールド

リソースと指標 [リソース] メニューで、[Consumer Quota] を選択します。
[指標カテゴリ] メニューで、[割り当て] を選択します。
[指標] メニューで [Rate quota usage] を選択します。

metric.typeserviceruntime.googleapis.com/quota/rate/net_usage
resource.typeconsumer_quota です)。
フィルタ

フィルタを追加することで、モニタリングするサービスのデータのみがグラフに表示されます。たとえば、Identity and Access Management サービスをモニタリングするには、以下のフィルタを追加します。service = iam.googleapis.com

フィルタ フィールドが空の場合、利用可能なすべての指標データがグラフに含まれます。

ローリング ウィンドウ 1 m を選択

1 分間の期間が、この指標のサンプリング間隔と一致します。

ローリング ウィンドウ関数 rate を選択

整列指定子を rate の値に設定することにより、この DELTA 指標の時系列に格納された値は、レートデータを格納する新しい時系列に変換されます。グラフの Y 軸には、1 秒あたりの割り当ての単位が表示されます。

時系列全体
時系列集計

sum を選択します。

データがグループ化されると、集計フィールドは自動的に sum に設定されます。この設定では、個々の時系列データを組み合わせる方法を定義します。

時系列全体
時系列のグループ化の基準

quota_metric を選択します。

このオプションでは、quota_metric の名前のタイプでデータをグループ化します。

quota/instances_per_vpc_network/limit の時系列

Google Cloud プロジェクトのすべてのネットワークについて compute.googleapis.com 指標 quota/instances_per_vpc_network/limit の時系列データを表示するには、次の設定を使用します。

[新しい条件] ダイアログの
フィールド

リソースと指標 [リソースの種類] メニューで、[VPC ネットワーク] を選択します。
[指標カテゴリ] メニューで、[割り当て] を選択します。
[指標] メニューで [Instances per VPC Network quota limit] を選択します。

metric.typecompute.googleapis.com/quota/instances_per_vpc_network/limit
resource.typecompute.googleapis.com/VpcNetwork です)。
フィルタ 空白のまま
ローリング ウィンドウ 1 m を選択

期間はこの指標のサンプリング間隔に一致します。

ローリング ウィンドウ関数 mean を選択
時系列全体
時系列集計
none のまま
時系列全体
時系列のグループ化の基準
空白のまま

quota/instances_per_vpc_network/usage の時系列

Google Cloud プロジェクトのネットワークのうちの 1 つについて、compute.googleapis.com 指標 quota/instances_per_vpc_network/usage の時系列データを表示するには、次の設定を使用します。

[新しい条件] ダイアログの
フィールド

リソースと指標 [リソースの種類] メニューで、[VPC ネットワーク] を選択します。
[指標カテゴリ] メニューで、[割り当て] を選択します。
[指標] メニューで [Instances per VPC Network quota usage] を選択します。

metric.typecompute.googleapis.com/quota/instances_per_vpc_network/usage
resource.typecompute.googleapis.com/VpcNetwork です)。
指標 [指標] メニューで [compute.googleapis.com/quota/instances_per_vpc_network/usage] を選択します。
フィルタ

すべてのデータのサブセットのみがグラフに表示されるよう、フィルタを追加します。たとえば、特定のネットワークの使用状況を表示するには、次のフィルタを追加します。 network_id = identifier

フィルタ フィールドが空の場合、利用可能なすべての指標データがグラフに含まれます。

ローリング ウィンドウ 1 m を選択

期間はこの指標のサンプリング間隔に一致します。

ローリング ウィンドウ関数 mean を選択
時系列全体
時系列集計
none のまま
時系列全体
時系列のグループ化の基準
空白のまま

MQL グラフ

MQL コードエディタを使用して、MQL クエリを使用してグラフを作成できます。たとえば、MQL アラート ポリシーの例に表示されているクエリをコードエディタに入力できます。各クエリの最後のオペレーション condition は省略できます。これは、アラート ポリシーの条件を作成する場合を除き適用されます。グラフでは、condition オペレーションは何も行いません。

詳細については、MQL に対してコードエディタを使用するMQL の例をご覧ください。