本文說明如何使用 Log Analytics 估算記錄檔項目的計費量。您可以編寫查詢,依資源類型或應用程式名稱等不同維度,回報及彙整可計費量,然後繪製及查看查詢結果。
如何查詢可計費量
記錄項目的可計費量 (即向 Cloud Billing 報告的大小) 可透過 storage_bytes
欄位取得。在查詢中,您可以像使用任何資料類型為 INTEGER
的結構定義欄位一樣,使用 storage_bytes
欄位。舉例來說,您可以在 SELECT
子句、CASE
陳述式和一般資料表運算式中加入這個函式。如要進一步瞭解如何查詢記錄,請參閱下列文件:
由於 Cloud Billing 會根據可計費的資料量決定費用,因此您可以編寫查詢,瞭解費用來源。舉例來說,您可以編寫查詢,判斷哪些應用程式寫入的記錄項目最多。如要瞭解如何將可計費的資料量與費用建立關聯,請參閱 Google Cloud Observability 定價頁面的 Cloud Logging 專區。
記錄項目的計費量並非傳送至 Cloud Logging API 的 LogEntry
物件大小,可計費的容量包括序列化和中繼資料所需的位元組。
事前準備
本節說明使用記錄分析前必須完成的步驟。
設定記錄檔 bucket
確認記錄檔 bucket 已升級,可使用記錄檔分析功能:
-
在 Google Cloud 控制台中,前往「Logs Storage」(記錄檔儲存空間) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
- 針對要查詢記錄檢視區塊的每個記錄 bucket,請確認「可使用記錄檔分析」欄顯示「開啟」。如果顯示「升級」,請按一下「升級」並完成對話方塊。
設定 IAM 角色和權限
本節說明使用記錄檔分析功能所需的 IAM 角色或權限:
-
如要取得使用記錄檔分析和查詢記錄檔檢視畫面所需的權限,請要求管理員將專案的下列 IAM 角色授予您:
-
如要查詢
_Required
和_Default
記錄檔值區: 記錄檢視器 (roles/logging.viewer
) -
如要查詢專案中的所有記錄檢視區塊:
「記錄檢視存取者」 (
roles/logging.viewAccessor
)
如要將主體限制為特定記錄檢視畫面,請在專案層級授予記錄檢視畫面存取者角色時新增 IAM 條件,或是在記錄檢視畫面的政策檔案中新增 IAM 繫結。詳情請參閱控管記錄檢視畫面存取權。
您必須具備這些權限,才能在「記錄檔探索器」頁面查看記錄項目。如要瞭解查詢使用者定義值區中的檢視畫面,或查詢
_Default
記錄檔值區的_AllLogs
檢視畫面時,需要哪些其他角色,請參閱「Cloud Logging 角色」。 -
如要查詢
-
如要取得查詢 Analytics 檢視畫面所需的權限,請要求管理員授予您專案的「可觀測性 Analytics 使用者」 (
roles/observability.analyticsUser
) IAM 角色。
查詢範例
本節提供範例查詢,用於分析單一記錄檢視畫面中的資料。如果您將資料儲存在多個記錄檢視區中,且想計算這些檢視區中儲存的資料匯總值,則需要使用 UNION
陳述式。
您可以使用「記錄分析」頁面,或任何可查詢 BigQuery 資料集的位置 (包括 BigQuery Studio 和 Looker Studio 頁面,以及 bq 指令列工具),查詢記錄檔項目。
如要使用查詢範例,請按照下列步驟操作:
「Log Analytics」頁面:將 TABLE_NAME_OF_LOG_VIEW 替換為記錄檢視的名稱。格式為
project_ID.region.bucket_ID.view_ID
。BigQuery 資料集:將 TABLE_NAME_OF_LOG_VIEW 替換為連結資料集中的資料表路徑。
依應用程式查詢記錄量
如要計算每天每個應用程式的記錄項目總位元組數 (這些記錄項目是針對 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
`TABLE_NAME_OF_LOG_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
`TABLE_NAME_OF_LOG_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 `TABLE_NAME_OF_LOG_VIEW`'
這項查詢的結果類似於下列內容:
+----------+---------------+
| log_name | storage_bytes |
+----------+---------------+
| stdout | 716 |
| stdout | 699 |
| stdout | 917 |
| stdout | 704 |
每一列都對應一個記錄項目。storage_bytes
資料欄的值是該記錄項目的可計費量。
限制
只有在符合下列條件時,storage_bytes
欄位才會顯示:
- 記錄檔 bucket 已升級,可使用記錄檔分析。
查詢會在「記錄分析」頁面或任何可查詢 BigQuery 資料集的位置執行,包括「BigQuery Studio」和「Looker Studio」頁面,以及 bq 命令列工具。
記錄項目是在 2024 年 1 月 1 日當天或之後寫入。