分析Log4j日志

更新时间:
复制 MD 格式

本文以电商平台的日志为例,介绍Log4j日志的分析操作。

前提条件

  • 已采集Log4j日志。具体操作,请参见采集Log4j日志。

  • 已配置索引。具体操作,请参见创建索引。

    本案例的索引配置如下。索引的指定字段查询中需包含 level、location、message、thread 四个 text 类型字段,并勾选开启统计。

背景信息

例如某电商公司,希望通过分析用户行为习惯数据(例如用户登录方式、上线的时间点及时长、浏览页面、页面停留时间、平均下单时间、消费水平等)、平台稳定性、系统报错、数据安全性等信息获取平台的最佳运营方案。针对此需求,日志服务提供一站式数据采集与分析功能,帮助客户存储并分析日志。

日志服务采集到的日志样例如下。

  • 记录用户登录行为的日志

    level:  INFO  
    location:  com.aliyun.log4jappendertest.Log4jAppenderBizDemo.login(Log4jAppenderBizDemo.java:38)
    message:  User login successfully. requestID=id4 userID=user8  
    thread:  main  
    time:  2022-01-26T15:31+0000
  • 记录用户购买行为的日志

    level:  INFO  
    location:  com.aliyun.log4jappendertest.Log4jAppenderBizDemo.order(Log4jAppenderBizDemo.java:46)
    message:  Place an order successfully. requestID=id44 userID=user8 itemID=item3 amount=9  
    thread:  main  
    time:  2022-01-26T15:31+0000

操作步骤

  1. 登录日志服务控制台。

  2. 在Project列表区域,单击目标Project。

  3. 在日志存储 > 日志库页签中,单击目标Logstore。

  4. 输入查询和分析语句,然后单击最近15分钟,设置查询和分析的时间范围。

    更多信息,请参见步骤一:配置索引。

    • 统计最近1小时发生错误最多的3个位置。

      level: ERROR | select location ,count(*) as count GROUP BY  location  ORDER BY count DESC LIMIT 3
    • 统计最近15分钟各种日志级别的日志条数。

      * | select level ,count(*) as count GROUP BY level ORDER BY count DESC
    • 统计最近1小时登录次数最多的三个用户。

      login | SELECT regexp_extract(message, 'userID=(?<userID>[a-zA-Z\d]+)', 1) AS userID, count(*) as count GROUP BY userID ORDER BY count DESC LIMIT 3
    • 统计最近15分钟每个用户的付款总额。

      order | SELECT regexp_extract(message, 'userID=(?<userID>[a-zA-Z\d]+)', 1) AS userID, sum(cast(regexp_extract(message, 'amount=(?<amount>[a-zA-Z\d]+)', 1) AS double)) AS amount GROUP BY userID