本文以查詢和分析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"