時系列の構造

このページでは、指標、時系列、リソースおよび指標モデルのコンポーネントで取り上げるディスカッションと例について詳しく説明します。このページを最大限に活用するには、まず最初にこれらのページをご覧ください。

このページは、時系列と Cloud Monitoring 指標モデルの実装について詳しく知りたい方、特に Monitoring API を使用している方を対象としています。これには、カスタムの(ユーザー定義)指標のユーザーが含まれます。

  • このページでは、一般的な指標モデルを Cloud Monitoring API にマッピングしているので、Monitoring API を直接使用しているユーザーに役立ちます。主なやり取りが Google Cloud Console であるユーザーは、このレベルの詳細を知る必要はないと考えられます。

  • また、OpenCensus などサードパーティとの統合を使用する場合にも便利です。外部ソースのデータは統合を介して Cloud Monitoring に到達し、Cloud Monitoring 指標モデルにマッピングされて、他の指標データと同様に処理されます。

独自の指標の収集について詳しくは、カスタム指標の使用をご覧ください。

指標モデルの確認

時系列の構造を理解するための前提条件は、Cloud Monitoring で使用される指標モデルに精通していることです。このモデルについては、指標、時系列、リソースで説明されています。このセクションでは簡単に説明します。

一般に、モニタリング データは時系列で記録されます。個々の時系列には、この検討に関連する 3 つの情報が含まれます。

  • タイムスタンプ付きのデータポイントのセット。
  • データポイントの解釈方法を示す指標タイプへの参照。
  • データの取得元であるモニタリング対象リソースへの参照。

    時系列の構造

各時系列には、単一の物理ソースまたは論理ソースからの測定値が保持されます。環境に数百のリソースがある場合、それぞれが 1 つ以上の時系列に貢献します。実際、指標タイプとモニタリング対象リソースタイプにラベルがある場合、ラベル値の組み合わせごとに 1 つの時系列が作成されます。詳細については、カーディナリティをご覧ください。

時系列のサンプル

以下は、単一の時系列の完全なインスタンスです(タイプ TimeSeries)。

    {
      "metric": {
        "labels": {
          "log": "kubelet",
          "severity": "DEFAULT"
        },
        "type": "logging.googleapis.com/log_entry_count"
      },
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "5106847938295940291",
          "zone": "us-central1-a",
          "project_id": "a-gcp-project"
        }
      },
      "metricKind": "DELTA",
      "valueType": "INT64",
      "points": [
        {
          "interval": {
            "startTime": "2019-12-20T20:25:38Z",
            "endTime": "2019-12-20T20:26:38Z"
          },
          "value": {
            "int64Value": "20"
          }
        }
      ]
    }

ほとんどの時系列には、さらに多くのデータポイントが含まれています。これは 1 分間隔に対応しています。すべての時系列の構造は同じですが、次のフィールドがあります。

  • metric フィールドには次の情報が記録されます。

    • この特定の時系列の指標ラベル値。1 つのラベル値の組み合わせを表します。
    • データが関連付けられている指標タイプ。指標タイプは、使用可能なラベルを指定し、データポイントによって表されるものを記述します。

    このフィールドの情報の詳細については、指標をご覧ください。

  • resource フィールドには次の情報が記録されます。

    • この特定の時系列のリソースラベルの値。ラベル値の 1 つの組み合わせを表します。
    • データが収集された特定のモニタリング対象リソース。

    このフィールドの詳細については、モニタリング対象リソースで詳しく説明しています。

  • metricKind フィールドと valueType フィールドは、値の解釈方法を示しています。詳しくは、指標の種類とタイプをご覧ください。

  • points フィールドは、タイムスタンプ付きの値の配列です。指標タイプは、値が何を表しているかを示しています。サンプル時系列には、単一のデータポイントを持つ配列があります。ほとんどの時系列では、配列に含まれる値が多くなります。

