您可以在 Observability Analytics 中使用 Analytics 檢視畫面,針對可觀測性資料定義含有自訂結構定義的 SQL 查詢,簡化及重複使用複雜的轉換作業。您只能重新執行已儲存的查詢,但可以在其他 SQL 查詢的 FROM 子句中,將分析檢視表做為資料來源。
總覽
分析檢視表是可供查詢的資源。也就是說,定義分析檢視表後,您可以在 FROM 子句中指定分析檢視表,然後撰寫查詢。
使用 Analytics 檢視畫面最主要的好處是,您不必受限於 API 或系統定義的格式,分析檢視畫面可讓您定義結構定義,簡化查詢或減少撰寫查詢的時間。分析檢視表中的查詢可以執行下列動作:只保留特定欄位、重新命名欄位、將巢狀欄位移至頂層資料欄,以及執行分組和彙整。
Analytics 資料檢視不是具體化檢視表。分析檢視表並非預先計算的檢視畫面,不會定期快取查詢結果。因此,查詢分析檢視表等同於查詢分析檢視表查詢中列出的檢視區。
Analytics 檢視畫面比已儲存的查詢更強大。已儲存的查詢是指您在「Observability Analytics」頁面執行的查詢,然後儲存。您可以重新執行已儲存的查詢,但無法查詢已儲存查詢的結果。
資料檢視類型
分析檢視畫面分為兩種:使用者定義和系統定義:
使用者定義的 Analytics 檢視畫面:您建立的任何 Analytics 檢視畫面。您可以查詢、編輯及刪除使用者定義的 Analytics 檢視畫面。
系統定義的數據分析檢視畫面是由Google Cloud 服務建立的數據分析檢視畫面。您可以查詢系統定義的 Analytics 檢視畫面。但無法編輯或刪除。
如要瞭解如何在Google Cloud 專案中列出 Analytics 資料檢視,請參閱「列出 Analytics 資料檢視」。
數據分析檢視畫面位置
資料分析檢視表的位置取決於所查詢資源的位置。舉例來說,如果分析檢視表查詢 global 位置的記錄檢視區,則分析檢視表的位置也必須是 global。使用 Google Cloud 控制台建立分析檢視表時,系統會自動設定位置。
應用實例
下列範例說明如何使用 Analytics 檢視區塊簡化及重複使用查詢。
查詢網路詳細資料
您想使用虛擬私有雲流量記錄分析網路效能。您需要分析整體網路效能,並找出特定網路、IP 位址和主機。這項資訊會儲存在記錄項目的 json_payload 欄位中,位於巢狀欄位內。
為簡化分析查詢,請建立下列分析檢視表並命名為 network_details:
SELECT
-- Create a column for each network field.
JSON_VALUE(resource.labels.subnetwork_name) subnetwork_name,
JSON_VALUE(json_payload.src_instance.vm_name) vm_name,
JSON_VALUE(json_payload.connection.src_ip) as src_ip,
JSON_VALUE(json_payload.connection.src_port) as src_port,
JSON_VALUE(json_payload.connection.dest_ip) as dest_ip,
JSON_VALUE(json_payload.connection.dest_port) as dest_port,
CAST(JSON_VALUE(json_payload.bytes_sent) as INT64) as bytes_sent,
CAST(JSON_VALUE(json_payload.packets_sent) as INT64) as packets_sent
FROM
-- Query one log view.
`PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
WHERE
-- Only query the VPC Flow Logs log.
log_id = "compute.googleapis.com/vpc_flows"
AND SEARCH(json_payload.reporter, "SRC")
使用查詢前,請先設定下列變數的值:
- PROJECT_ID:專案的 ID。
- LOCATION:記錄檢視畫面所在位置。
- BUCKET_ID:記錄檔 bucket 的名稱或 ID。
- LOG_VIEW_ID:記錄檢視的 ID,最多 100 個字元,只能包含英文字母、數字、底線和連字號。
如要分析聯播網效能,請查詢分析檢視表。舉例來說,如果您只對執行個體的名稱和傳送的資料量感興趣,可以編寫下列查詢:
SELECT vm_name, bytes_sent, packets_sent,
FROM `analytics_view.my_project.global.network_details`
ORDER BY bytes_sent DESC
LIMIT 100
API 延遲分析的基本查詢
多個團隊需要每週的成效資料,才能完成分析。您不必讓每個團隊產生每週資料,而是建立可擷取每週資料的分析檢視畫面。其他團隊可以查詢分析檢視表,然後執行分析。
下列查詢說明如何使用 SQL 計算要求延遲時間的最小值、最大值和平均值:
SELECT week, MIN(took_ms) as min, MAX(took_ms) AS max, AVG(took_ms) AS avg
FROM (
SELECT TIMESTAMP_TRUNC(timestamp, WEEK) AS week,
CAST( JSON_VALUE(json_payload, '$."http.resp.took_ms"') AS INT64) as took_ms
FROM
-- Query one log view.
`PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
WHERE json_payload IS NOT NULL
AND SEARCH(labels,"frontend")
AND JSON_VALUE(json_payload.message) = "request complete"
ORDER BY took_ms DESC, timestamp ASC
)
GROUP BY week ORDER BY week
限制
分析檢視畫面有以下限制:
- 分析檢視表只能查詢記錄檢視區塊。
- 分析檢視表區塊的上層資源必須是 Google Cloud 專案。
- 您只能使用「Observability Analytics」頁面查詢分析檢視表,且僅限使用「Observability Analytics (預設)」查詢引擎。
- Analytics 檢視查詢的所有檢視區都必須位於相同位置。
- 您必須使用 Google Cloud 控制台建立或管理 Analytics 檢視畫面。
- 每個專案最多可建立 100 個 Google Cloud Analytics 檢視畫面。
- 每個區域最多可建立 50 個 Analytics 檢視區。
- 每個 Google Cloud 專案最多可有 10 個區域包含分析檢視表。