本文以 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"
相关文档