時系列データを取得する実際の例については、時系列: モニタリング対象リソースからのデータをご覧ください。

このページの残りの部分では、metric フィールドと resource フィールドの情報について詳しく説明します。

モニタリング対象リソース

Cloud Monitoring はモニタリング対象リソースからデータを収集し、時系列で記録します。作成された各時系列には、データが収集されたモニタリング対象リソースの説明が含まれます。

モニタリング対象リソース オブジェクト

各時系列は、モニタリング対象リソース オブジェクト(タイプは MonitoredResource)としてデータポイントのソースを記録します。このオブジェクトは、時系列に埋め込まれ、モニタリング対象リソースタイプの、Monitoringに知られた特定のインスタンスを識別します。このオブジェクトは、物理または論理エンティティを指します。

例として、サンプル時系列から抽出された特定の Compute Engine インスタンスを記述するモニタリング対象リソース オブジェクトを次に示します。

      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "5106847938295940291",
          "zone": "us-central1-a",
          "project_id": "a-gcp-project"
        }
      }

モニタリング対象リソースのインスタンスは、タイプ gce_instance です。これは、プロジェクト a-gcp-project に特定の instance_id 値(5106847938295940291)です。インスタンスは米国内に保存されます。別の時系列がこのモニタリング対象リソースの異なるインスタンスから発生する場合があります。ラベル値の組み合わせごとに、データの収集元の一意のリソースを識別します。

それぞれ異なるラベルのセットは、さまざまなリソースに適しています。リソースのラベルのセットは、そのタイプのモニタリング対象リソース記述子によって決まります。

monitoredResourceDescriptors

モニタリング対象リソースタイプに関する情報は、モニタリング対象リソース記述子(タイプは MonitoredResourceDescriptor)と呼ばれるデータ構造に保持されます。

モニタリング対象リソース記述子は、レコード構造のスキーマや仕様に似ています。モニタリング対象リソースの特定のインスタンスに関するデータは含まれません。特定のタイプのモニタリング対象リソースを確認する方法について説明します。たとえば、gce_instance リソースのモニタリング対象リソース記述子は次のようになります。

{
  "type": "gce_instance",
  "displayName": "GCE VM Instance",
  "description": "A virtual machine instance hosted in Google Compute Engine (GCE).",
  "name": "projects/[PROJECT_ID]/monitoredResourceDescriptors/gce_instance"
  "labels": [
    {
      "key": "project_id",
      "description": "The identifier of the GCP project associated with this resource, such as \"my-project\"."
    },
    {
      "key": "instance_id",
      "description": "The numeric VM instance identifier assigned by Compute Engine."
    },
    {
      "key": "zone",
      "description": "The Compute Engine zone in which the VM is running."
    }
  ],
}

このモニタリング対象リソース記述子を、モニタリング対象リソース オブジェクトに表示される gce_instance リソースの特定のインスタンスと比較します。この記述子は、特定のモニタリング対象リソースを記述しません。代わりに、記述子はラベルを指定し、そのラベル値の各組み合わせにより特定のモニタリング対象リソースが識別されます。

Cloud Monitoring API を使用して、Google Cloud プロジェクトのモニタリング対象リソース記述子を取得できます。例については、monitoredResourceDescriptors.list メソッドと monitoredResourceDescriptors.get メソッドのリファレンス ページをご覧ください。

実際の例: Google Cloud プロジェクトがある場合は、Monitoring API の monitoredResourceDescriptors.get メソッドのリファレンス ページにある API Explorer ウィジェットを使用してこの記述子を取得できます。

この例を実行するときは、名前フィールドの [PROJECT_ID] をプロジェクト ID に変更する必要があります。次に、ウィジェット パネルの下部にある [実行]ボタンをクリックします。リクエストにより、上記の記述子が返されます。

試してみる

Monitoring API メソッドの使用例については、指標とリソースタイプの閲覧をご覧ください。

