查询和分析JSON日志

本文以查询和分析JSON类型的网站日志为例,为您介绍查询和分析JSON日志的步骤,并提供SQL语句示例。

前提条件

已采集JSON日志。具体操作,请参见使用极简模式采集日志

步骤一:创建索引

  1. 登录日志服务控制台

  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"

    平均请求时长

相关文档