指標模型的元件

瞭解受監控資源類型、指標類型、標籤和時間序列如何在 Cloud Monitoring 中搭配運作,有助於查詢資料、建立圖表和警告,以及設計自訂指標。在 Metrics Explorer 中檢查指標、設定警告政策、使用 Cloud Monitoring API 擷取時間序列資料,或建立使用者定義的指標時,都會用到這些概念。

如果您不熟悉這些概念,請先參閱「指標、時間序列和資源」。如要瞭解 Monitoring API 物件結構定義和自訂指標詳細資料,請參閱「時間序列的結構」。

標籤簡介

受監控資源類型和指標類型都支援標籤,可在分析期間分類資料。例如:

  • 虛擬機器的受監控資源類型可能包含機器位置和相關聯專案 ID 的標籤。記錄受監控資源的相關資訊時,資訊會包含標籤的值。除了為受監控資源類型定義的標籤外,受監控資源也可能具有系統或使用者提供的中繼資料標籤。
  • 計算 API 要求的指標類型可能會有標籤,用來記錄叫用的方法名稱和要求狀態。

如要進一步瞭解標籤的使用方式,請參閱「標籤」。

受監控資源類型

「受監控資源」是指系統擷取指標資料的來源資源。Cloud Monitoring 支援約 270 種受監控資源。

受監控資源的類型包括一般節點和工作、Google Kubernetes Engine 中的架構元件、Bigtable 中的資料表、各種 AWS 資源等。

每種受監控資源類型都會在名為「受監控資源描述元」的資料結構中正式描述。詳情請參閱「受監控資源描述元」。

受監控資源清單中,每個支援的受監控資源類型都有一個項目。清單中的項目是根據受監控資源描述元建立。本節說明受監控資源描述元擷取的資訊,以及這些資訊在清單中的呈現方式。

受監控資源類型範例

下圖顯示 Cloud Storage bucket 的清單項目:

Cloud Storage bucket 的清單。

清單中的所有項目都包含下列資訊:

  • 類型:項目中的標頭會列出受監控資源類型,在範例中為 gcs_bucket。
  • 顯示名稱:受監控資源的簡短說明。
  • 說明:受監控資源的詳細說明。
  • 標籤:用於分類資料的一組維度。詳情請參閱「標籤」。

指標類型

「指標類型」說明可從受監控資源收集的測量結果。指標類型包含所測量項目的說明,以及測量結果的解讀方式。Cloud Monitoring 支援約 6,500 種指標,並可讓您定義新類型。

指標類型包括 API 呼叫次數、磁碟用量統計資料、儲存空間用量等。

每種指標類型都會在名為「指標描述元」的資料結構中正式描述。詳情請參閱「指標描述元」。

每個內建指標類型在「Metrics list」(指標清單) 頁面中都有一個項目。這些資料表中的項目是根據指標描述元建立。本節說明指標類型中擷取的資訊,並說明參考資料中的呈現方式。

指標類型範例

下圖顯示 Cloud Storage 指標類型的項目:

Cloud Storage 指標清單摘錄。

指標類型會顯示在表格中,表格標題會說明資訊的版面配置。本節以一個項目為例,但所有資料表都使用相同格式。

Cloud Storage 資料表範例項目會提供下列有關指標類型的資訊:

  • 指標類型:指標類型的 ID,在範例中為 storage.googleapis.com/api/request_count。

    前置字串 storage.googleapis.com 是 Cloud Storage 的命名空間。與特定受監控資源類型相關聯的所有指標類型,都會使用相同的命名空間。

    資料表中的項目會省略命名空間。

    與 Cloud Storage 相關聯的所有指標類型,都列在 Cloud Storage 指標表格中。

  • 推出階段:彩色區塊,表示指標類型的推出階段,值為 Alpha、Beta 或 GA。

  • 顯示名稱:說明指標類型的簡短字串,在本例中為「要求數」。

  • Kind, Type, Unit:這行提供解讀資料值的資訊。範例顯示差異指標記錄為 64 位元整數,沒有單位 (即 1 值)。

    • Kind:這個範例是差異指標,會記錄一段時間內的變化。也就是說,每個資料點都會記錄自上一個資料點寫入後的 API 呼叫次數。如要進一步瞭解種類,請參閱「值類型和指標種類」。

    • 類型:這個範例會將值記錄為 64 位元整數。如要進一步瞭解類型,請參閱「值類型和指標種類」。

    • Unit:這項指標代表計數,因此不需要明確單位;數字 1 用於表示不需要單位。

  • 受監控資源:可使用這項指標類型的受監控資源。這裡的值與「受監控的資源類型」一節所述的值相同。

  • 說明:記錄內容和方式的詳細資訊。請以斜體顯示,與標籤區分。

  • 標籤:用於分類資料的一組維度。詳情請參閱「標籤」。

