赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 数据加工
  6. 数据加工(新版)
  7. 最佳实践
  8. 文本解析
  9. 解析Java报错日志

解析Java报错日志

  • 文本解析
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

在大数据、高并发场景下的Java应用中,分析Java报错日志并提供运维指导,可降低运营维护成本。日志服务支持采集各云产品的Java报错日志,本文介绍使用新版数据加工解析Java报错日志。

前提条件

已采集各SLS、OSS、SLB、RDS的Java错误日志到cloud_product_error_log的Logstore。具体操作,请参见Logtail采集日志。

场景描述

某企业基于阿里云OSS、SLS等产品开发Java应用A过程中,在华东1(杭州)地域创建了名为cloud_product_erro_log的Logstore,用于存储调用各云产品接口发生的Java报错日志。该企业需要使用日志服务定期分析调用接口发生的Java报错日志,便于制定Java报错处理措施。

为实现以上需求,您需要解析日志中的时间、错误码、状态码、产品信息、错误码信息、请求方法和出错行号,存储到各产品的Logstore中,用于错误日志分析。

原始日志样例如下:

__source__:192.0.2.10
__tag__:__client_ip__:203.0.113.10
__tag__:__receive_time__:1591957901
__topic__:
message: 2021-05-15 16:43:35 ParameterInvalid 400
com.aliyun.openservices.log.exception.LogException:The body is not valid json string.
   at com.aliyun.openservice.log.Client.ErrorCheck(Client.java:2161)
   at com.aliyun.openservice.log.Client.SendData(Client.java:2312)
   at com.aliyun.openservice.log.Client.PullLogsk(Client.java:1397)
   at com.aliyun.openservice.log.Client.SendData(Client.java:2265)
   at com.aliyun.openservice.log.Client.GetCursor(Client.java:1123)
   at com.aliyun.openservice.log.Client.PullLogs(Client.java:2161)
   at com.aliyun.openservice.log.Client.ErrorCheck(Client.java:2426)
   at transformEvent.main(transformEvent.java:2559)

总体流程

通过Logtail采集应用A的报错日志到目标Logstore中,然后再经过SPL后投递到各自云产品的Logstore中,最后对各个产品的错误日志做分析。总体流程如下:

  1. 设计SPL语句:数据加工分析,编写SPL语句​。

  2. 创建数据加工任务:根据云产品不同,将日志分发至不同云产品的错误分析Logstore中。

  3. 查询和分析数据:在各云产品的错误分析Logstore中进行日志分析。

步骤一:设计SPL语句

SPL流程

为便于错误日志分析,需要:

  1. 提取message字段中的时间、错误码、状态码、产品信息、错误码信息、请求方法和出错行号。

  2. 将错误日志存储到各产品的Logstore。

etl-needs

SPL逻辑分析​

分析原始日志字段中的时间、错误码、状态码、产品信息、错误码信息、请求方法和出错行号,为提取每种字段设计正则表达式。etl_logic

语法详解​

  1. 使用regexp_like函数匹配出此条日志中是否有LogException,如果匹配上,则按照解析SLS错误日志的规则进行处理。如果匹配上OSSException,则按照解析OSS错误日志的规则进行处理。更多信息,请参见where。

  2. 使用parse-regexp正则解析函数解析相应的错误日志。

  3. 使用project-away删除原字段message信息。SPL语法分析以使用正则表达式解析SLS错误日志为例,具体如下:

    .let a = * | where regexp_like(message, '.*LogException.*') | parse-regexp message,'(\S+\s\S+)\s([a-zA-Z]+)\s([0-9]+)\scom\.aliyun\.openservices\.log\.exception\.([a-zA-Z]+)\:([a-zA-Z0-9:,\-\s]+)\.\s+(\S+\s+\S+\s+){6}\S+\s+com\.aliyun\.openservices\.log\.Client\.([a-zA-Z]+)\S+\s+\S+\s+transformEvent\.main\(transformEvent\.java\:([0-9]+)\)' as data_time,error_code,status,product_exception,error_message,temp,method,error_line | project-away message,temp;
    .let b = * | where regexp_like(message, '.*OSSException.*') | parse-regexp message,'(\S+\s\S+)\s+com\.aliyun\.oss\.([a-zA-Z]+)\:([a-zA-Z0-9,\s]+)\.\s+\[ErrorCode\]\:\s+([a-zA-Z]+)\s+\[RequestId\]\:\s([a-zA-Z0-9]+)\s+\[HostId\]\:\s+(\S+)\s+com\.aliyun\.oss\.OSSClient\.([a-zA-Z]+)\s+transformEvent\.main\(transformEvent\.java:([0-9]+)\)' as data_time,product_exception,error_message,error_code,request_id,host_id,method,error_line| project-away message;
    $a;
    $b;

    处理后结果a示例:

    __source__:192.*.*.*
    __tag__:__client_ip__:203.*.*.*
    __tag__:__receive_time__:1591957901
    __topic__:
    data_time:2021-05-15 16:43:35
    error_code:ParameterInvalid
    error_line:2559
    error_message:The body is not valid json string
    method:ErrorCheck
    product_exception:LogException
    status:400

    处理后结果b示例:

    __source__:192.*.*.*
    __tag__:__client_ip__:203.*.*.*
    __tag__:__receive_time__:1591957988
    __topic__:
    data_time:2020-05-16 18:30:06
    error_code:AccessDenied
    error_line:399
    error_message:You are forbidden to list buckets
    host_id:wwduhdw-cn-hangzhou.aliyuncs.com
    method:getBucket
    product_exception:OSSException
    request_id:YGYLQJLSLNUS2US1131DSQKW

