您可以在 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
擷取追蹤記錄服務名稱
假設您想編寫查詢來分析追蹤資料,並想顯示或依合成服務名稱分組,Analytics 檢視區的查詢會使用 COALESCE 函式,依序評估運算式清單,並傳回第一個未評估為 NULL 的運算式值,藉此判斷 span 的服務名稱:
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 彙整追蹤記錄和記錄資料
分析應用程式時,您可能需要將記錄和追蹤資料相互關聯。其中一個做法是建立執行聯結的分析檢視表,並選取欄位來產生報表。
下列查詢會使用時距和追蹤記錄 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 because 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。一個分析檢視表可以查詢多個檢視區,但這些檢視區必須位於相同位置。
限制
分析檢視畫面有以下限制:
- 分析檢視區塊只能查詢記錄檢視區塊和可觀測性檢視區塊。
- 分析檢視表區塊的上層資源必須是 Google Cloud 專案。
- 您只能使用「Observability Analytics」頁面查詢分析檢視表,且僅限使用「Observability Analytics (預設)」查詢引擎。
- Analytics 檢視查詢的所有檢視區都必須位於相同位置。
- 您必須使用 Google Cloud 控制台建立或管理 Analytics 檢視畫面。
- 每個專案最多可建立 100 個 Google Cloud Analytics 檢視畫面。
- 每個區域最多可建立 50 個 Analytics 檢視區。
- 每個 Google Cloud 專案最多可有 10 個區域包含分析檢視表。