透過 Cloud Monitoring API 存取監控資料時,您會在 API 呼叫中加入 Google Cloud 專案。您只能擷取該 Google Cloud 專案可見的資料。舉例來說,如果您要求專案的指標類型 storage.googleapis.com/api/request_count 資料,則只會看到專案中 Cloud Storage bucket 的 API 計數。如果專案未使用任何 Cloud Storage bucket,就不會傳回任何指標資料。

內建指標類型

內建指標類型是由 Google Cloud 服務 (包括 Cloud Monitoring) 定義。這些指標類型說明各種常見基礎架構的標準測量結果,可供任何人使用。

指標清單會顯示整組內建指標類型。 外部指標清單頁面列出的指標是內建指標的特殊子集,由 Cloud Monitoring 與開放原始碼專案或第三方供應商合作定義。這些指標通常會加上 external.googleapis.com 前置字元。

自訂指標

建構應用程式時,您可能想評估某些屬性,但 Cloud Monitoring 並未內建相關指標。您可以使用 Cloud Monitoring 定義自己的指標類型,或從外部來源匯入指標類型。這類指標稱為「自訂指標」。如果指標的前置字元為 custom.googleapis.com 或 prometheus.googleapis.com,則為自訂指標。後者通常來自 Google Cloud Managed Service for Prometheus。

舉例來說,如要追蹤商店售出的小工具數量,就必須使用自訂指標。詳情請參閱「使用者定義指標總覽」。

標籤

標籤是鍵/值組合,可用來提供資料值的相關資訊。

指標和受監控資源標籤

指標和受監控資源類型的定義都包含標籤。標籤是收集資料的分類器,可協助分類資料,以便進行更深入的分析。例如:

  • Cloud Storage 指標類型 storage.googleapis.com/api/request_count 有兩個標籤:response_code 和 method。
  • Cloud Storage 受監控資源類型 gcs_bucket 有三個標籤:project_id、bucket_name 和 location。標籤會識別資源類型的特定執行個體。

因此,系統會根據呼叫的方法、呼叫的回應代碼,以及相關 bucket 的名稱、位置和專案,分類從 Cloud Storage bucket 收集到的所有 API 要求資料。標籤組合會因指標或受監控資源類型而異;可用的標籤記載於「指標清單」和「受監控資源清單」頁面。

計算 API 呼叫次數時,只要追蹤回應代碼、方法名稱和位置,就能擷取特定 API 方法的呼叫次數、任何方法的失敗呼叫次數,或特定位置特定方法的失敗呼叫次數。

標籤數量和每個標籤可假設的值數量稱為「基數」。基數是指一組指標和受監控資源類型可能收集的時間序列數量:每個標籤值組合都有一個時間序列。詳情請參閱「基數:時間序列和標籤」。

資源中繼資料標籤

除了指標和受監控資源類型上定義的標籤外,Monitoring 還會在內部收集受監控資源的其他資訊,並將這些資訊儲存在系統中繼資料標籤中。使用者可以唯讀值的形式查看這些系統中繼資料標籤。在 Google Cloud 控制台設定 VM 執行個體等資源時,部分資源也允許使用者建立自己的資源中繼資料標籤。

