您可以在 Observability Analytics 中使用 SQL 查詢範例,分析 Cloud Trace 資料、找出延遲時間離群值,以及計算服務的時距效能百分位數。
這些範例說明如何篩選、分組及匯總 _AllSpans 檢視畫面中儲存的範圍。如果您尚未在 Observability Analytics 中編寫查詢,請先參閱「查詢及分析追蹤記錄」。
支援的 SQL 語言
「Observability Analytics」頁面中使用的查詢支援 GoogleSQL 函式,但有部分例外情況。
透過「Observability Analytics」頁面發出的 SQL 查詢,不支援下列 SQL 指令:
- DDL 和 DML 指令
- JavaScript 使用者定義函式
- BigQuery ML 函式
- SQL 變數
只有在透過 BigQuery Studio 和 Looker Studio 頁面,或使用 bq 指令列工具查詢連結的 BigQuery 資料集時,才支援下列項目:
- JavaScript 使用者定義函式
- BigQuery ML 函式
- SQL 變數
最佳做法
如要設定查詢的時間範圍,建議使用時間範圍選取器。舉例來說,如要查看過去一週的資料,請從時間範圍選取器選取「過去 7 天」。你也可以使用時間範圍選取器指定開始和結束時間、指定要查看的時間,以及變更時區。
如果在 WHERE 子句中加入 start_time 欄位,系統就不會使用時間範圍選取器設定。以下範例說明如何依時間戳記篩選:
-- Matches trace spans whose start_time is within the most recent 1 hour. WHERE start_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
如要進一步瞭解如何依時間篩選,請參閱「時間函式」和「時間戳記函式」。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Observability API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Observability API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
如要取得載入「可觀測性分析」頁面、在追蹤資料上撰寫、執行及儲存私人查詢所需的權限,請要求管理員授予您下列 IAM 角色:
- 在要查詢的觀測檢視畫面中,選取「觀測檢視畫面存取者」 (
roles/observability.viewAccessor)。這個角色支援 IAM 條件,可讓您將授權限制在特定檢視區塊。如果未在角色授予作業中附加條件,主體就能存取所有可觀測性檢視畫面。 - 專案的「Observability Analytics User」(觀測能力分析使用者) (
roles/observability.analyticsUser) 權限。這個角色具備儲存及執行私人查詢,以及執行共用查詢所需的權限。
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
- 在要查詢的觀測檢視畫面中,選取「觀測檢視畫面存取者」 (
如何使用這個頁面上的查詢
-
在 Google Cloud 控制台中,前往 manage_search「Observability Analytics」(觀測能力分析) 頁面:
前往「Observability Analytics」(觀測能力分析) 頁面
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
在「查詢」窗格中,按一下 code「SQL」,然後複製查詢並貼到 SQL 查詢窗格。
以下顯示查詢
_AllSpans檢視區塊時,FROM原因的格式:FROM `PROJECT_ID.LOCATION._Trace.Spans._AllSpans`
FROM子句包含下列欄位:- PROJECT_ID:專案的 ID。
- LOCATION:可觀測性 bucket 的位置。
_Trace是可觀測性值區的名稱Spans是資料集名稱。_AllSpans是視圖的名稱。
如要在 BigQuery Studio 頁面使用本文顯示的查詢,或使用 bq 指令列工具,請編輯 FROM 子句,然後輸入連結的 BigQuery 資料集路徑。舉例來說,如要查詢專案 myproject 中名為 my_linked_dataset 的連結 BigQuery 資料集上的 _AllSpans 檢視區塊,路徑為 `myproject.my_linked_dataset._AllSpans`。
常見用途
本節列出幾個常見用途,協助您建立自訂查詢。
顯示所有追蹤記錄資料
如要查詢 _AllSpans 檢視畫面,請執行下列查詢:
-- Display all data.
SELECT *
FROM `PROJECT_ID.LOCATION._Trace.Spans._AllSpans`
-- Limit to 10 entries.
LIMIT 10
顯示常見範圍資訊
如要顯示常見的範圍資訊 (例如開始時間和持續時間),請執行下列查詢:
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.LOCATION._Trace.Spans._AllSpans`
LIMIT 10
詳情請參閱「條件運算式」。
顯示第 50 和第 99 個百分位數的 span 延遲時間
如要顯示每個 RPC 服務的延遲時間第 50 和第 99 個百分位數,請執行下列查詢:
SELECT
-- Compute 50th and 99th percentiles for each service
STRING(attributes['rpc.service']) || '/' || STRING(attributes['rpc.method']) AS rpc_service_method,
APPROX_QUANTILES(duration_nano, 100)[OFFSET(50)] AS duration_nano_p50,
APPROX_QUANTILES(duration_nano, 100)[OFFSET(99)] AS duration_nano_p99
FROM
`PROJECT_ID.LOCATION._Trace.