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:
-
在 Google Cloud 控制台中,前往「Logs Storage」(記錄檔儲存空間) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
- 針對要查詢記錄檔檢視表的每個記錄檔 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 指令列工具),查詢記錄項目。
如要使用查詢範例,請按照下列步驟操作:
「Observability Analytics」頁面:將 VIEW 替換為記錄檢視表的名稱。格式為
project_ID.region.bucket_ID.view_ID。BigQuery 資料集:將 VIEW 替換為連結 BigQuery 資料集中的資料表路徑。
依應用程式查詢記錄量
如要計算寫入 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 日當天或之後寫入。