繪製 SQL 查詢結果圖表

Observability Analytics 可將 SQL 查詢結果以圖表呈現,方便您找出記錄資料中的模式和趨勢。執行查詢來搜尋及匯總記錄後,您可以在表格中查看結果、將結果轉換為圖表,以及將圖表儲存至資訊主頁。

舉例來說,下圖顯示 12 小時內的記錄項目數量,並依 severity 細分:

圖表示例:按嚴重性細分。

事前準備

本節說明使用 Observability Analytics 前必須完成的步驟。

設定記錄檔 bucket

確認記錄檔 bucket 已升級為使用 Observability Analytics:

  1. 在 Google Cloud 控制台中,前往「Logs Storage」(記錄檔儲存空間) 頁面:

    前往「Logs Storage」(記錄檔儲存空間)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。

  2. 針對要查詢記錄檔檢視表的每個記錄檔 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 角色。

  • 如要取得建立圖表所需的權限,請要求管理員授予您專案的 Monitoring 編輯者 (roles/monitoring.editor) IAM 角色。

選取要製成圖表的資料

如要設定圖表顯示的資料,請使用 SQL 建構查詢。選取「Chart」(圖表) 分頁標籤時,圖表會顯示查詢結果。執行查詢並產生圖表後,您可以變更圖表類型並選取資料欄,自訂圖表來顯示不同資料。

如要以圖表形式查看查詢結果,請按照下列步驟執行查詢:

  1. 在 Google Cloud 控制台中,前往 「Observability Analytics」(觀測能力分析) 頁面:

    前往「Observability Analytics」(觀測能力分析) 頁面

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。

  2. 在「查詢」窗格中輸入查詢,然後點選「執行」。

  3. 查詢完成後,在「Results」(結果) 分頁中,選取查詢結果的查看方式:

    • 表格:僅限表格格式。

    • 圖表:僅限圖表格式。

    • 兩者:圖表和表格格式。

      選取查詢結果的檢視方式後,您可以為所選圖表設定任何欄位,然後將查詢和結果儲存至自訂資訊主頁。如果選取「Table」(表格) 選項,系統會以表格形式儲存。否則,格式為圖表。

      如果是圖表,您可以透過圖表選項選取圖表類型,以及要納入圖表的資料列和資料欄。如要進一步瞭解圖表設定,請參閱「自訂圖表設定」。

自訂圖表設定

您可以變更圖表類型、選取要繪製圖表的維度和測量指標,以及套用細目,藉此自訂圖表設定。維度用於將資料列分組或分類,並代表 X 軸值。「Measure」(測量) 或 Y 軸值是根據 Y 軸繪製的資料序列。

變更圖表類型

您可以根據選取做為維度和測量指標的資料列和資料欄類型,以及資料的視覺化呈現方式,從下列圖表類型中進行選擇。

  • 長條圖 (預設): 長條圖會在兩個軸上繪製資料。如果圖表使用類別或字串做為維度,您可以將長條圖的圖表設定設為水平或垂直,維度和測量軸會互換。

  • 折線圖: 折線圖可用來呈現資料的變化趨勢。使用折線圖時,每個時間序列都會以不同的線條顯示,對應您選取的測量指標。

    如果 X 軸是以時間為基礎,每個資料點都會放在時間間隔的開頭。每個資料點都透過線性內插法連接。

  • 堆疊面積圖: 面積圖是以折線圖為基礎,每條線下方的區域都會加上陰影。在面積圖中,資料序列會堆疊。舉例來說,如果您有兩個相同的系列,則系列會在折線圖中重疊,但陰影區域會在面積圖中堆疊。

  • 圓餅圖或環圈圖:圓餅圖會使用圓形代表整個資料集,並以圓形中的扇形代表資料集中的類別,藉此呈現資料集中的類別與整個資料集的關係。扇形的大小代表該類別占整體的比例,通常以百分比表示。

  • 表格: 表格會為查詢結果中的每一列顯示一列。資料表中的資料欄是由 SELECT 子句定義。如果您打算在資訊主頁上以表格形式顯示資料,請使用 LIMIT 子句,將結果中的資料列數量限制在幾百列以內。

  • 量表或評量表: 量表和評量表會提供最新值,並根據該值與一組門檻的比較結果,顯示綠色、琥珀色或紅色。量表只會顯示最新值的相關資訊,評量表則不同,還能包含過去值的相關資訊。

    只有在查詢結果至少包含一列,且該列包含時間戳記欄和數值資料欄時,量表和評量表才能顯示查詢結果。查詢結果可以包含多個資料列和兩個以上的資料欄。

    如要在查詢中執行時間彙整,請按照下列步驟操作:

    • 設定查詢,依時間間隔匯總資料、依時間戳記遞減排序結果,並限制結果中的資料列數量。您可以使用 LIMIT 子句或日期範圍選取器,限制查詢結果中的資料列數量。

      舉例來說,下列查詢會查詢記錄檢視表,並依小時匯總資料、套用限制,以及排序結果:

      SELECT TIMESTAMP_TRUNC(timestamp, HOUR) AS hour, severity, COUNT(*) AS count
      FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
      WHERE severity IS NOT NULL AND severity = "DEFAULT"
      GROUP BY hour,severity
      ORDER BY hour DESC
      LIMIT 10

      以下說明上述運算式中各欄位的意義:

      • PROJECT_ID:專案 ID。
      • LOCATION:記錄檔檢視表或分析檢視表的位置。
      • BUCKET_ID:記錄檔 bucket 的名稱或 ID。
      • LOG_VIEW_ID:記錄檔檢視畫面的 ID,長度上限為 100 個字元,且只能包含英文字母、數字、底線和連字號。

    • 將「維度」設為與記錄時間單位的資料欄一致。舉例來說,如果查詢依一小時匯總資料,並建立名為 hour 的資料欄,請將「Dimension」(維度) 選單設為 hour。

    • 選取「Disable interval」(停用間隔),因為查詢已指定匯總間隔。在本範例中,這個間隔為一小時。

    • 將「Measure」(測量指標) 設為數值欄,並將函式設為「none」(無)。

    如要讓 Observability Analytics 執行時間彙整,請按照下列步驟操作:

    • 設定日期範圍選取器,這會影響查詢結果中的資料列數量。
    • 將「維度」設為與記錄時間單位的資料欄一致。舉例來說,您可以將這個選單設為 timestamp。
    • 將「Interval」(間隔) 選單設為特定匯總時間間隔。舉例來說,將這個欄位的值設為 1 hour。請勿選取「Automatic interval」。
    • 將「Measure」(測量) 設為數值欄,然後選取「sum」(總和) 等函式。

