您可以使用 Monitoring API 中的 timeSeries.list 方法,擷取、篩選及匯總指定時間間隔內的原始或處理過的時間序列資料。您可以叫用 timeSeries.list,方法是使用特定語言的用戶端程式庫、本文件「Protocol」(通訊協定) 分頁中表單式的 APIs Explorer,或 Metrics Explorer。
如要改用 Monitoring Query Language (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")在上述運算式中,即使實際指標物件使用
labels做為索引鍵,label仍正確。篩選器只能選取包含特定受監控資源類型的時間序列:
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 分鐘。
-
按一下「Show standard parameters」(顯示標準參數),然後在「fields」(欄位) 欄位中輸入下列內容:
timeSeries.metric
-
name:輸入專案路徑。
- 點選「Execute」。
{
"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 形式查看要求,請在 APIs Explorer 中按一下「Full screen」(全螢幕) 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 執行個體。
- field 值只會指定 測量結果。
這些設定會限制結果中傳回的時間序列資料量。
- 開啟
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 分鐘。
-
按一下「Show standard parameters」(顯示標準參數),然後在「fields」(欄位) 欄位中輸入下列內容:
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 形式查看要求,請在 APIs Explorer 中按一下「Full screen」(全螢幕) 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 分鐘。
-
按一下「Show standard parameters」(顯示標準參數),然後在「fields」(欄位) 欄位中輸入下列內容:
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 形式查看要求,請在 APIs Explorer 中按一下「Full screen」(全螢幕) 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 分鐘。
-
按一下「Show standard parameters」(顯示標準參數),然後在「fields」(欄位) 欄位中輸入下列內容:
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 形式查看要求,請在 APIs Explorer 中按一下「Full screen」(全螢幕) fullscreen。
C#
如要向 Monitoring 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Go
如要向 Monitoring 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Java
如要向 Monitoring 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要向 Monitoring 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
PHP
如要向 Monitoring 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要向 Monitoring 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Ruby
如要向 Monitoring 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
如果遇到問題,請參閱「排解 Monitoring API 問題」。
後續步驟
- 瞭解指標資料的保留和延遲時間。
- 瞭解篩選和匯總:操控時間序列。