全部產品
Search
文件中心

Simple Log Service:查詢和分析JSON日誌

更新時間:Jun 30, 2024

本文以查詢和分析JSON類型的網站日誌為例,為您介紹查詢和分析JSON日誌的步驟,並提供SQL語句樣本。

前提條件

已採集JSON日誌。具體操作,請參見使用極簡模式採集日誌

步驟一:建立索引

  1. 登入Log Service控制台

  2. 在Project列表地區,單擊目標Project。

    image

  3. 在控制台左側,單擊日誌儲存,在日誌庫列表中單擊目標Logstore。

    image

  4. 在Logstore的查詢和分析頁面的右上方,選擇查詢分析屬性 > 屬性。如果還未建立索引,需要先單擊開啟索引。全文索引和欄位索引的更多資訊、建立索引的詳細步驟,請參見建立索引

    說明

    如果需要查詢日誌中的所有欄位,建議使用全文索引。如果只需查詢部分欄位、建議使用欄位索引,減少索引流量。如果需要對欄位進行分析(SELECT語句),必須建立欄位索引。

  5. 配置欄位索引。以下是JSON格式的日誌樣本和對應欄位的配置。

    日誌範例

    配置索引

    • __topic____source____tag__是系統的保留欄位,更多資訊請參見保留欄位

    • @timestampremote_addrremote_userhttp_refererhttp_user_agentstatusserver_protocalhttp_x_forward_forupstream_addr欄位不包含葉子節點,可以在content欄位下直接建立索引。

    • requesttime欄位包含葉子節點,而且葉子節點不是JSON數組。

      • 不能為requesttime這兩個父欄位本身建立索引,也不能查詢分析這兩個父欄位。

      • 可以為requesttime下的葉子節點建立索引,需要指定完整的路徑,從最外層的父欄位到最內層的葉子節點。格式為KEY1.KEY2.KEY3,例如time.request_timetime.upstream_response_time。建立索引後,可以查詢time.request_timetime.upstream_response_time欄位。

    • body_bytes_sent欄位的值為JSON數組,不能建立索引,也不能為葉子節點建立索引。不能查詢分析body_bytes_sent欄位或body_bytes_sent的葉子節點。

步驟二:重建索引

配置索引後,只對新採集的資料生效。如果您要查詢歷史資料,請使用重建索引功能。具體操作,請參見重建索引

步驟三:查詢和分析日誌

您可以在Logstore的查詢和分析頁面,輸入查詢和分析語句,選擇時間範圍,進行日誌查詢操作。對於分析語句(SELECT語句),必須使用雙引號("")包裹欄位名稱,使用單引號('')包裹字串。查詢和分析日誌的詳細步驟,請參見查詢和分析日誌。查詢分析JSON日誌的常見問題,請參見查詢和分析JSON日誌的常見問題

  • 查詢請求狀態為200的日誌。

    content.status:200
  • 查詢請求長度大於70的日誌。

    content.request.request_length > 70
  • 查詢GET請求的日誌。

    content.request.request_method:GET
  • 統計不同請求狀態對應的日誌數量。

    * | SELECT "content.status", COUNT(*) AS PV GROUP BY "content.status"

    PV

  • 計算不同請求時間長度對應的請求數量,並按照請求時間長度進行升序排序。

    * | SELECT "content.time.request_time", COUNT(*) AS count GROUP BY "content.time.request_time" ORDER BY "content.time.request_time"

    請求時間長度

  • 計算不同要求方法對應的平均請求時間長度。

    * | SELECT avg("content.time.request_time") AS avg_time,"content.request.request_method"  GROUP BY "content.request.request_method"

    平均請求時間長度

相關文檔