變更維度和測量指標

您可以選取維度和測量結果欄位,選擇要繪製哪些列和欄。

  • 維度

    維度必須是時間戳記、數字或字串欄。根據預設,維度會設為結構定義中第一個以時間戳記為基礎的資料欄。如果查詢中沒有時間戳記,系統會選取第一個字串資料欄做為維度。您也可以在「Chart display」(圖表顯示) 面板中自訂維度。如果選取時間戳記資料欄做為維度,圖表會顯示資料隨時間變化的情形。如果選取字串資料欄做為長條圖的維度,您可以按照遞增或遞減順序排序資料,這會按照詞彙順序排序維度。您也可以保留「預設」排列順序,根據對應測量指標的值,以遞減順序排序維度。

    根據預設,系統會自動設定時間戳記的間隔,但您也可以選取自訂間隔。自動間隔會根據日期範圍選取器變更值,以維持大小相似的群組。

    您也可以停用間隔,在查詢中指定自己的匯總和日期範圍,進行更複雜的分析。停用間隔會將測量指標的匯總函式設為 none。維度間隔停用時,只能使用數值測量指標。

  • 度量

    您可以在「圖表顯示」面板中選取多個測量指標。選取測量指標時,也必須選取要對分組值執行的匯總函式,例如 count、sum、average 和 percentile-99。舉例來說,count-distinct 會傳回指定資料欄中不重複值的數量。

    如果勾選維度的「停用間隔」核取方塊,則可使用 none 匯總函式選項。如果維度是字串值,系統就不會顯示「停用間隔」核取方塊。不過,如果將測量指標的匯總函式設為 none,也會停用間隔。

新增細目

如要根據其他資料欄將單一資料序列分割成多個資料序列,請新增細目。

選取細目時,請選擇包含少量簡短且有意義標籤的資料欄,例如 region_name。請勿選取可能包含大量字串或長字串的欄位,例如 textPayload。

舉例來說,請參閱下列圖表設定,其中「Dimension」(維度) 欄位設為 type、「Measure」(測量指標) 欄位設為「Count rows」(計算資料列數),「Breakdown」(細目) 欄位設為 severity:

依嚴重程度細分的圖表示例。

在先前的螢幕截圖中,您可以看到堆疊資料序列,其中資源類型 k8s_container 分割成不同的 severity 類型。這可讓您瞭解特定資源產生的各嚴重性類型記錄數量。

將圖表儲存至自訂資訊主頁

系統根據查詢產生圖表後,您可以將圖表儲存至自訂資訊主頁。自訂資訊主頁可讓您使用各種小工具類型,顯示及整理實用資訊。您也可以在這些資訊主頁定義變數,也就是僅套用至特定小工具的資訊主頁層級篩選器。如要將變數套用至小工具,您必須修改查詢。詳情請參閱「將變數套用至小工具」。

如果查詢在 BigQuery 引擎上執行,且查詢的資源不在相同的擁有權邊界內,資訊主頁會針對包含 SQL 查詢的小工具顯示警告訊息。擁有權界線取決於多項因素,其中一項是查詢所用資源的階層。如要避免出現這些警告,請設定 service perimeter。

