本文以查詢和分析JSON類型的網站日誌為例,為您介紹查詢和分析JSON日誌的步驟,並提供SQL語句樣本。
前提條件
已採集JSON日誌。具體操作,請參見使用極簡模式採集日誌。
步驟一:建立索引
在Project列表地區,單擊目標Project。
在控制台左側,單擊日誌儲存,在日誌庫列表中單擊目標Logstore。
在Logstore的查詢和分析頁面的右上方,選擇建立索引。
。如果還未建立索引,需要先單擊開啟索引。全文索引和欄位索引的更多資訊、建立索引的詳細步驟,請參見說明如果需要查詢日誌中的所有欄位,建議使用全文索引。如果只需查詢部分欄位、建議使用欄位索引,減少索引流量。如果需要對欄位進行分析(SELECT語句),必須建立欄位索引。
配置欄位索引。以下是JSON格式的日誌樣本和對應欄位的配置。
__topic__
、__source__
、__tag__
是系統的保留欄位,更多資訊請參見保留欄位。@timestamp
、remote_addr
、remote_user
、http_referer
、http_user_agent
、status
、server_protocal
、http_x_forward_for
、upstream_addr
欄位不包含葉子節點,可以在content
欄位下直接建立索引。request
、time
欄位包含葉子節點,而且葉子節點不是JSON數組。不能為
request
、time
這兩個父欄位本身建立索引,也不能查詢分析這兩個父欄位。可以為
request
、time
下的葉子節點建立索引,需要指定完整的路徑,從最外層的父欄位到最內層的葉子節點。格式為KEY1.KEY2.KEY3
,例如time.request_time
、time.upstream_response_time
。建立索引後,可以查詢time.request_time
、time.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"
計算不同請求時間長度對應的請求數量,並按照請求時間長度進行升序排序。
* | 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"