割り当て指標の使用

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

始める前に

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

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

割り当て指標に関する作業

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

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

    このページに挙げた例の多くはユーザー割り当てです。

  2. リソース固有の割り当て 一部のサービスは、割り当てにリソース固有の指標を持つモニタリング対象リソースを提供します。これらの指標タイプは、次のパターンに従って 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 つあります。

割り当て指標と上限名の特定

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

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

  • 割り当て指標: 割り当て指標は、割り当てのタイプを示す識別子です。指標リストで説明されている指標タイプの 1 つではありません。たとえば、ユーザー割り当てデータはすべて、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 ラベルが含まれます。

特定の割り当て指標と上限名を特定するには、次の操作を行います。

  1. Google Cloud Console で、管理者の [割り当て] ページに移動します。

    Quotas に移動

  2. 目的の割り当てを見つけて、[すべての割り当て量] をクリックします。

  3. サービスが割り当て指標をサポートしている場合は、[割り当て指標] フィールドと [上限名] フィールドが表示されます。たとえば、Compute Engine API サブネットワークの割り当ての以下のスクリーンショットは、割り当て指標が compute.googleapis.com/subnetworks で、上限名が SUBNETWORKS-per-project であることを示しています。

    割り当て指標の詳細ページの例。

詳細情報に割り当て指標や上限名がリストされていない場合、サービスは割り当て指標をサポートしません。

詳細情報にモニタリング対象リソースが含まれていない場合、モニタリング対象リソースは、consumer_quota となります。それ以外の場合、詳細ページに表示されるこの割り当ては、名前付きのモニタリング対象リソースのリソース固有の割り当てです。上のスクリーンショットではモニタリング対象リソースが明示的にリストされていないため、割り当てとして consumer_quota モニタリング対象リソースを使用します。

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

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

  1. Google Cloud Console で [Cloud Monitoring] を選択し、Metrics Explorer を選択します。

  2. [構成] タブを選択します。

  3. リソースタイプを [Consumer Quota] に設定し、指標タイプを [Allocation quota usage] に設定して、Metrics Explorer で割り当て使用量が表示されるように構成します。

    ユーザー割り当てを選択。

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

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

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

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

  4. グラフを 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 サービスをフィルタリングすると、データのないグラフが作成されます。

  5. 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"
    
  6. 前のグラフでは、リージョン us-centra1us-east1 の時系列と、ゾーン us-central1-a を含む複数のゾーンの時系列が表示されています。

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

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

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

Cloud Monitoring のアラート ポリシー

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

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

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

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

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

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

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

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

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

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

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

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

quota/exceeded エラーのアラート

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

Google Cloud Console の使用

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

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

[Target] ペイン
フィールド

リソースの種類 consumer_quota」と入力します。
指標 serviceruntime.googleapis.com/quota/exceeded を選択
フィルタ

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

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

Group By

[quota_metric] を選択します。

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

Aggregator

[sum] を選択します。

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

期間 1 m を選択する
Advanced Aggregation Aligner: count true

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

この指標では、count truecount の整列指定子の設定が等価です。

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

[Configuration] ペイン
フィールド

Condition triggers if Any time series violates
Condition is above
Threshold 0
For 1 m

Cloud Monitoring API の使用

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

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 Console または Cloud Monitoring API を使用します。

Google Cloud Console の使用

このサブセクションの以降の内容は、アラート ポリシーの [Conditions] ダイアログです。

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

[Target] ペイン
フィールド

リソースの種類 consumer_quota」と入力します。
指標 serviceruntime.googleapis.com/quota/allocation/usage を選択
フィルタ

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

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

Group By

[quota_metric] を選択します。

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

Aggregator

[sum] を選択します。

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

期間 1440 m を選択する

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

Advanced Aggregation Aligner: next older

この GAUGE 指標の測定値を含めるには、整列指定子を next older に設定します。

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

[Configuration] ペイン
フィールド

Condition triggers if Any time series violates
Condition is above
Threshold 2.5
For 1440 m

