详情页标题前

阿里云日志服务SLS解析Java报错日志-云淘科技

详情页1

在大数据、高并发场景下的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的报错日志到名称为cloud_product_error_log的Logstore中,然后再经过数据加工后投递到各自产品的Logstore中,最后对各个产品的错误日志做分析。总体流程如下:阿里云日志服务SLS解析Java报错日志-云淘科技

  1. 设计数据加工语句:数据加工分析,编写数据加工语句。
  2. 创建数据加工任务:根据产品不同,将日志分发至不同产品的错误分析Logstore。
  3. 查询和分析数据:在各产品的错误分析Logstore中进行日志分析。

步骤一:设计数据加工语句

加工流程

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

  1. 提取message字段中的时间、错误码、状态码、产品信息、错误码信息、请求方法和出错行号。
  2. 将错误日志存储到各产品的Logstore。

阿里云日志服务SLS解析Java报错日志-云淘科技

加工逻辑分析

分析原始日志字段中的时间、错误码、状态码、产品信息、错误码信息、请求方法和出错行号,为提取每种字段设计正则表达式。阿里云日志服务SLS解析Java报错日志-云淘科技

语法详解

  1. 使用regex_match函数匹配出此条日志中是否有LogException。更多信息,请参见regex_match。
  2. 如果匹配上则按照解析SLS错误日志的规则进行处理;如果匹配上OSSException则按照解析OSS错误日志的规则进行处理。更多信息,请参见e_switch。
  3. 使用e_regex正则解析函数解析相应的错误日志。更多信息,请参见e_regex。
  4. 删除原字段message信息,并投递到相应产品的Logstore。更多信息,请参见e_drop_fields和e_output、e_coutput。
  5. 更多信息,请参见正则表达式-分组。

加工语法分析

以使用正则表达式解析SLS错误日志为例,具体如下:阿里云日志服务SLS解析Java报错日志-云淘科技具体的加工语法为:

