本文說明如何使用 Monitoring API 中的 timeSeries.list
方法,讀取指標資料 (也稱為時間序列資料)。
呼叫 timeSeries.list
方法的方式有幾種:
- 您可以使用本頁面的「通訊協定」分頁,透過表單式 APIs Explorer 執行操作。
- 您可以使用特定語言的用戶端程式庫。
- 您可以使用指標瀏覽器。
如要讀取指標資料,也可以將指令傳送至 timeSeries.query
方法,但這需要使用 Monitoring Query Language (MQL)。本文不會說明 MQL 或 timeSeries.query
方法。如要瞭解這些主題,請參閱使用 timeSeries.query
擷取資料。
總覽
每次呼叫 timeSeries.list
方法,都可以從單一指標類型傳回任何數量的時間序列。舉例來說,如果您使用 Compute Engine,則 compute.googleapis.com/instance/cpu/usage_time
指標類型會為每個 VM 執行個體提供個別的時間序列。如需指標與時間序列的介紹,請參閱「指標、時間序列和資源」。
如要指定所需的時間序列資料,請將下列資訊提供給 timeSeries.list
方法:
- 指定指標類型的篩選器運算式。或者,篩選器會指定產生時間序列的資源,或為時間序列中的某些標籤指定值,以選取指標時間序列的子集。
- 限制傳回多少資料的時間間隔。
- 或者,指定如何結合多個時間序列,以產生資料的匯總摘要。如需更多資訊和範例,請參閱「匯總資料」。
時間序列篩選器
您可將時間序列篩選器傳送至 timeSeries.list
方法,以指定要擷取哪一個時間序列。以下列出常見的篩選器元件:
篩選器必須指定單一指標類型。例如:
metric.type = "compute.googleapis.com/instance/cpu/usage_time"
如要擷取使用者定義的指標,請將篩選器中的 metric.type 前置字串變更為
custom.googleapis.com
;如果已被使用,請變更為其他前置字串 (通常會使用external.googleapis.com
)。篩選器可以指定指標維度標籤的值。指標類型可決定存在哪些標籤。例如:
(metric.label.instance_name = "your-instance-id" OR metric.label.instance_name = "your-other-instance-id")
在上一個運算式中,
label
是正確的,但實際指標物件會將labels
做為其鍵。篩選器只能選取包含特定受控資源類型的時間序列:
resource.type = "gce_instance"
篩選器元件可以結合為單一時間序列篩選器,如下所示:
metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND
(metric.label.instance_name = "your-instance-id" OR
metric.label.instance_name = "your-other-instance-id")
如果未指定所有指標標籤的值,list
方法會針對未指定標籤中的每個值組合,傳回一個時間序列。此方法只會傳回有資料的時間序列。
時間間隔
使用 API 讀取資料時,請設定開始和結束時間,指定要擷取資料的時間間隔。API 會從 (start, end]
時間間隔擷取資料,也就是從開始時間之後到結束時間。
開始時間不得晚於結束時間。如果指定的開始時間晚於結束時間,API 就會傳回錯誤。
如要只擷取具有特定時間戳記的資料,請將開始時間設為等於結束時間,或不設定開始時間。
時間格式
開始與結束時間必須指定為 RFC 3339 格式的字串。 例如:
2024-03-01T12:34:56+04:00 2024-03-01T12:34:56.992Z
Linux 上的 date -Iseconds
指令非常適合用來產生時間戳記。
基本 list 作業
timeSeries.list
方法可用來傳回簡易的原始資料,也可以傳回高度處理的資料。本節說明如何列出可用的時間序列,以及如何取得特定時間序列中的值。
範例:列出可用的時間序列
此範例顯示如何僅列出符合篩選器的時間序列名稱和說明,而不是傳回所有可用資料:
通訊協定
開啟
timeSeries.list
參考頁面。在標示為「Try this method」(試試這個方法) 的窗格中,輸入下列內容:
-
name:輸入專案的路徑。
projects/PROJECT_ID
-
filter:指定指標類型。
metric.type = "compute.googleapis.com/instance/cpu/utilization"
- interval.endTime:輸入結束時間。
- interval.startTime:輸入開始時間,並確保開始時間比結束時間早 20 分鐘。
按一下「顯示標準參數」,然後在「欄位」中輸入下列內容:
timeSeries.metric
-
name:輸入專案的路徑。
按一下 [Execute] (執行)。
範例輸出顯示了兩個不同 VM 執行個體的時間序列:
{
"timeSeries": [
{
"metric": {
"labels": {
"instance_name": "your-first-instance"
},
"type": "compute.googleapis.com/instance/cpu/utilization"
},
},
{
"metric": {
"labels": {
"instance_name": "your-second-instance"
},
"type": "compute.googleapis.com/instance/cpu/utilization"
},
}
]
}
如要以 curl
指令、HTTP 要求或 JavaScript 形式查看要求,請在 API Explorer 中按一下「全螢幕」fullscreen。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
如有困難,請參閱「排解 Monitoring API 問題」。
範例:取得時間序列資料
這個範例會傳回特定 Compute Engine 執行個體在 20 分鐘間隔內記錄的 CPU 使用率測量結果。傳回的資料量取決於指標的取樣率。由於系統每分鐘會對 CPU 使用率取樣一次,因此這項查詢的結果約有 20 個資料點。如果時間序列傳回多個資料點,API 會以相反的時間順序傳回每個時間序列中的資料點;這種資料點排序沒有任何覆寫設定。
通訊協定
通訊協定範例會進一步限制輸出,以便更能在回應方塊中管理傳回的資料:
- filter 值會將時間序列限制於單一 VM 執行個體。
- fields 值僅指定測量的時間與值。
這些設定會限制結果中傳回的時間序列資料量。
開啟
timeSeries.list
參考頁面。在標示為「Try this method」(試試這個方法) 的窗格中,輸入下列內容:
-
name:輸入專案的路徑。
projects/PROJECT_ID
filter:指定指標類型。
metric.type = "compute.googleapis.com/instance/cpu/utilization" AND metric.label.instance_name = "INSTANCE_NAME"
interval.endTime:輸入結束時間。
interval.startTime:輸入開始時間,並確保開始時間比結束時間早 20 分鐘。
按一下「顯示標準參數」,然後在「欄位」中輸入下列內容:
timeSeries.points.interval.endTime,timeSeries.points.value
-
name:輸入專案的路徑。
按一下 [Execute] (執行)。
這個要求會傳回如下的結果:
{
"timeSeries": [
{
"points": [
{
"interval": {
"endTime": "2024-03-01T00:19:01Z"
},
"value": {
"doubleValue": 0.06763074536575005
}
},
{
"interval": {
"endTime": "2024-03-01T00:18:01Z"
},
"value": {
"doubleValue": 0.06886174467702706
}
},
...
{
"interval": {
"endTime": "2024-03-01T00:17:01Z"
},
"value": {
"doubleValue": 0.06929610064253211
}
}
]
}
]
}
如要以 curl
指令、HTTP 要求或 JavaScript 形式查看要求,請在 API Explorer 中按一下「全螢幕」fullscreen。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
如有困難,請參閱「排解 Monitoring API 問題」。
匯總資料
timeSeries.list
方法可對傳回的時間序列資料執行統計上的匯總與化約。以下各節提供兩個範例。如要瞭解詳情,請參閱篩選和匯總:操控時間序列。
範例:校正時間序列
這個範例將每個時間序列中的 20 個使用率測量值減少為 2 個:在 20 分鐘間隔內的兩個 10 分鐘期間的平均使用率。系統會先將每個時間序列的資料校正為 10 分鐘期間,然後為每個 10 分鐘期間的值計算平均。
校正作業有兩個優點:精簡資料,並以 10 分鐘為界線,校正所有時間序列資料。然後就可以進一步處理這些對齊的資料。
通訊協定
開啟
timeSeries.list
參考頁面。在標示為「Try this method」(試試這個方法) 的窗格中,輸入下列內容:
-
name:輸入專案的路徑。
projects/PROJECT_ID
-
aggregation.alignmentPeriod:輸入
600s
-
aggregation.perSeriesAligner:選取
ALIGN_MEAN
-
filter:指定指標類型。
metric.type = "compute.googleapis.com/instance/cpu/utilization"
- interval.endTime:輸入結束時間。
- interval.startTime:輸入開始時間,並確保開始時間比結束時間早 20 分鐘。
-
按一下「顯示標準參數」,然後在「欄位」中輸入下列內容:
timeSeries.metric,timeSeries.points
-
name:輸入專案的路徑。
按一下 [Execute] (執行)。
先前的範例中顯示的單一執行個體篩選器已遭刪除:這項查詢傳回的資料少很多,因此不需要將其限制為一個 VM 執行個體。
在以下範例結果中,三個 VM 執行個體都各有一個時間序列。每個時間序列都有兩個資料點,即 10 分鐘校正週期的平均使用率:
{
"timeSeries": [
{
"metric": {
"labels": {"instance_name": "your-first-instance"},
"type": "compute.googleapis.com/instance/cpu/utilization"
},
"points": [
{
"interval": {
"startTime": "2024-03-01T00:20:00.000Z",
"endTime": "2024-03-01T00:20:00.000Z"
},
"value": { "doubleValue": 0.06688481346044381 }
},
{
"interval": {
"startTime": "2024-03-01T00:10:00.000Z",
"endTime": "2024-03-01T00:10:00.000Z"
},
"value": {"doubleValue": 0.06786652821310177 }
}
]
},
{
"metric": {
"labels": { "instance_name": "your-second-instance" },
"type": "compute.googleapis.com/instance/cpu/utilization"
},
"points": [
{
"interval": {
"startTime": "2024-03-01T00:20:00.000Z",
"endTime": "2024-03-01T00:20:00.000Z"
},
"value": { "doubleValue": 0.04144239874207415 }
},
{
"interval": {
"startTime": "2024-03-01T00:10:00.000Z",
"endTime": "2024-03-01T00:10:00.000Z"
},
"value": { "doubleValue": 0.04045793689050091 }
}
]
},
{
"metric": {
"labels": { "instance_name": "your-third-instance" },
"type": "compute.googleapis.com/instance/cpu/utilization"
},
"points": [
{
"interval": {
"startTime": "2024-03-01T00:20:00.000Z",
"endTime": "2024-03-01T00:20:00.000Z"
},
"value": { "doubleValue": 0.029650046587339607 }
},
{
"interval": {
"startTime": "2024-03-01T00:10:00.000Z",
"endTime": "2024-03-01T00:10:00.000Z"
},
"value": { "doubleValue": 0.03053874224715402 }
}
]
}
]
}
如要以 curl
指令、HTTP 要求或 JavaScript 形式查看要求,請在 API Explorer 中按一下「全螢幕」fullscreen。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
如有困難,請參閱「排解 Monitoring API 問題」。
範例:跨時間序列化約
此範例延伸了上一個範例,將三個 VM 執行個體中完成校正的時間序列結合成單一時間序列,呈現所有執行個體的平均使用率。
通訊協定
開啟
timeSeries.list
參考頁面。在標示為「Try this method」(試試這個方法) 的窗格中,輸入下列內容:
-
name:輸入專案的路徑。
projects/PROJECT_ID
-
aggregation.alignmentPeriod:輸入
600s
-
aggregation.perSeriesAligner:選取
ALIGN_MEAN
-
aggregation.crossSeriesReducer:選取
REDUCE_MEAN
-
filter:指定指標類型。
metric.type = "compute.googleapis.com/instance/cpu/utilization"
- interval.endTime:輸入結束時間。
- interval.startTime:輸入開始時間,並確保開始時間比結束時間早 20 分鐘。
-
按一下「顯示標準參數」,然後在「欄位」中輸入下列內容:
timeSeries.metric,timeSeries.points
-
name:輸入專案的路徑。
按一下 [Execute] (執行)。
以下範例結果只有一個時間序列及兩個資料點。每個資料點都是這段期間三個 VM 執行個體之間的平均使用率:
{
"timeSeries": [
{
"metric": {
"type": "compute.googleapis.com/instance/cpu/utilization"
},
"points": [
{
"interval": {
"startTime": "2024-03-01T00:20:00.000Z",
"endTime": "2024-03-01T00:20:00.000Z"
},
"value": {
"doubleValue": 0.045992419596619184
}
},
{
"interval": {
"startTime": "2024-03-01T00:10:00.000Z",
"endTime": "2024-03-01T00:10:00.000Z"
},
"value": {
"doubleValue": 0.04628773578358556
}
}
]
}
]
}
如要以 curl
指令、HTTP 要求或 JavaScript 形式查看要求,請在 API Explorer 中按一下「全螢幕」fullscreen。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
如有困難,請參閱「排解 Monitoring API 問題」。
後續步驟
- 瞭解指標資料的保留與延遲時間。
- 瞭解如何篩選及匯總:操控時間序列。