使用 Observability Analytics 分析記錄檔量

本文說明如何使用 Observability Analytics 估算記錄項目的計費資料量。您可以編寫查詢,依據不同維度 (例如資源類型或應用程式名稱) 彙整您的計費資料量並產生報表,然後繪製及查看查詢結果。

如何查詢計費資料量

記錄項目的計費資料量 (即向 Cloud Billing 報告的大小) 可透過 storage_bytes 欄位取得。在查詢中,您可以像使用任何資料類型為 INTEGER 的結構定義欄位一樣,使用 storage_bytes 欄位。舉例來說,您可以在 SELECT 子句、CASE 陳述式和一般資料表運算式中加入這個函式。如要進一步瞭解如何查詢記錄,請參閱下列文件:

由於 Cloud Billing 會根據計費資料量來計算費用,因此您可以編寫查詢,瞭解費用的來源。舉例來說,您可以編寫查詢,判斷哪些應用程式寫入的記錄項目最多。如要瞭解如何將計費資料量與費用建立關聯,請參閱「Google Cloud Observability 定價」頁面的 Cloud Logging 部分。

記錄項目的計費資料量並非傳送至 Cloud Logging API 的 LogEntry 物件大小,計費資料量包括序列化和中繼資料所需的位元組。

事前準備

本節說明使用可觀測性分析前必須完成的步驟。

設定記錄檔 bucket

確認記錄檔 bucket 已升級為使用 Observability Analytics:

  1. 在 Google Cloud 控制台中,前往「Logs Storage」(記錄檔儲存空間) 頁面:

    前往「Logs Storage」(記錄檔儲存空間)

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

  2. 針對要查詢的記錄檢視區塊所屬的每個記錄檔 bucket,請確認「可使用觀測能力分析」欄顯示「開啟」。如果顯示「升級」,請按一下「升級」並完成對話方塊。

設定 IAM 角色和權限

本節說明使用可觀測性分析所需的 IAM 角色或權限:

  • 如要取得使用可觀測性分析和查詢記錄檔檢視畫面所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

    如要將主體限制為特定記錄檢視畫面,請在專案層級授予記錄檢視畫面存取者角色時新增 IAM 條件,或在記錄檢視畫面的政策檔案中新增 IAM 繫結。詳情請參閱「控管記錄檢視畫面存取權」。

    您必須具備這些權限,才能在 Logs Explorer 頁面查看記錄項目。如要瞭解查詢使用者定義值區中的檢視畫面,或查詢 _Default 記錄檔值區的 _AllLogs 檢視畫面時,需要哪些額外角色,請參閱「Cloud Logging 角色」。

  • 如要取得查詢 Analytics 檢視畫面所需的權限,請要求系統管理員授予您專案的「可觀測性 Analytics 使用者」 (roles/observability.analyticsUser) IAM 角色。

查詢範例

本節提供範例查詢,用於分析單一記錄檢視畫面中的資料。如果您將資料儲存在多個記錄檢視區中,且想計算這些檢視區中儲存資料的匯總值,則必須使用 UNION 陳述式。

您可以使用「Observability Analytics」頁面,或任何可查詢 BigQuery 資料集的位置 (包括「BigQuery Studio」和「Looker Studio」頁面,以及 bq 指令列工具),查詢記錄項目。

如要使用查詢範例,請按照下列步驟操作:

依應用程式查詢記錄量

如要計算每天每個應用程式的記錄項目總位元組數 (這些記錄項目是針對 Google Kubernetes Engine 資源寫入,且具有 JSON 酬載),請使用下列查詢:

SELECT
  timestamp_trunc(timestamp,DAY) as day,
  JSON_VALUE(labels["k8s-pod/app"]) as app_id,
  SUM(storage_bytes) as total_bytes
FROM
  `VIEW`
WHERE
  json_payload IS NOT NULL
  AND resource.type="k8s_container"
GROUP BY ALL

如要以視覺化方式呈現資料,可以建立圖表。

在下列範例中,資料會以堆疊長條圖顯示。圖表上的每個長條都會顯示儲存的位元組總數,並依應用程式分類。在本例中,frontend 應用程式產生的記錄資料最多:

圖表範例:依應用程式查詢記錄量。

依記錄名稱查詢記錄磁碟區

如要列出每個具有 JSON 酬載,且是針對 Google Kubernetes Engine 資源寫入的記錄項目,請使用下列查詢:

SELECT
  log_id AS log_name,
  storage_bytes
FROM
  `VIEW`
WHERE
  json_payload IS NOT NULL
  AND resource.type="k8s_container"

先前的查詢不會匯總結果,而是為每個記錄項目提供一個資料列,且該資料列包含記錄名稱和儲存的位元組數。如果將這項資料繪製成圖表,就能以視覺化方式呈現寫入不同記錄的記錄資料部分:

範例圖表:依記錄名稱查詢記錄量。

上一個圖表顯示,大部分的記錄資料都會寫入名為「stdout」的記錄。

使用 bq 指令列工具,依記錄名稱查詢記錄量

您可以在透過 BigQuery Studio 頁面或 bq 指令列工具執行的查詢中加入 storage_bytes 欄位。

下列查詢會回報每個記錄項目的記錄名稱和儲存的位元組數:

bq query --use_legacy_sql=false  'SELECT log_id as log_name,
  storage_bytes FROM `VIEW`'

這項查詢的結果類似於下列內容:

+----------+---------------+
| log_name | storage_bytes |
+----------+---------------+
| stdout   |           716 |
| stdout   |           699 |
| stdout   |           917 |
| stdout   |           704 |

每一列都對應一個記錄項目。storage_bytes 資料欄的值是該記錄項目的計費資料量。

限制

只有在符合下列條件時,才能使用 storage_bytes 欄位:

  • 記錄檔 bucket 已升級,可使用 Observability Analytics。
  • 查詢會在「可觀測性分析」Observability Analytics頁面或任何可查詢 BigQuery 資料集的位置執行,包括 BigQuery StudioLooker Studio 頁面,以及 bq 指令列工具

  • 記錄項目是在 2024 年 1 月 1 日當天或之後寫入。