時間序列的結構

本頁深入探討「指標、時間序列和資源」和「指標模型的元件」中所提及的討論和範例。如要充分利用本頁面,請先閱讀這些頁面。

本頁面適用於想進一步瞭解時間序列和 Cloud Monitoring 指標模型導入方式的讀者,特別是使用 Monitoring API 的讀者。包括使用自訂 (使用者定義) 指標的使用者。

  • 本頁面會將一般指標模型對應至 Cloud Monitoring API,因此對於直接使用 Monitoring API 的使用者來說非常實用。主要與 Google Cloud 主控台互動的使用者可能不需要這麼詳細的資訊。

  • 對於使用 OpenTelemetry 等第三方整合服務的使用者來說,這也是很實用的功能。當外部來源的資料透過整合功能傳送至 Cloud Monitoring 時,系統會將資料對應至 Cloud Monitoring 指標模型,並視為其他指標資料。

如要進一步瞭解如何收集自己的指標,請參閱「使用者定義指標總覽」。

查看指標模型

如要瞭解時間序列的結構,您必須熟悉 Cloud Monitoring 使用的指標模型。如要瞭解這項模型,請參閱「指標、時間序列和資源」一文。本節提供簡要的回顧。

一般來說,監控資料會以時間序列的形式記錄。每個個別時間序列都包含與這項討論相關的三項資訊:

  • 一組帶有時間戳記的資料點。
  • 指標類型的參照,可用於說明如何解讀資料點。
  • 資料來源的受監控資源參照。

    時間序列的結構。

每個時間序列都會保存來自單一實體或邏輯來源的測量資料。如果環境中有數百個資源,每個資源都會提供至少一個時間序列。事實上,如果指標類型和受控資源類型含有標籤,每個標籤值組合就會產生一個時間序列。詳情請參閱「基數」。

時間序列範例

時間序列會以 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"
          }
        }
      ]
    }

大多數時間序列包含更多資料點,這份資料涵蓋一分鐘的間隔。所有時間序列的結構都相同,包含以下欄位:

  • metric 欄位記錄

    • 這個特定時間序列的指標標籤值,代表標籤值的組合。
    • 資料相關聯的指標類型。指標類型會指定可用的標籤,並說明資料點代表的內容。

    如要進一步瞭解這個欄位的資訊,請參閱「指標」一文。

  • resource 欄位記錄:

    • 這個特定時間序列的資源標籤值,代表標籤值的組合。
    • 收集資料的特定受監控資源。

    如需進一步瞭解這個欄位的資訊,請參閱「受監控資源物件」。

  • metricKindvalueType 欄位會說明如何解讀這些值。詳情請參閱「指標種類與類型」。

  • points 欄位是帶有時間戳記的值陣列。指標類型會說明值代表的內容。這個範例時間序列的陣列包含單一資料點;在大多數時間序列中,陣列會包含更多值。

如需擷取時間序列資料的實際範例,請參閱「時間序列:受控資源的資料」。

本頁其餘部分會進一步探討 metricresource 欄位中的資訊。

受控資源

Cloud Monitoring 會從受監控的資源收集資料,並記錄在時間序列中。每個建立的時間序列都會包含所收集資料的受監控資源說明。

受控資源物件

受控資源由 MonitoredResource 物件的例項表示。受監控的資源會說明時間序列中值的來源。MonitoredResource 物件會嵌入時間序列,並識別監控功能所知的受控資源類型特定例項:它會指向實體或邏輯實體。

舉例來說,以下是從示例時序資料中擷取的監控資源物件,用來描述特定的 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)。執行個體位於美國。其他時間序列可能來自此受控資源的不同例項。每個標籤值組合都會標示出收集資料的專屬資源。

不同的資源需要不同的標籤組合。資源的標籤集是由該類型的受控資源描述元決定。

受控資源描述元

受控資源類型的相關資訊會保存在名為「受控資源描述元」的資料結構中。如需瞭解這個資料結構的定義,請參閱 MonitoredResourceDescriptor

監控資源描述元就像是記錄結構體的結構定義或規格。這項資源不包含受控資源的特定例項資料,而是說明如何描述特定類型的受控資源。例如,以下是 gce_instance 資源的受控資源描述元:

{
  "type": "gce_instance",
  "displayName": "VM Instance",
  "description": "A virtual machine instance hosted in Compute Engine.",
  "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.listmonitoredResourceDescriptors.get 方法的參考頁面。

實際範例:如果您有 Google Cloud 專案,可以使用 API Explorer 小工具擷取這個描述符,如下所示:

  1. 開啟 monitoredResourceDescriptors.list 參考頁面。

  2. 在標示為「Try this method」的窗格中,輸入以下內容:

    • nameprojects/PROJECT_ID/monitoredResourceDescriptors/gce_instance

      PROJECT_ID 替換為您的 Google Cloud 專案 ID。

  3. 按一下 [Execute] (執行)

要求會傳回上述描述符。

如需使用 Monitoring API 方法的範例,請參閱「列出指標和資源類型」。

指標

Cloud Monitoring 建立的每個時間序列都會記錄一組資料點,以及這些資料點的組織和意義相關資訊。

指標物件

每個時間序列都會參照指標物件中記錄的資料說明。

時間序列中包含的指標物件會指定評估結果的類型,以及這些評估結果的指標專屬資訊。如要瞭解指標物件資料結構的定義,請參閱 Metric。舉例來說,以下是從範例時間序列中時間序列擷取的度量基準物件:

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

這個物件會指出時間序列包含 logging.googleapis.com/log_entry_count 測量值。標籤值會指出這個特定時序只會計算名為 kubelet 的記錄檔案中嚴重性為 DEFAULT 的記錄項目。

每個標籤值組合都有一個時間序列,因此同一個記錄檔的 INFO 項目會顯示在不同的時間序列中。

指標物件中收集的標籤組,會在該指標類型的描述元中指定。

指標描述元

指標類型的相關資訊會儲存在名為「指標描述元」的資料結構中。如要瞭解這個資料結構的定義,請參閱 MetricDescriptor

指標描述元是記錄結構的結構定義或規格。這類指標不包含特定指標的資料,而是說明如何解讀與特定指標類型相關聯的資料。

以下是指標描述詞範例:

{
  "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.listmetricDescriptors.get 方法的參考頁面。

實際範例:如果您有 Google Cloud 專案,可以使用 API Explorer 小工具擷取這個描述符,如下所示:

  1. 開啟 metricDescriptors.list 參考頁面。

  2. 在標示為「Try this method」的窗格中,輸入以下內容:

    • nameprojects/PROJECT_ID/metricDescriptors/logging.googleapis.com/log_entry_countPROJECT_ID 替換為 Google Cloud 專案的 ID。
  3. 按一下 [Execute] (執行)

要求會傳回上述描述符。

如需使用 Monitoring API 方法的範例,請參閱「列出指標和資源類型」。

指標描述元中的大部分欄位都很容易理解。指標種類和值類型可能需要進一步說明,請參閱「指標種類與類型」一文。

雲端監控提供約 6,500 種內建指標類型,詳情請參閱指標清單。您也可以自行建立指標描述項,以便擷取自訂指標。詳情請參閱「使用者定義指標總覽」。