最新の集計では、Cloud Monitoring は約 100 種類を超えるリソースタイプをモニタリングできます。詳細については、リソースの一覧をご覧ください。このリストは、利用可能なモニタリング対象リソース記述子のセットから直接派生します。

指標

Cloud Monitoring で作成された各時系列は、データポイントと、組織に関する情報やこれらのデータポイントの意味を記録します。

指標オブジェクト

各時系列には、指標オブジェクトに記録されるデータの説明への参照が含まれています。

指標オブジェクト(タイプ Metric)は、この時系列のデータポイントの指標タイプと指標タイプのラベルを示す情報のコレクションです。たとえば、サンプル時系列の時系列から抽出された指標オブジェクトは次のとおりです。

    {
      "metric": {
        "labels": {
          "log": "kubelet",
          "severity": "DEFAULT"
        },
        "type": "logging.googleapis.com/log_entry_count"
      }

このオブジェクトは、時系列に logging.googleapis.com/log_entry_count 指標タイプの測定値が含まれていることを示しています。ラベル値は、この特定の時系列が、kubelet というログファイル内の重大度が DEFAULT のログエントリのみをカウントすることを示しています。

ラベル値の組み合わせごとに 1 つの時系列があるため、同じログファイルへの INFO エントリは異なる時系列に表示されます。

指標オブジェクトに収集されたラベルのセットは、その指標タイプの記述子で指定されます。

指標記述子

指標タイプに関する情報は、指標記述子(タイプは MetricDescriptor)と呼ばれるデータ構造に保持されます。

指標記述子はレコード構造のスキーマまたは仕様です。特定の指標に関するデータは含まれません。特定の指標タイプに関連付けられたデータを解釈する方法を示します。

指標タイプ logging.googleapis.com/log_entry_count の指標記述子は次のとおりです。

{
  "type": "logging.googleapis.com/log_entry_count",
  "name": "projects/a-gcp-project/metricDescriptors/logging.googleapis.com/log_entry_count",
  "labels": [
    {
      "key": "log",
      "description": "Name of the log."
    },
    {
      "key": "severity",
      "description": "Severity of the log entry."
    }
  ],
  "metricKind": "DELTA",
  "valueType": "INT64",
  "unit": "1",
  "description": "Number of log entries that contributed to user-defined metrics.",
  "displayName": "Log entries",
  "metadata": {
    "launchStage": "GA",
    "samplePeriod": "60s"
  },
  "launchStage": "GA"
}

この指標記述子を、指標オブジェクトに表示されている指標オブジェクトと比較します。この記述子は、ラベル値の意味と、データポイントの値を解釈する方法について説明します。

Cloud Monitoring API を使用して、指標記述子を取得できます。例については、metricDescriptors.list メソッドと metricDescriptors.get メソッドのリファレンス ページをご覧ください。

実際の例: Google Cloud プロジェクトがある場合は、Monitoring API の metricDescriptors.get メソッドのリファレンス ページにある API Explorer ウィジェットを使用してこの記述子を取得できます。

この例を実行するときは、名前フィールドの [PROJECT_ID] をプロジェクト ID に変更する必要があります。次に、ウィジェット パネルの下部にある [実行]ボタンをクリックします。リクエストにより、上記の記述子が返されます。

試してみる

Monitoring API メソッドのその他の使用例については、指標とリソースタイプの閲覧をご覧ください。

指標記述子のほとんどのフィールドは説明がなくてもわかります。さらに詳細な説明が必要な可能性のある 2 つの指標は、指標の種類と値のタイプです。これらについては、指標の種類とタイプで詳しく説明します。

最新の集計では、Cloud Monitoring には約 1,500 個の組み込み指標タイプがあります。詳しくは、指標の一覧をご覧ください。カスタム指標をキャプチャするために独自の指標記述子を作成することもできます。詳しくは、カスタム指標の使用をご覧ください。