使用 Observability Analytics 分析記錄檔量

Observability Analytics 可讓您估算記錄項目的計費資料量,以便瞭解及管理記錄費用。您可以編寫 SQL 查詢,依資源類型或應用程式名稱等維度匯總記錄量,然後查看結果或繪製成圖表。

如何查詢計費資料量

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

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

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

事前準備

本節說明使用 Observability Analytics 前必須完成的步驟。

設定記錄檔 bucket

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

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

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

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

  2. 針對要查詢記錄檔檢視表的每個記錄檔 bucket,確認「可使用 Observability Analytics」欄顯示「開啟」。如果畫面上顯示「Upgrade」(升級),請按一下「Upgrade」(升級),然後完成對話方塊。

設定 IAM 角色和權限

本節說明使用 Observability Analytics 所需的 IAM 角色或權限:

  • 如要取得使用 Observability Analytics 和查詢記錄檢視表所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

    • 如要查詢 _Required 和 _Default 記錄檔 bucket,請按照下列步驟操作: 記錄檢視器 (roles/logging.viewer)
    • 如要查詢專案中的所有記錄檢視表:記錄檢視表存取子 (roles/logging.viewAccessor)

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

    這些權限與在「Logs Explorer」頁面查看記錄項目所需的權限相同。如要瞭解查詢使用者定義 bucket 上的檢視表,或查詢 _Default 記錄檔 bucket 的 _AllLogs 檢視表時,需要哪些其他角色,請參閱「Cloud Logging 角色」。

  • 如要取得查詢分析檢視表所需的權限,請要求管理員授予您專案的 Observability 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 Studio」和「Looker Studio」頁面,以及 bq 指令列工具。

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