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

このドキュメントでは、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 つの指標タイプがあります。

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

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

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

  • 割り当て指標: 割り当て指標は、割り当てのタイプを示す識別子です。指標リストで説明されている指標タイプの 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 ラベルが含まれます。

すべての 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 Console で [Cloud Monitoring] を選択し、Metrics Explorer を選択します。

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

  3. ツールバーで [1M] を選択して期間を 1 か月に設定します。

  4. [折れ線グラフ] メニューを展開して、[積み上げ棒グラフ] を選択します。

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

    1. [指標を選択] をクリックし、 [フィルタバー] に「allocation」と入力します。
    2. リソースに [Consumer 割り当て] を選択します。
    3. 指標カテゴリの [割り当て] を選択します。
    4. 指標の [Allocation quota usage] を選択し、[Apply] をクリックします。

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

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

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

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

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

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

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

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

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

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

Cloud Monitoring のアラート ポリシー

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

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

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

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

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

  • 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] ダイアログについて説明します。

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

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

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

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
アラート トリガー Any time series violates
しきい値の位置 Above threshold
しきい値 0
再テスト ウィンドウ 1 m

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

Google Cloud Console の使用

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

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

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

リソースと指標 [Resources] メニューで、[Consumer Quota] を選択します。
[指標カテゴリー] メニューで、[割り当て] を選択します。
[Metrics] メニューで、[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
アラート トリガー Any time series violates
しきい値の位置 Above threshold
しきい値 2.5
再テスト ウィンドウ 1440 m

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(23hr)
      | 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(23hr), max(val()) }
    | ratio }
| union
| every 1m
| condition gt(val(), 0.8 '1')

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

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

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

クエリ結果内のデータポイント間の距離を決定する 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 の時系列データを表示するには、次の設定を使用します。

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

リソースと指標 [Resources] メニューで、[Consumer Quota] を選択します。
[指標カテゴリー] メニューで、[割り当て] を選択します。
[指標] メニューで [レートに基づく割り当てを使用] を選択します。

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 ネットワーク] を選択します。
[指標カテゴリ] メニューで、[割り当て] を選択します。
[Metric] メニューで [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 ネットワーク] を選択します。
[指標カテゴリ] メニューで、[割り当て] を選択します。
[Metric] メニューで [Instances per VPC Network quota usage] を選択します。

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

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

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

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

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

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

MQL グラフ

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

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