Cloud Monitoring API 使用 TimeSeries、Metric、MonitoredResource 和描述元物件,代表 Cloud Monitoring 指標模型。瞭解這個結構有助於您直接使用 Monitoring API、建立自訂指標,以及整合 OpenTelemetry 等外部來源,其資料會對應至相同的模型。如果您主要透過 Google Cloud 控制台與 Monitoring 互動,可能不需要瞭解這類詳細資料。
閱讀本文前,請先熟悉指標、時間序列和資源,以及指標模型的元件。如要進一步瞭解如何收集自己的指標,請參閱「使用者定義指標總覽」。
指標模型回顧
如要瞭解時間序列的結構,必須先熟悉 Cloud Monitoring 使用的指標模型。如要瞭解這個模型,請參閱「指標、時間序列和資源」。本節將簡要說明。
一般來說,監控資料會記錄在「時間序列」中。每個時間序列都包含與這項討論相關的三項資訊:
- 一組帶有時間戳記的資料點。
- 指標類型的參考資料,說明如何解讀資料點。
- 資料來源受監控資源的參照。
Time series:
Points: [(value1, time1), (value2, time2), ...]
Metric type information: integer? incremental?
Monitored resource: project? location? method?
每個時間序列都包含單一實體或邏輯來源的測量結果。如果環境中有數百項資源,每項資源至少會提供一個時間序列。事實上,如果指標類型和受監控資源類型有標籤,則每個標籤值組合都會有一個時間序列;詳情請參閱「基數」。
時間序列範例
時間序列會以 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欄位記錄:- 這個特定時間序列的資源標籤值,代表標籤值的一種組合。
- 收集資料的特定受監控資源。
如要進一步瞭解這個欄位中的資訊,請參閱「受監控資源物件」。
metricKind和valueType欄位會說明如何解讀這些值。詳情請參閱「值類型和指標種類」。points欄位是含有時間戳記的值陣列。指標類型會指出值的代表意義。範例時間序列有一個包含單一資料點的陣列;在大多數時間序列中,陣列包含的值會更多。
如需擷取時間序列資料的實際範例,請參閱「時間序列:受監控資源的資料」。
本頁其餘部分會詳細說明 metric 和 resource 欄位中的資訊。
受監控資源
Cloud Monitoring 會從受監控資源收集資料,並記錄在時間序列中。建立的每個時間序列都包含受監控資源的說明,指出資料收集來源。
受監控資源物件
受監控資源是以 MonitoredResource 物件的執行個體表示。受監控資源會說明時間序列中的值來源。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)。執行個體位於美國。另一個時間序列可能來自這項受監控資源的不同執行個體。每組標籤值都會識別收集資料的專屬資源。
不同的資源適用不同的標籤組合。資源的標籤組合是由該類型的受監控資源描述元決定。
受監控資源描述元
受監控資源類型的相關資訊會保存在稱為「受監控資源描述元」的資料結構中。如需此資料結構的定義,請參閱 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.list 和 monitoredResourceDescriptors.get 方法的參考頁面。
實際範例:如果您有 Google Cloud 專案,可以使用 APIs Explorer 小工具擷取這個描述元,如下所示:
開啟
monitoredResourceDescriptors.list參考資料頁面。在標示為「Try this method」(試用這個方法) 的窗格中,將
PROJECT_ID替換為Google Cloud 專案 ID,然後在「name」欄位中輸入下列內容:projects/PROJECT_ID/monitoredResourceDescriptors/gce_instance點選「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.list 和 metricDescriptors.get 方法的參考頁面。
實際範例:如果您有 Google Cloud 專案,可以使用 APIs Explorer 小工具擷取這個描述元,如下所示:
開啟
metricDescriptors.list參考資料頁面。在標示為「Try this method」(試用這個方法) 的窗格中,將
PROJECT_ID替換為Google Cloud 專案 ID,然後在「name」欄位中輸入下列內容:projects/PROJECT_ID/metricDescriptors/logging.googleapis.com/log_entry_count點選「Execute」。
要求會傳回上述描述元。
如需使用 Monitoring API 方法的範例,請參閱「列出指標和資源類型」。
指標描述元中的大部分欄位都容易理解。其中可能需要進一步說明的兩個欄位是指標種類和值類型,詳情請參閱「值類型和指標種類」。
Cloud Monitoring 內建約 6,500 種指標類型,詳情請參閱指標清單。您也可以建立自己的指標描述元,擷取自訂指標。詳情請參閱「使用者定義指標總覽」。