系統和使用者中繼資料標籤統稱為「資源中繼資料標籤」。在時間序列篩選器中,您可以像使用指標和受監控資源類型上定義的標籤一樣,使用這些標籤。

只有在您明確依資源中繼資料標籤匯總時,查詢結果才會顯示這些標籤。

如要進一步瞭解篩選功能,請參閱「監控篩選器」。

時間序列:受監控資源的資料

本節將說明監控資料是什麼,以及如何以時間序列整理。指標模型的概念元件會在這裡變成具體構件。

Cloud Monitoring 會針對指標和受監控資源類型組合,儲存一段時間內的定期測量結果。系統會將測量結果收集到「時間序列」中,每個時間序列都包含下列項目:

  • 時間序列所屬指標類型的名稱,以及指標標籤的一組值組合。

  • 一系列 (時間戳記、值) 組合。值是測量結果,時間戳記則是測量時間。

  • 受監控資源,也就是時間序列資料的來源,以及資源標籤的一組值組合。

系統會為產生資料的每個指標和資源標籤組合建立時間序列。

簡化範例:指標類型 storage.googleapis.com/api/request_count 可能會有多個專案 Cloud Storage bucket 的時間序列。下表列出一些可能的時間序列。

在表格中,bucket: xyz 值代表受監控資源類型中 bucket_name 標籤的值,response_code 和 method 則是指標類型中的標籤。資源和指標標籤中的每個值組合都有一個時間序列,表格中會顯示部分時間序列:

受監控的
資源標籤
指標標籤 指標資料
bucket: 1234 response_code: OK,
method: read
{
(3, Wed 2:00pm),
(2, Wed 2:05pm),
(8, Wed 2:10pm),
...}
bucket: 1234 response_code: OK,
method: write
{
(1, Wed 2:01pm),
(2, Wed 2:04pm),
(7, Wed 2:09pm),
...}
bucket: 1234 response_code: FAIL,
method: write
{
(1, Wed 2:01pm),
(0, Wed 2:04pm),
(0, Wed 2:09pm),
...}
bucket: 9876 response_code: OK,
method: read
{
(2, Wed 1:59pm),
(4, Wed 2:05pm),
(3, Wed 2:10pm),
...}

Cloud Monitoring 不會記錄「空白」時間序列。在 Cloud Storage bucket 範例中,如果您未使用特定 bucket,或從未呼叫特定 API 方法,系統就不會收集該標籤的資料,也不會有時間序列提及該標籤。也就是說,如果專案完全沒有特定指標的資料,您就不會看到該指標類型。

指標類型不會指出指標時間序列中找到的受監控資源類型。Cloud Storage 只有一種受監控資源類型:gcs_bucket。部分指標類型會與多個受監控資源配對。

實際範例:如果您有 Google Cloud 專案,可以試用 APIs Explorer 小工具,該工具位於 Monitoring API 中 timeSeries.list 方法的參考頁面。

  1. 開啟 timeSeries.list 參考資料頁面。

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

    • name:projects/PROJECT_ID。將 PROJECT_ID 替換為 Google Cloud 專案 ID。
    • filter:metric.type="logging.googleapis.com/log_entry_count" resource.type="gce_instance"
    • interval.start_time:輸入開始時間,並確保比結束時間早 20 分鐘。
    • interval.end_time:輸入結束時間。

如果要求成功,系統會傳回符合要求的時間序列資料。如下列程式碼片段所示:

{
  "timeSeries": [
    {
      "metric": {
        "labels": {
          "severity": "INFO",
          "log": "compute.googleapis.com/activity_log"
        },
        "type": "logging.googleapis.com/log_entry_count"
      },
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "0",
          "zone": "us-central1",
          "project_id": "your-project-id"
        }
      },
      "metricKind": "DELTA",
      "valueType": "INT64",
      "points": [
        {
        "interval": {
            "startTime": "2024-03-29T13:53:00Z",
            "endTime": "2024-03-29T13:54:00Z"
          },
          "value": {
            "int64Value": "0"
          }
        },
        ...
      ]
    },
    ...
  ]
}