e_switch(
    regex_match(v("message"), r"LogException"),
    e_compose(
        e_regex(
            "message",
            "(?P\S+\s\S+)\s(?P[a-zA-Z]+)\s(?P[0-9]+)\scom\.aliyun\.openservices\.log\.exception\.(?P[a-zA-Z]+)\:(?P[a-zA-Z0-9:,\-\s]+)\.(\s+\S+\s\S+){5}\s+\S+\scom\.aliyun\.openservices\.log\.Client\.(?P[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java\:(?P[0-9]+)\)",
        ),
        e_drop_fields("message"),
        e_output("sls-error"),
    ),
    regex_match(v("message"), r"OSSException"),
    e_compose(
        e_regex(
            "message",
            "(?P\S+\s\S+)\scom\.aliyun\.oss\.(?P[a-zA-Z]+)\:(?P[a-zA-Z0-9,\s]+)\.
\[ErrorCode\]\:\s(?P[a-zA-Z]+)
\[RequestId\]\:\s(?P[a-zA-Z0-9]+)
\[HostId\]\:\s(?P[a-zA-Z-.]+)
\S+
\S+(\s\S+){3}
\s+\S+\s+(.+)(\s+\S+){24}\scom\.aliyun\.oss\.OSSClient\.(?P[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java:(?P[0-9]+)\)",
        ),
        e_drop_fields("message"),
        e_output("oss-error"),
    ),
)

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

  1. 进入数据加工页面。
    1. 在Project列表区域,单击目标Project。
    2. 在日志存储 > 日志库页签中,单击目标Logstore。
    3. 在查询和分析页面,单击数据加工。
  2. 在页面右上角,选择数据的时间范围。请确保在原始日志页签中有Log。
  3. 在编辑框中,输入数据加工语句。
    e_switch(
        regex_match(v("message"), r"LogException"),
        e_compose(
            e_regex(
                "message",
                "(?P\S+\s\S+)\s(?P[a-zA-Z]+)\s(?P[0-9]+)\scom\.aliyun\.openservices\.log\.exception\.(?P[a-zA-Z]+)\:(?P[a-zA-Z0-9:,\-\s]+)\.(\s+\S+\s\S+){5}\s+\S+\scom\.aliyun\.openservices\.log\.Client\.(?P[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java\:(?P[0-9]+)\)",
            ),
            e_drop_fields("message"),
            e_output("sls-error"),
        ),
        regex_match(v("message"), r"OSSException"),
        e_compose(
            e_regex(
                "message",
                "(?P\S+\s\S+)\scom\.aliyun\.oss\.(?P[a-zA-Z]+)\:(?P[a-zA-Z0-9,\s]+)\.
    \[ErrorCode\]\:\s(?P[a-zA-Z]+)
    \[RequestId\]\:\s(?P[a-zA-Z0-9]+)
    \[HostId\]\:\s(?P[a-zA-Z-.]+)
    \S+
    \S+(\s\S+){3}
    \s+\S+\s+(.+)(\s+\S+){24}\scom\.aliyun\.oss\.OSSClient\.(?P[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java:(?P[0-9]+)\)",
            ),
            e_drop_fields("message"),
            e_output("oss-error"),
        ),
    )
  4. 单击预览数据。阿里云日志服务SLS解析Java报错日志-云淘科技
  5. 创建数据加工任务。
    1. 单击保存数据加工。
    2. 在创建数据加工任务面板,配置如下信息,然后单击确定。
      参数 说明
      规则名称 数据加工规则的名称。例如test。
      授权方式 选择默认角色读取源Logstore数据。
      存储目标
      目标名称 存储目标的名称。例如sls-error和oss-error。
      目标Region 选择目标Project所在地域。例如华东1(杭州)。
      目标Project 用于存储数据加工结果的目标Project名称。
      目标库 用于存储数据加工结果的目标Logstore名称。例如sls-error和oss-error。
      授权方式 选择择默认角色将数据加工结果写入目标日志库。
      加工范围
      时间范围 时间范围选择所有。

    创建数据加工任务后,日志服务默认为每个加工任务创建一个仪表盘,您可以在仪表盘中查看数据加工任务运行指标。阿里云日志服务SLS解析Java报错日志-云淘科技通过异常详情图表,可以查到具体哪一条日志没有解析出来,然后再调整正则表达式。

    • 如果解析Log失败,上报WARNING级别日志。该类报错不会影响到整个加工任务继续执行。
    • 如果上报ERROR级别日志,则会影响到整个加工任务的继续执行。需要逐步查找定位问题,并修改正则表达式,直到加工任务能够成功解析各个不同类型的错误日志。

步骤三:分析错误日志数据

基于加工后的错误日志,可以进行错误日志数据分析。本文只对日志服务的Java错误日志做分析。

  1. 在Project列表区域,单击目标Project。
  2. 在日志存储 > 日志库页签中,单击目标Logstore。
  3. 在搜索框中输入查询和分析语句。
    • 统计每个调用方法出现错误的数量。
      * | SELECT COUNT(method) as m_ct, method GROUP BY method
    • 统计PutLogs中哪一类的错误信息占比最大。
      * | SELECT error_message,COUNT(error_message) as ct_msg, method WHERE method LIKE 'PutLogs' GROUP BY error_message,method
    • 统计各个错误码出现的错误次数。
      * | SELECT error_code,COUNT(error_code) as count_code GROUP BY error_code
    • 设置报错时间轴,实时查看调用接口错误信息。
      * | SELECT date_format(data_time, '%Y-%m-%d %H:%m:%s') as date_time,status,product_exception,error_line, error_message,method ORDER BY date_time desc
  4. 单击15分钟(相对),设置查询分析的时间范围。您可以设置相对时间、整点时间和自定义时间。 说明 查询结果有1 min以内的误差。
  5. 单击查询/分析,查看查询分析结果。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/163468.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云人工智能平台PAITableWriter API-云淘科技

    您可以使用TableWriter API对MaxCompute表进行读写。 读写MaxCompute表的功能由tensorflow.python_io.TableWriter提供,可以在TensorFlow的Graph执行逻辑以外,直接对MaxCompute表进行操作。 说明 PAI-TF作业执行过程中,写入MaxCompute表的数据,必须在作业正常结束以…

    阿里云人工智能平台PAI 2023年12月10日
  • 阿里云日志服务SLS采集Docker事件-云淘科技

    Docker事件信息记录了容器、镜像、插件、网络、存储等所有交互事件。本文介绍如何通过日志服务控制台创建Logtail采集配置采集Docker事件。 前提条件 已在服务器上安装Linux Logtail 0.16.18及以上版本。具体操作,请参见安装Logtail(Linux系统)。 限制说明Logtail可运行在容器模式或宿主机上,需具备访问Docker的…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云负载均衡设置A记录域名解析-云淘科技

    传统型负载均衡支持将域名解析到CLB实例的公网服务地址上。 背景信息 例如,您网站的域名为www.aliyun.com。创建CLB实例后,系统分配的CLB实例的公网IP地址为198.51.XX.XX。您需要将ECS实例添加到CLB实例的后端服务器组,并将域名www.aliyun.com解析到198.51.XX.XX。建议您使用“A记录解析”(即将域名解析到一…

    阿里云负载均衡 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云云原生大数据计算服务 MaxComputePyODPS概述-云淘科技

    PyODPS是MaxCompute的Python版本的SDK。提供简单方便的Python编程接口,以便您使用Python编写MaxCompute作业、查询MaxCompute表和视图,以及管理MaxCompute资源。PyODPS提供了与ODPS命令行工具类似的功能,例如上传和下载文件、创建表、运行ODPS SQL查询等,同时提供了一些高级功能,如提交Map…

  • 阿里云日志服务SLS结果字段说明-云淘科技

    智能异常分析的结果数据保存在名为internal-ml-log的Logstore中。本文介绍结果数据中的字段详情。 通用的tag结构说明 各类任务的结果数据中都包含如下通用字段。说明 您可以通过__tag__:__job_name__和__tag__:__schedule_id__字段,查询对应任务的结果数据。 __tag__:__apply_time__:…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。