步骤二:创建数据加工任务

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

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

    image

  3. 在日志存储 > 日志库页签中,单击目标Logstore,鼠标悬浮在数据处理 > 加工上,然后单击image进行添加。

    image

  4. 请确保在原始日志页签中有日志,然后单击加入测试数据。

    image

  5. 在测试数据页签下,查看刚刚加入的测试数据。

    image

  6. 在编辑框中,输入如下数据加工语句。然后单击调试SPL,在加工结果页签,可以预览解析之后的结果,结果集a解析SLS错误日志,结果集b解析OSS错误日志。

    .let a = * | where regexp_like(message, '.*LogException.*') | parse-regexp message,'(\S+\s\S+)\s([a-zA-Z]+)\s([0-9]+)\scom\.aliyun\.openservices\.log\.exception\.([a-zA-Z]+)\:([a-zA-Z0-9:,\-\s]+)\.\s+(\S+\s+\S+\s+){6}\S+\s+com\.aliyun\.openservices\.log\.Client\.([a-zA-Z]+)\S+\s+\S+\s+transformEvent\.main\(transformEvent\.java\:([0-9]+)\)' as data_time,error_code,status,product_exception,error_message,temp,method,error_line | project-away message,temp;
    .let b = * | where regexp_like(message, '.*OSSException.*') | parse-regexp message,'(\S+\s\S+)\s+com\.aliyun\.oss\.([a-zA-Z]+)\:([a-zA-Z0-9,\s]+)\.\s+\[ErrorCode\]\:\s+([a-zA-Z]+)\s+\[RequestId\]\:\s([a-zA-Z0-9]+)\s+\[HostId\]\:\s+(\S+)\s+com\.aliyun\.oss\.OSSClient\.([a-zA-Z]+)\s+transformEvent\.main\(transformEvent\.java:([0-9]+)\)' as data_time,product_exception,error_message,error_code,request_id,host_id,method,error_line| project-away message;
    $a;
    $b;

    image

  7. 单击保存数据加工(新版),在创建数据加工(新版)面板,如果保存SLS错误日志,选择结果集a。如果保存OSS错误日志,选择字结果集b。更多信息,请参见参数说明。

    image

步骤三:查看处理后结果

进入到您在数据加工任务配置的保存结果集a的目标库中,查看SLS错误日志。在目标库中,您可以通过查询语法对日志进行分析。

image

相关文章

解析CSV格式日志 2025-04-22 10:55

本文档介绍正常形式的CVS格式日志和非正常形式的CVS格式日志如何解析。 正常形式的CSV格式日志

使用SPL的正则表达式解析Nginx日志 2025-04-22 10:55

Nginx访问日志记录了用户访问的详细信息,解析Nginx访问日志对业务运维具有重要意义。本文介绍如何使用正则表达式函数解析Nginx访问日志。 日志服务支持通过SPL的正则表达式解析Nginx日志。现以一条Nginx成功访问日志为例,介绍如何使用正则表达式解析Nginx成功访问日志。

解析Java报错日志 2025-04-22 10:55

在大数据、高并发场景下的Java应用中,分析Java报错日志并提供运维指导,可降低运营维护成本。日志服务支持采集各云产品的Java报错日志,本文介绍使用新版数据加工解析Java报错日志。 前提条件 已采集各SLS、OSS、SLB、RDS的Java错误日志到cloud_product_error_lo

提取字符串动态键值对 2025-04-22 10:55

本文档介绍如何使用SPL语句提取字符串键值对。 关键字提取 字符串动态键值对提取分为关键字提取、值提取、关键字加工和值加工。常用方案为采用parse-kv指令。以k1:

解析复杂日志中的字段 2025-04-22 10:55

本文档主要为您介绍如何使用日志服务的数据加工功能,从复杂字符串中解析出JSON对象。 从复杂字符串中解析出JSON对象,并展开特定字段

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号