如要將圖表儲存至資訊主頁,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往 「Observability Analytics」(觀測能力分析) 頁面:

    前往「Observability Analytics」(觀測能力分析) 頁面

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。

  2. 執行查詢來產生圖表,然後按一下「 Save to dashboard」(儲存至資訊主頁)。

  3. 在「Save to dashboard」(儲存至資訊主頁) 對話方塊中,輸入圖表標題,然後選取要儲存圖表的資訊主頁。

  4. 選用:如要查看自訂資訊主頁,請按一下浮動式訊息中的「View dashboard」(查看資訊主頁)。

如要查看自訂資訊主頁清單,其中包含 SQL 查詢生成的圖表,請前往「Save to dashboard」(儲存至資訊主頁) 按鈕,然後點選 「Menu」(選單)。

編輯儲存至自訂資訊主頁的圖表

圖表儲存至資訊主頁後,您仍可進行修改。詳情請參閱「修改小工具設定」。在「Configure widget」對話方塊中,您可以執行下列操作:

  • 變更查詢的資料。
  • 編輯用來生成圖表的查詢。
  • 自訂圖表設定,以視覺化方式呈現不同資料。

限制

  • 如果 Google Cloud 專案位於使用 Assured Workloads 的資料夾中,產生的圖表就無法顯示在自訂資訊主頁上。

  • 資訊主頁層級篩選器不適用於透過 SQL 查詢生成的圖表。

  • 選取的資料欄至少須有一列含有非空值。

  • 如果您儲存查詢並自訂圖表設定,系統不會儲存自訂圖表設定。

  • 如果查詢已有匯總函式,Observability Analytics 會自動套用額外的匯總函式,因此生成的圖表可能會不同。

  • JSON 路徑必須轉換為字串或數字,才能繪製圖表。

查詢範例

本節提供 SQL 查詢範例,可用來繪製查詢結果圖表。如要從記錄中取得更多實用洞察資料,請自訂圖表設定。如要使用查詢範例,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往 「Observability Analytics」(觀測能力分析) 頁面:

    前往「Observability Analytics」(觀測能力分析) 頁面

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。

  2. 找出要查詢的記錄檢視表名稱。

    如要找出這個名稱,請前往「Log views」(記錄檔檢視表) 清單,找出記錄檔檢視表,然後選取「Query」(查詢)。「Query」(查詢) 窗格會填入預設查詢,其中包含查詢的記錄檢視表資料表名稱。資料表名稱的格式為 project_ID.region.bucket_ID.view_ID。

    如要進一步瞭解如何存取預設查詢,請參閱「查詢記錄檢視表」。

  3. 將 VIEW 替換為要查詢的記錄檢視表資料表名稱,然後複製查詢。

  4. 在「查詢」窗格中貼上查詢,然後點選「執行查詢」。

依位置和嚴重程度繪製記錄項目圖表

下列查詢會選取 location 和 severity,並將位置轉換為字串:

SELECT
  CAST(JSON_VALUE(resource.labels.location) AS STRING) AS location,
  severity,
FROM
  `VIEW`
WHERE resource.labels.location IS NOT NULL

圖表和圖表設定範例如下:

範例圖表,依位置和嚴重性繪製記錄項目。

在上一張螢幕截圖中,圖表設定包含下列圖表設定:

  • 圖表類型:長條圖 (橫式)
  • 維度:location,上限為 10
  • 測量:資料列的計數
  • Breakdown:severity,最多五個

以圖表呈現 BigQuery 資料存取稽核記錄

下列查詢會篩選 BigQuery data_access 稽核記錄,並選取特定欄位,例如 user_email、ip、auth_permission 和 job_execution_project。舉例來說,您可以建立圖表,以視覺化方式呈現各主體在一段時間內的 BigQuery API 使用頻率。

SELECT
  timestamp,
  proto_payload.audit_log.authentication_info.principal_email as user_email,
  proto_payload.audit_log.request_metadata.caller_ip as ip,
  auth.permission as auth_permission,
  auth.granted as auth_granted,
  JSON_VALUE(data_access.resource.labels.project_id) AS job_execution_project,
  SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(1)] AS referenced_project,
  SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(3)] AS referenced_dataset,
  SPLIT(proto_payload.audit_log.resource_name, '/')[SAFE_OFFSET(5)] AS referenced_table
FROM `VIEW` as data_access,
  UNNEST(proto_payload.audit_log.authorization_info) AS auth
WHERE
  log_id="cloudaudit.googleapis.com/data_access"
  AND data_access.resource.type = 'bigquery_dataset'

圖表和圖表設定範例如下:

BigQuery 資料存取稽核記錄的圖表示例

在上述螢幕截圖中,圖表設定包含下列圖表設定:

  • 圖表類型:長條圖,垂直
  • 維度:user_email,最多五個
  • 測量:資料列的計數
  • Breakdown:auth_permission,最多五個

後續步驟