本文說明 Analytics 檢視區,以及建立檢視區的時機。並說明分析檢視畫面與已儲存查詢之間的差異。
總覽
Analytics 檢視區塊是可供查詢的資源。也就是說,定義 Analytics 檢視區後,您可以在 FROM 子句中指定 Analytics 檢視區,然後編寫查詢。
使用 Analytics 檢視畫面最主要的好處,就是您不必受限於 API 或系統定義的資料查詢格式。分析檢視畫面可讓您定義結構定義,簡化查詢或減少撰寫查詢的時間。分析檢視區的查詢可以執行下列動作:只保留特定欄位、重新命名欄位、將巢狀欄位移至頂層資料欄,以及執行分組和彙整作業。
Analytics 資料檢視並非具體化檢視。分析資料檢視不是預先計算的檢視畫面,不會定期快取查詢結果。因此,查詢 Analytics 資料檢視等同於查詢 Analytics 資料檢視查詢中列出的資料檢視。
Analytics 檢視畫面比已儲存的查詢更強大。已儲存的查詢是指您在「記錄檔分析」頁面執行的查詢,然後儲存。您可以重新執行已儲存的查詢,但無法查詢已儲存查詢的結果。
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 個字元,只能包含英文字母、數字、底線和連字號。
如要分析聯播網成效,請查詢 Analytics 檢視畫面。舉例來說,如果您只對執行個體的名稱和傳送的資料量感興趣,可以編寫下列查詢:
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
擷取追蹤記錄服務名稱
假設您想編寫查詢來分析追蹤資料,並顯示或依合成服務名稱分組。Analytics 檢視區的查詢會使用 COALESCE 函式 (依序評估運算式清單,並傳回第一個未評估為 NULL 的運算式值),判斷跨度的服務名稱:
SELECT
start_time,
-- Set the value of service name based on the first non-null value in the list.
COALESCE(
JSON_VALUE(resource.attributes, '$."service.name"'),
JSON_VALUE(attributes, '$."service.name"'),
JSON_VALUE(attributes, '$."g.co/gae/app/module"')) AS service_name,
name AS span_name,
duration_nano,
status.code AS status,
trace_id,
span_id
FROM
`PROJECT_ID.us._Trace.Spans._AllSpans`
LIMIT 10
使用查詢前,請先將 PROJECT_ID 換成專案 ID。Google Cloud
使用追蹤記錄 ID 彙整追蹤記錄和記錄資料
分析應用程式時,您可能需要將記錄和追蹤資料建立關聯。其中一個方法是建立可執行聯結的 Analytics 檢視區,並選取要納入報表的欄位。
下列查詢會使用時距和追蹤記錄 ID,聯結記錄和追蹤記錄資料:
SELECT
T.trace_id,
T.span_id,
T.name,
T.start_time,
T.duration_nano,
L.log_name,
L.severity,
L.json_payload,
L.text_payload,
L.proto_payload,
L.insert_id
FROM
`PROJECT_ID.us._Trace.Spans._AllSpans` AS T
JOIN
`PROJECT_ID.us.BUCKET_ID.LOG_VIEW_ID` AS L
ON
-- Join log and trace data by both the span ID and trace ID.
-- Don't join only on span ID, this field isn't globally unique.
T.span_id = L.span_id
-- A regular expression is required because the storage format of the trace ID
-- differs between a log view and a trace view.
AND T.trace_id = REGEXP_EXTRACT(L.trace, r'/([^/]+)$')
使用查詢前,請先設定下列變數的值:
- PROJECT_ID:專案的 ID。
- BUCKET_ID:記錄 bucket 的名稱或 ID。
- LOG_VIEW_ID:記錄檢視的 ID,最多 100 個字元,只能包含英文字母、數字、底線和連字號。
以這個範例來說,請注意記錄檢視畫面和可觀測性檢視畫面都位於同一個位置 us。一個 Analytics 檢視區可以查詢多個檢視區,但這些檢視區必須位於相同位置。
限制
分析檢視畫面有下列限制:
- 分析檢視區塊只能查詢記錄檢視區塊和可觀測性檢視區塊。
- 分析檢視區塊的上層資源必須是 Google Cloud 專案。
- 您只能使用「記錄檔分析」頁面查詢 Analytics 檢視區,且只能使用「記錄檔分析 (預設)」查詢引擎。
- Analytics 檢視區塊查詢的所有檢視區塊都必須位於相同位置。
- 您必須使用 Google Cloud 控制台建立或管理 Analytics 檢視區。
- 每個專案最多可建立 100 個 Google Cloud 分析資料檢視。
- 每個區域最多可建立 50 個 Analytics 資料檢視。
- 每個 Google Cloud 專案最多可有 10 個區域包含 Analytics 檢視區塊。