如要進一步瞭解如何使用 APIs Explorer 小工具 (包括疑難排解),請參閱「APIs Explorer」。

基數:時間序列和標籤

每個時間序列都與一組特定的指標和受監控資源類型相關聯。指標和受監控資源類型各自提供一些標籤。在 Cloud Monitoring 中,一組標籤的值不重複組合數量,就是指標類型或受監控資源類型的基數。這些值稱為「指標基數」和「資源基數」,會決定可能產生的時間序列數量,即「總基數」。

指標、資源和總基數

假設您有一個指標類型,指定了 color 和 zone 兩個標籤。指標基數取決於這些標籤可能的值數量:

  • 如果只有「紅色」、「綠色」和「藍色」三種可能顏色,則 color 標籤最多可以有三個不同的值。
  • 如果只有「east」和「west」兩個可用可用區,則 zone 標籤最多可以有兩個不同的值。

這項指標的基數為 6 (3×2)。如果 color 標籤有 1,000 個可能的值,且每個顏色都可能出現在每個可用區,則指標基數為 2,000 (1,000×2)。如果這些標籤位於受監控資源類型 (而非指標類型),則適用相同的計算方式。

這個基數值是最大值,取決於可能標籤值的組合數量。如果標籤值的所有組合並未實際發生,實際的有效值可能會大幅降低。舉例來說,如果每種顏色只出現在一個可用區,而非兩個可用區,則在執行中的系統中,您最多會看到 1,000 個時間序列。不過,有效基數的實用性取決於特定組合未出現的原因,以及未來是否可能出現。

基數取決於標籤可能具有的值。

寫入時間序列資料時,系統會依指標和受監控資源類型分類。對於任何一組指標和資源類型,「總基數」是指標基數和資源基數的乘積。如果指標的基數為 1,000,資源的基數為 100,且每個標籤值都會出現,則時間序列數量為 100,000 (1,000×100)。

設計自己的指標時,請確保任何標籤的可能值組合都受到限制。建議使用一小組離散值 (例如「紅色」、「綠色」和「藍色」)。舉例來說,如果您為 color 標籤使用 8 位元 RGB 值,則可以有超過 1,600 萬個不同的值。請勿使用高解析度值 (例如時間戳記、任何類型的專屬 ID、使用者 ID、IP 位址、未參數化的網址等) 做為指標標籤。

查詢效能和基數

發出資料查詢時,要求的資料量是影響查詢效能的最大因素:查詢一小時的資料,通常比查詢六個月的資料更快。不過,要求傳回的資料量也取決於要求中的時間序列數量。如果查詢擷取的是低基數指標的兩個月資料,速度可能會比擷取極高基數指標的兩個月資料快,因為擷取的資料量不同。

基數主要取決於標籤可擁有的值數量,而非標籤數量。一般來說,您無法控制資源的基數,例如 Pod 或 VM 的數量會根據業務需求而變動。不過,將指標擷取至 Cloud Monitoring 時,您通常可以控管指標基數,而不必使用系統指標。舉例來說,如果是使用者定義的自訂指標,您需要決定標籤和可能的值。如果您正在擷取 Prometheus 指標,可以使用重新標籤功能修改標籤組合,並捨棄不想擷取的時間序列。

您可以使用 Cloud Monitoring 的「Metrics Management」(指標管理) 頁面,找出可能有基數問題的指標。如要查看「Metrics Management」(指標管理) 頁面,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Metrics management」(指標管理) 頁面:

    前往「Metrics management」(指標管理)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。

  2. 在工具列中選取時間範圍。根據預設,「Metrics Management」(指標管理) 頁面會顯示過去一天收集的指標相關資訊。

如要進一步瞭解「Metrics Management」(指標管理) 頁面,請參閱「查看及管理指標用量」。

如要瞭解 Cloud Monitoring 儲存及擷取時間序列資料的技術背景,請參閱「Monarch:Google 的全球規模記憶體內時間序列資料庫」。

如要瞭解 Cloud Monitoring 中使用者定義指標的限制,請參閱「使用者定義指標」。