Cloud Monitoring API の使用

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

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 ベースのアラート ポリシーを作成するには、Cloud Console または Monitoring API を使用します。

  • Cloud Console: アラート条件を作成するときに、MQL クエリエディタを使用します。クエリエディタを表示するには、条件パネルの [指標] タブで [ クエリエディタ] をクリックします。このエディタの使用の詳細については、クエリエディタの使用をご覧ください。

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

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

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

次の 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 == 'myApiLimitPerDay'
        | 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_namemyApiLimitPerDay は、追跡する上限に置き換えます。上限名の検索については、割り当て指標と上限名の特定をご覧ください。
  • 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 == 'CPUs-per-project'
        | 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_nameCPUs-per-project は、追跡する上限に置き換えます。上限名の検索については、割り当て指標と上限名の特定をご覧ください。

条件の確認頻度を決める 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 では、不要になったチャートの破棄や、ダッシュボードへの保存ができます。ダッシュボード ビューでは、グラフをダッシュボードに追加できます。

グラフを作成するには、表示するデータとその表示方法を指定します。このセクションの残りの部分では、ユーザー割り当てとリソース固有の割り当ての両方のグラフを作成するために使用できる設定を紹介します。アラート ポリシーの [Target] ダイアログの設定を使用してグラフを作成することもできます。

quota/allocation/usage の時間間隔あたりの最大使用量

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

[Target] ペイン
フィールド

リソースの種類 consumer_quota」と入力します。
指標 serviceruntime.googleapis.com/quota/allocation/usage を選択
フィルタ

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

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

Group By

[quota_metric] を選択します。

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

Aggregator

[sum] を選択します。

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

期間 1500 m を選択する

期間(25 時間)は、この指標のサンプリング間隔よりわずかに長くなります。

Advanced Aggregation Aligner: max
Secondary aggregator: sum

整列指定子は、アライメント期間中に測定された指標の最大値を表示するように設定されています。セカンダリ アグリゲータは、さまざまなサービスの時系列を 1 つの時系列に結合します。

quota/rate/net_usage の時系列

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

[Target] ペイン
フィールド

リソースの種類 consumer_quota」と入力します。
指標 serviceruntime.googleapis.com/quota/rate/net_usage を選択
フィルタ

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

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

Group By

[quota_metric] を選択します。

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

Aggregator

[sum] を選択します。

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

期間 1 m を選択する

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

Advanced Aggregation Aligner: rate

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

quota/limit の時系列

Google Cloud プロジェクトのすべてのサービスで、25 時間以上のデータが集計されるように、serviceruntime 指標 quota/limit の時系列データを表示するには、次の設定を使用します。

[Target] ペイン
フィールド

リソースの種類 consumer_quota」と入力します。
指標 serviceruntime.googleapis.com/quota/limit を選択
フィルタ

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

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

Group By 空白のままにする。
Aggregator none
期間 1500 m を選択する
Advanced Aggregation Aligner: next older

この GAUGE 指標の測定値を表示するには、整列指定子を next older に設定します。アライメント期間(25 時間)は、この指標のサンプリング間隔よりわずかに長くなります。

quota/instances_per_vpc_network/limit の時系列

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

[ターゲット] ペイン
フィールド

リソースの種類 compute.googleapis.com/VpcNetwork」と入力します。
指標 compute.googleapis.com/quota/instances_per_vpc_network/limit を選択
フィルタ 空白のままにする。
Group By 空白のままにする。
Aggregator none のままにします。
期間 1 m を選択する

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

Advanced Aggregation 無視する

quota/instances_per_vpc_network/usage の時系列

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

[ターゲット] ペイン
フィールド

リソースの種類 compute.googleapis.com/VpcNetwork」と入力します。
指標 compute.googleapis.com/quota/instances_per_vpc_network/usage を選択
フィルタ

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

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

Group By 空白のままにする。
Aggregator none のままにします。
期間 1 m を選択する
Advanced Aggregation 無視する

MQL グラフ

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

詳細については、クエリエディタの使用MQL の例をご覧ください。