日志处理方法和装置.pdf

上传人:宁*** 文档编号:10928289 上传时间:2021-08-27 格式:PDF 页数:29 大小:1.30MB
收藏 版权申诉 举报 下载
日志处理方法和装置.pdf_第1页
第1页 / 共29页
日志处理方法和装置.pdf_第2页
第2页 / 共29页
日志处理方法和装置.pdf_第3页
第3页 / 共29页
文档描述:

《日志处理方法和装置.pdf》由会员分享,可在线阅读,更多相关《日志处理方法和装置.pdf(29页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910843010.4 (22)申请日 2019.09.06 (71)申请人 华为技术有限公司 地址 518129 广东省深圳市龙岗区坂田华 为总部办公楼 (72)发明人 王琛邵增卫行帅 (74)专利代理机构 北京同立钧成知识产权代理 有限公司 11205 代理人 祝乐芳刘芳 (51)Int.Cl. G06F 11/34(2006.01) G06F 11/36(2006.01) G06F 11/07(2006.01) (54)发明名称 日志处理方法和装置 (57)摘要 本申。

2、请提供一种日志处理方法和装置, 根据 日志的日志行中设置的跟踪标识, 对日志进行事 务上下文提取, 其中, 跟踪标识通过日志打印函 数设置在日志行中, 属于同一事务的同一调用链 的日志事件具有相同的跟踪标识, 进一步根据日 志行的日志行采集时间对提取的事务上下文进 行排序, 确定日志中的事务上下文, 从而, 能够实 现日志上下文的快速提取, 方便相关人员基于日 志上下文进行问题定位、 分析等。 而且能够根据 日志的日志行中设置的日志事件标识, 获取预设 时间段内同一目标日志事件标识的日志事件的 发生频次, 根据该发生频次对日志进行分析检 测, 例如日志异常事件检测, 主动发现问题, 及时 解决。

3、安全隐患, 避免事故发生后再去寻找原因, 降低损失。 权利要求书3页 说明书20页 附图5页 CN 110764980 A 2020.02.07 CN 110764980 A 1.一种日志处理方法, 其特征在于, 包括: 根据待处理日志的日志行中设置的跟踪标识, 对所述待处理日志进行事务上下文提 取, 其中, 所述日志行中设置的跟踪标识通过日志打印函数设置在所述日志行中, 属于同一 事务的同一调用链的日志事件具有相同的跟踪标识; 根据所述日志行的日志行采集时间对提取的事务上下文进行排序, 确定所述待处理日 志中的事务上下文。 2.根据权利要求1所述的日志处理方法, 其特征在于, 在所述根据待处。

4、理日志的日志行 中设置的跟踪标识, 对所述待处理日志进行事务上下文提取之前, 还包括: 通过所述日志打印函数在将所述日志行写入所述待处理日志时, 确定待写入日志行的 日志事件的所属事务的调用链; 根据所述待写入日志行的日志事件的所属事务的调用链, 确定所述待写入日志行的日 志事件的跟踪标识; 将确定的跟踪标识设置在所述待写入日志行的第一预设位置。 3.根据权利要求1或2所述的日志处理方法, 其特征在于, 在所述确定所述待处理日志 中的事务上下文之后, 还包括: 根据确定的目标事务上下文, 确定所述目标事务对应的每一调用链中的事务上下文; 根据所述目标事务对应的每一调用链中的事务上下文, 进行日。

5、志异常执行路径检测。 4.根据权利要求1至3中任一项所述的日志处理方法, 其特征在于, 所述根据待处理日 志的日志行中设置的跟踪标识, 对所述待处理日志进行事务上下文提取, 包括: 根据所述日志行中设置的跟踪标识, 以及目标事务对应的调用链中日志事件的跟踪标 识, 对所述待处理日志进行目标事务上下文提取。 5.根据权利要求1至4中任一项所述的日志处理方法, 其特征在于, 还包括: 根据所述待处理日志的日志行中设置的日志事件标识, 获取预设时间段内同一目标日 志事件标识的日志事件的发生频次, 其中, 所述日志行中设置的日志事件标识通过所述日 志打印函数设置在所述日志行中, 用于标定全局唯一的日志。

6、事件。 6.根据权利要求5所述的日志处理方法, 其特征在于, 在所述获取预设时间段内同一目 标日志事件标识的日志事件的发生频次之后, 还包括: 根据所述发生频次, 进行日志异常事件检测。 7.根据权利要求5或6所述的日志处理方法, 其特征在于, 在所述根据所述待处理日志 的日志行中设置的日志事件标识, 获取预设时间段内同一目标日志事件标识的日志事件的 发生频次之前, 还包括: 通过所述日志打印函数在将所述日志行写入所述待处理日志时, 确定待写入日志行的 日志事件的日志事件标识; 将确定的日志事件标识设置在所述待写入日志行的第二预设位置。 8.根据权利要求7所述的日志处理方法, 其特征在于, 所。

7、述确定待写入日志行的日志事 件的日志事件标识, 包括: 根据所述待写入日志行的日志事件对应的打印日志的语句的位置, 确定所述待写入日 志行的日志事件的文件名和行号; 根据所述文件名和所述行号, 获得所述待写入日志行的日志事件的日志事件标识。 权利要求书 1/3 页 2 CN 110764980 A 2 9.一种日志处理装置, 其特征在于, 包括: 提取模块, 用于根据待处理日志的日志行中设置的跟踪标识, 对所述待处理日志进行 事务上下文提取, 其中, 所述日志行中设置的跟踪标识通过日志打印函数设置在所述日志 行中, 属于同一事务的同一调用链的日志事件具有相同的跟踪标识; 排序模块, 用于根据所。

8、述日志行的日志行采集时间对提取的事务上下文进行排序, 确 定所述待处理日志中的事务上下文。 10.根据权利要求9所述的日志处理装置, 其特征在于, 还包括: 第一确定模块, 用于在所述提取模块根据待处理日志的日志行中设置的跟踪标识, 对 所述待处理日志进行事务上下文提取之前, 通过所述日志打印函数在将所述日志行写入所 述待处理日志时, 确定待写入日志行的日志事件的所属事务的调用链; 第二确定模块, 用于根据所述待写入日志行的日志事件的所属事务的调用链, 确定所 述待写入日志行的日志事件的跟踪标识; 第一设置模块, 用于将确定的跟踪标识设置在所述待写入日志行的第一预设位置。 11.根据权利要求9。

9、或10所述的日志处理装置, 其特征在于, 还包括: 第三确定模块, 用于在所述排序模块确定所述待处理日志中的事务上下文之后, 根据 确定的目标事务上下文, 确定所述目标事务对应的每一调用链中的事务上下文; 第一检测模块, 用于根据所述目标事务对应的每一调用链中的事务上下文, 进行日志 异常执行路径检测。 12.根据权利要求9至11中任一项所述的日志处理装置, 其特征在于, 所述提取模块具 体用于: 根据所述日志行中设置的跟踪标识, 以及目标事务对应的调用链中日志事件的跟踪标 识, 对所述待处理日志进行目标事务上下文提取。 13.根据权利要求9至12中任一项所述的日志处理装置, 其特征在于, 还。

10、包括: 获取模块, 用于根据所述待处理日志的日志行中设置的日志事件标识, 获取预设时间 段内同一目标日志事件标识的日志事件的发生频次, 其中, 所述日志行中设置的日志事件 标识通过所述日志打印函数设置在所述日志行中, 用于标定全局唯一的日志事件。 14.根据权利要求13所述的日志处理装置, 其特征在于, 还包括: 第二检测模块, 用于在所述获取模块获取预设时间段内同一目标日志事件标识的日志 事件的发生频次之后, 根据所述发生频次, 进行日志异常事件检测。 15.根据权利要求13或14所述的日志处理装置, 其特征在于, 还包括: 第四确定模块, 用于在所述获取模块根据所述待处理日志的日志行中设置。

11、的日志事件 标识, 获取预设时间段内同一目标日志事件标识的日志事件的发生频次之前, 通过所述日 志打印函数在将所述日志行写入所述待处理日志时, 确定待写入日志行的日志事件的日志 事件标识; 第二设置模块, 用于将确定的日志事件标识设置在所述待写入日志行的第二预设位 置。 16.根据权利要求15所述的日志处理装置, 其特征在于, 所述第四确定模块具体用于: 根据所述待写入日志行的日志事件对应的打印日志的语句的位置, 确定所述待写入日 志行的日志事件的文件名和行号; 权利要求书 2/3 页 3 CN 110764980 A 3 根据所述文件名和所述行号, 获得所述待写入日志行的日志事件的日志事件标。

12、识。 17.一种计算设备, 其特征在于, 包括: 包括处理器和存储器; 所述存储器, 用于存储计算机指令; 所述处理器, 用于执行所述存储器存储的计算机指令, 使得所述计算设备执行权利要 求1至8任一项所述的日志处理方法。 18.一种计算机可读存储介质, 其特征在于, 所述计算机程序产品包括计算机指令, 所 述计算机指令指示计算设备执行权利要求1至8任一项所述的日志处理方法。 权利要求书 3/3 页 4 CN 110764980 A 4 日志处理方法和装置 技术领域 0001 本申请涉及日志技术领域, 尤其涉及一种日志处理方法和装置。 背景技术 0002 日志, 在当今软件开发过程中扮演了十分。

13、重要的作用。 日志, 是指在软件源代码中 加入了一些特定的语句, 可以将软件运行的实时状态记录在文本文件中。 软件开发者(或运 维工作人员)可以通过阅读日志, 掌握软件运行的实时情况, 从而用于软件调试, 性能优化, 业务分析等场景。 0003 如果日志出错, 通常采用关键字查询错误的日志行。 示例性的, 首先, 采集用户的 日志, 并做统一存储。 然后对这些文本数据(非结构化数据)建立索引(例如使用lucene)。 基 于索引表, 通过关键字在日志中查找相关内容。 举例来说, 用户发现某个时间段应用发生了 错误, 可以定位相应时间段的日志, 并查找关键字 “ERROR” , 来查找错误的日志。

14、行。 因为, 错 误的日志行中通常会带有ERROR这样的关键字。 0004 然而, 即使采用关键字查询到了错误的日志行, 也很难判断导致问题发生的原因。 因为单条日志包含的信息量太少, 定位问题不准确。 用户需要通过日志的上下文来判断是 什么原因导致了问题, 因此需要对日志业务上下文进行提取。 其中, 日志业务上下文包括事 务上下文。 这里, 事务可以理解为系统提供的功能, 例如支付。 示例性的, 以事务为微服务框 架下支付的事务为例进行说明, 该事务由多个相互通信的微服务共同完成, 每个微服务中 包括多个线程上下文, 每个微服务中的线程上下文相互交织, 不同微服务的日志打印在不 同的日志文件。

15、中, 每个日志文件中多线程上下文相互交织。 如果某一微服务出现错误, 不确 定该错误是该微服务内部问题, 还是调用微服务时出现的问题。 这时, 如果需要定位问题, 就需要看这些服务相关的日志, 即需要提取日志业务上下文。 通常用户必须手动登录到每 个微服务的虚机上查看相关日志, 手动完成事务上下文的提取, 显然, 这个处理过程效率很 低。 发明内容 0005 本申请提供一种日志处理方法和装置, 以提高日志上下文提取效率。 0006 本申请第一方面提供一种日志处理方法, 根据待处理日志的日志行中设置的跟踪 标识, 对待处理日志进行事务上下文提取, 其中, 日志行中设置的跟踪标识通过日志打印函 数。

16、设置在日志行中, 属于同一事务的同一调用链的日志事件具有相同的跟踪标识, 进一步 根据上述日志行的日志行采集时间对提取的事务上下文进行排序, 确定待处理日志中的事 务上下文, 从而, 能够实现日志上下文的快速提取, 方便相关人员基于日志上下文进行问题 定位、 分析等。 0007 一种可能设计, 在所述根据待处理日志的日志行中设置的跟踪标识, 对所述待处 理日志进行事务上下文提取之前, 该日志处理方法还包括: 0008 通过所述日志打印函数在将所述日志行写入所述待处理日志时, 确定待写入日志 说明书 1/20 页 5 CN 110764980 A 5 行的日志事件的所属事务的调用链; 0009 。

17、根据所述待写入日志行的日志事件的所属事务的调用链, 确定所述待写入日志行 的日志事件的跟踪标识; 0010 将确定的跟踪标识设置在所述待写入日志行的第一预设位置。 0011 其中, 每个调用链代表对事务的一次执行, 每个调用链都有一个跟踪标识。 在通过 日志打印函数在将日志行写入待处理日志时, 确定待写入日志行的日志事件的所属事务的 调用链, 根据该调用链的跟踪标识, 确定待写入日志行的日志事件的跟踪标识, 将确定的跟 踪标识设置在待写入日志行的第一预设位置, 进一步根据日志行中设置的跟踪标识, 快速 提取待处理日志中的事务上下文, 解决日志上下文提取效率低的问题。 0012 一种可能设计, 。

18、在所述确定所述待处理日志中的事务上下文之后, 该日志处理方 法还包括: 0013 根据确定的目标事务上下文, 确定所述目标事务对应的每一调用链中的事务上下 文; 0014 根据所述目标事务对应的每一调用链中的事务上下文, 进行日志异常执行路径检 测。 0015 这里, 可以根据提取的日志上下文实现对日志的上层分析, 例如上述日志异常执 行路径检测, 及时发现问题, 解决安全隐患。 0016 一种可能设计, 所述根据待处理日志的日志行中设置的跟踪标识, 对所述待处理 日志进行事务上下文提取, 该日志处理方法包括: 0017 根据所述日志行中设置的跟踪标识, 以及目标事务对应的调用链中日志事件的跟。

19、 踪标识, 对所述待处理日志进行目标事务上下文提取。 0018 示例性的, 以目标事务为上述登录事务为例, 在某一时间段, 例如过去2分钟有4次 登录, 产生4条调用链, 每条调用链都有一个跟踪标识: trace01、 trace02、 trace03、 trace04。 如果需要提取这2分钟中的事务上下文, 可以根据日志行中设置的跟踪标识, 以及 目标事务对应的调用链中日志事件的跟踪标识, 即上述trace01、 trace02、 trace03、 trace04, 对待处理日志进行目标事务上下文提取, 满足多种应用场景对事务上下文的提取 要求。 0019 一种可能设计, 该日志处理方法还包。

20、括: 0020 根据所述待处理日志的日志行中设置的日志事件标识, 获取预设时间段内同一目 标日志事件标识的日志事件的发生频次, 其中, 所述日志行中设置的日志事件标识通过所 述日志打印函数设置在所述日志行中, 用于标定全局唯一的日志事件。 0021 这里, 根据待处理日志的日志行中设置的日志事件标识, 获取预设时间段内同一 目标日志事件标识的日志事件的发生频次, 根据该发生频次可以对日志进行分析检测, 例 如进行日志异常事件检测, 主动发现问题, 及时解决安全隐患, 避免事故发生后再去寻找原 因, 降低损失, 满足应用需要。 0022 一种可能设计, 在所述获取预设时间段内同一目标日志事件标识。

21、的日志事件的发 生频次之后, 该日志处理方法还包括: 0023 根据所述发生频次, 进行日志异常事件检测。 0024 示例性的, 可以根据上述发生频次, 基于时序异常检测方法, 例如3 准则, 确定日 说明书 2/20 页 6 CN 110764980 A 6 志事件发生频次范围, 根据该日志事件发生频次范围进行日志异常事件检测, 并可以基于 发现的异常事件向用户发送告警, 以便用户及时发现并进行相应处理。 0025 一种可能设计, 在所述根据所述待处理日志的日志行中设置的日志事件标识, 获 取预设时间段内同一目标日志事件标识的日志事件的发生频次之前, 该日志处理方法还包 括: 0026 通过。

22、所述日志打印函数在将所述日志行写入所述待处理日志时, 确定待写入日志 行的日志事件的日志事件标识; 0027 将确定的日志事件标识设置在所述待写入日志行的第二预设位置。 0028 一种可能设计, 所述确定待写入日志行的日志事件的日志事件标识, 该日志处理 方法包括: 0029 根据所述待写入日志行的日志事件对应的打印日志的语句的位置, 确定所述待写 入日志行的日志事件的文件名和行号; 0030 根据所述文件名和所述行号, 获得所述待写入日志行的日志事件的日志事件标 识。 0031 这里, 每一行日志都是由打印日志的语句生成。 上述文件名和行号可以通过打印 日志的语句的位置确定。 进一步地, 可。

23、以按照预设格式将相应的文件名和行号进行组合, 获 得待写入日志行的日志事件的日志事件标识, 并将该日志事件标识设置在待写入日志行的 第二预设位置, 以便后续根据待处理日志的日志行中设置的日志事件标识, 获取预设时间 段内同一目标日志事件标识的日志事件的发生频次, 根据该发生频次, 进行日志异常事件 检测等。 0032 本申请第二方面提供一种日志处理装置, 该日志处理装置包括: 0033 提取模块, 用于根据待处理日志的日志行中设置的跟踪标识, 对所述待处理日志 进行事务上下文提取, 其中, 所述日志行中设置的跟踪标识通过日志打印函数设置在所述 日志行中, 属于同一事务的同一调用链的日志事件具有。

24、相同的跟踪标识; 0034 排序模块, 用于根据所述日志行的日志行采集时间对提取的事务上下文进行排 序, 确定所述待处理日志中的事务上下文。 0035 一种可能设计, 该日志处理装置还包括: 0036 第一确定模块, 用于在所述提取模块根据待处理日志的日志行中设置的跟踪标 识, 对所述待处理日志进行事务上下文提取之前, 通过所述日志打印函数在将所述日志行 写入所述待处理日志时, 确定待写入日志行的日志事件的所属事务的调用链; 0037 第二确定模块, 用于根据所述待写入日志行的日志事件的所属事务的调用链, 确 定所述待写入日志行的日志事件的跟踪标识; 0038 第一设置模块, 用于将确定的跟踪。

25、标识设置在所述待写入日志行的第一预设位 置。 0039 一种可能设计, 该日志处理装置还包括: 0040 第三确定模块, 用于在所述排序模块确定所述待处理日志中的事务上下文之后, 根据确定的目标事务上下文, 确定所述目标事务对应的每一调用链中的事务上下文; 0041 第一检测模块, 用于根据所述目标事务对应的每一调用链中的事务上下文, 进行 日志异常执行路径检测。 说明书 3/20 页 7 CN 110764980 A 7 0042 一种可能设计, 所述提取模块具体用于: 0043 根据所述日志行中设置的跟踪标识, 以及目标事务对应的调用链中日志事件的跟 踪标识, 对所述待处理日志进行目标事务。

26、上下文提取。 0044 一种可能设计, 该日志处理装置还包括: 0045 获取模块, 用于根据所述待处理日志的日志行中设置的日志事件标识, 获取预设 时间段内同一目标日志事件标识的日志事件的发生频次, 其中, 所述日志行中设置的日志 事件标识通过所述日志打印函数设置在所述日志行中, 用于标定全局唯一的日志事件。 0046 一种可能设计, 该日志处理装置还包括: 0047 第二检测模块, 用于在所述获取模块获取预设时间段内同一目标日志事件标识的 日志事件的发生频次之后, 根据所述发生频次, 进行日志异常事件检测。 0048 一种可能设计, 该日志处理装置还包括: 0049 第四确定模块, 用于在。

27、所述获取模块根据所述待处理日志的日志行中设置的日志 事件标识, 获取预设时间段内同一目标日志事件标识的日志事件的发生频次之前, 通过所 述日志打印函数在将所述日志行写入所述待处理日志时, 确定待写入日志行的日志事件的 日志事件标识; 0050 第二设置模块, 用于将确定的日志事件标识设置在所述待写入日志行的第二预设 位置。 0051 一种可能设计, 所述第四确定模块具体用于: 0052 根据所述待写入日志行的日志事件对应的打印日志的语句的位置, 确定所述待写 入日志行的日志事件的文件名和行号; 0053 根据所述文件名和所述行号, 获得所述待写入日志行的日志事件的日志事件标 识。 0054 第。

28、三方面, 本申请提供一种计算设备, 该计算设备包括处理器和存储器。 该存储器 存储计算机指令; 该处理器执行该存储器存储的计算机指令, 使得该计算设备执行上述第 一方面或者第一方面的各种可能设计提供的方法, 使得该计算设备部署上述第二方面或者 第二方面的各种可能设计提供该日志处理装置。 0055 第四方面, 本申请提供一种计算机可读存储介质, 该计算机可读存储介质中存储 有计算机指令, 该计算机指令指示该计算设备执行上述第一方面或者第一方面的各种可能 设计提供的方法, 或者该计算机指令指示该计算设备部署上述第二方面或者第二方面的各 种可能设计提供该日志处理装置。 0056 第五方面, 本申请提。

29、供一种计算机程序产品, 该计算机程序产品包括计算机指令, 该计算机指令存储在计算机可读存储介质中。 计算设备的处理器可以从计算机可读存储介 质读取该计算机指令, 处理器执行该计算机指令, 使得该计算设备执行上述第一方面或者 第一方面的各种可能设计提供的方法, 使得该计算设备部署上述第二方面或者第二方面的 各种可能设计提供该日志处理装置。 附图说明 0057 图1为本申请实施例提供的一种日志处理系统的架构示意图; 0058 图2为本申请实施例提供的一种分布式跟踪的实现示意图; 说明书 4/20 页 8 CN 110764980 A 8 0059 图3为本申请实施例提供的一种分布式服务器系统的架构。

30、示意图; 0060 图4为本申请实施例提供的一种日志处理方法的流程示意图; 0061 图5为本申请实施例提供的另一种日志处理方法的流程示意图; 0062 图6为本申请实施例提供的再一种日志处理方法的流程示意图; 0063 图7为本申请提供的一种日志处理装置的结构示意图; 0064 图8为本申请提供的另一种日志处理装置的结构示意图; 0065 图9为本申请提供的再一种日志处理装置的结构示意图; 0066 图10为本申请提供的一种计算设备的基本硬件架构示意图。 具体实施方式 0067 本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施 例的技术方案, 并不构成对于本申请实施例提供。

31、的技术方案的限定, 本领域普通技术人员 可知, 随着网络架构的演变和新业务场景的出现, 本申请实施例提供的技术方案对于类似 的技术问题, 同样适用。 0068 图1为本申请实施例提供的一种日志处理系统的架构示意图, 如图1所示, 本申请 实施例提供日志处理系统11包括至少一台服务器110, 该至少一台服务器110组成的日志处 理系统可以是一个分布式服务器系统, 也可以是集中的服务器集群, 该日志处理系统中的 不同服务器110之间可以通过网络互连。 0069 该日志处理系统11中的任意一台服务器110均可以执行日志处理任务。 0070 如, 服务器110可以接收客户端发送的日志业务上下文提取请求。

32、, 基于该日志业务 上下文提取请求进行日志业务上下文提取, 并基于提取的日志业务上下文进行日志异常执 行路径检测。 0071 其中, 日志, 是指在软件源代码中加入了一些特定的语句, 可以将软件运行的实时 状态记录在文本文件中。 在开发过程中, 日志能很方便的提供系统收到的数据, 反映运行情 况, 内存中的数据的值, 为调试提供很大的便利。 利用日志, 可以高效追踪排查一些错误, 特 别是偶然性错误, 大大改善了开发效率。 在系统开发完成, 正式运营的过程中, 通过查看日 志, 可以了解系统的整体运行情况, 为系统及业务提供参考。 0072 在日志出错时, 需要通过日志的上下文来确定问题发生原。

33、因, 因此需要对日志业 务上下文进行提取。 0073 具体地, 日志业务上下文包含: 事务上下文。 其中, 事务可以理解为系统提供的功 能, 例如支付、 登录、 注册等, 这个功能可以是用户在前端的某个操作, 也可以是后端开放 API接口由用户调用。 例如, 在微服务框架下, 一个支付事务的执行是由多个相互通信的微 服务共同完成。 在这个执行过程中, 这些微服务都会往不同的日志文件中打印日志。 每个日 志文件可能会有多线程上下文相互交织。 其中, 一个微服务中的线程上下文可以理解为调 用链在该服务的执行片段, 一个调用链表示对事务的一次执行。 0074 示例性的, 以一个log4j的Java日。

34、志文件为例对线程上下文进行说明。 如下述, 许 多线程交织打印日志在这个文件中: 0075 2008-09-10 14:55:57,022 INFOpool-7-thread-45ROOTclass name A-55 indexName is ais_podindex,info is “projectld” : “ 说明书 5/20 页 9 CN 110764980 A 9 0076 2008-09-10 14:55:57,020 INFOpool-8-thread-34ROOTclassname A-53 SelfContainerInfoHandle Task task end,cost。

35、 time is 14 0077 2008-09-10 14:55:57,023 INFOpool-7-thread-45ROOTclassname A-52 SelfPodlnfoHandle Task end,cost time is 13 0078 即线程pool-7-thread-45、 pool-8-thread-34交织打印日志在这个文件中。 通常, 在发现问题后, 运维人员需要看线程的上下文来做问题定位, 只有相同线程的信息才能提 供上下文的信息。 但是每一行日志前后的日志行可能和本行日志没有关系, 例如上述线程 pool-7-thread-45、 pool-8-thread-3。

36、4所示。 因此, 运维人员通常需要手动选择线程来阅读 线程上下文信息, 效率很低。 0079 进一步地, 还以上述微服务框架下支付的事务为例, 该事务由多个相互通信的微 服务共同完成, 如果某一微服务出现错误, 不确定该错误是该微服务内部问题, 还是调用微 服务时出现的问题。 这时, 如果需要定位问题, 就需要看这些服务相关的日志。 通常日志工 具不支持事务, 而且, 如果线程pool-7-thread-45、 pool-8-thread-34为某一微服务中的线 程, 在获取该服务时, 可以通过线程号把线程日志上下文提取出来。 例如上述线程号pool- 7-thread-45, 通过该线程号把。

37、相应的线程日志上下文提取出来。 但是如果一个事务包含多 个微服务, 通过上述方法只能提取每个微服务中的线程上下文, 而微服务间的线程上下文 无法提取。 这样, 用户必须手动登录到每个服务的虚机上查看相关日志, 通过时间过滤, 并 定位相关问题, 处理速度慢, 效率低。 0080 因此, 目前需要做的是如何高效地提取事务上下文。 这里, 可以借助Dapper框架, 如图2所示, 某应用包括一个前端服务(A), 两个中间层服务(B和C), 以及两个后端服务(D和 E)。 首先, 客户端对某个业务类型(例如登录)发起请求(RequestX), 请求到达前端服务A, 然 后A发送两个调用请求到微服务B。

38、和C。 B会马上做出反应, 但是C需要和后端的微服务D和E交 互之后再返还给A, 由A来响应最初的请求。 对于这样一个请求, 通过分布式跟踪的实现, 就 是为服务器上每一次发送和接收动作来收集跟踪标识符(message identifiers)和时间戳 (timestamped events)。 对于业务链条中的每一次请求调用, 划分为clientSend(客户端发 送请求)、 clientRecv(客户端收到响应)、 serverRecv(服务端收到请求)、 serverSend(服务 端发送响应)等四个事件或动作(包含跟踪标识符和时间戳)。 0081 具体地, 参照上述图2所述的分布式跟踪。

39、的实现方法, 在日志行中设置跟踪标识, 其中, 属于同一事务的同一调用链的日志事件具有相同的跟踪标识。 示例性的, 以登录事务 为例, 在某一时间段, 例如过去2分钟有4次登录, 产生4条调用链, 每条调用链都有一个全局 唯一的id, 将该全局唯一的id设置为trace_id, 作为上述跟踪标识。 其中, 以第一条调用链 的id为例, 调用链的id可以为trace01、 login-01、 随机数(例如01b2)、 hash值(调用链中日 志事件的hash值)等, 本申请对此不作特别限制, 只要每条调用链都有一个全局唯一的id即 可。 根据上述跟踪标识把属于同一事务的同一调用链的日志事件放在一。

40、起, 再根据日志行 的日志行采集时间, 把放在一起的日志行按执行顺序排列, 最终实现了微服务间的事务上 下文提取, 可以进行多个微服务的联合查看。 在某一微服务出现错误, 能够及时确定该错误 是该微服务内部问题, 还是调用微服务时出现的问题 0082 另外, 上述客户端可以与服务器110相互独立设计, 例如, 客户端通过网络与服务 器110连接。 同时, 上述客户端还可以与服务器110一体设计, 例如, 每台服务器110上设置一 说明书 6/20 页 10 CN 110764980 A 10 个客户端。 0083 这里, 以分布式服务器系统, 且客户端与服务器一体设计为例, 对本申请日志处理 。

41、系统进行介绍, 图3为本申请实施例提供的一种分布式服务器系统的架构示意图, 这里, 该 分布式服务器系统300中仅作为示例而非限制, 给出了三个服务器301、 302、 303(系统能够 按照自身的实际需要灵活调整服务器的数量), 每个服务器上可以部署有客户端, 分别为客 户端311、 312、 313。 不同服务器之间可以通过网络互连, 该网络可以是互联网、 因特网协议 存储区域网络(internet protocol storage area network, IP SAN)、 内联网以及私有网 络等等。 需要注意的是, 上述说明性论述并不打算穷举或将本申请局限于图3所示的系统架 构形式,。

42、 在具体实现过程中, 分布式服务器系统300的众多修改和变形都是可行的, 例如该 系统300还包括三个存储节点322、 323、 324, 用于存储数据。 上述三个服务器301、 302、 303通 过例如计算网络、 转换线缆InfiniBand或以太网光纤通道FCoF等与三个存储节点322、 323、 324实现互联。 0084 示例性的, 服务器301可以接收客户端311发送的日志业务上下文提取请求, 基于 该日志业务上下文提取请求进行日志业务上下文提取, 并基于提取的日志业务上下文进行 日志异常执行路径检测。 进一步地, 还可以将提取的日志业务上下文以及日志异常执行路 径检测结果存储在存。

43、储节点322。 0085 下面以几个实施例为例对本申请的技术方案进行描述, 对于相同或相似的概念或 过程可能在某些实施例不再赘述。 0086 图4为本申请实施例提出的一种日志处理方法的流程示意图, 本实施例的执行主 体可以为图1所示实施例中的服务器110, 也可以为图3所示实施例的服务器301, 本实施例 此处不做特别限制。 如图4所示, 该方法包括: 0087 S401: 根据待处理日志的日志行中设置的跟踪标识, 对所述待处理日志进行事务 上下文提取, 其中, 所述日志行中设置的跟踪标识通过日志打印函数设置在所述日志行中, 属于同一事务的同一调用链的日志事件具有相同的跟踪标识。 0088 这。

44、里, 上述待处理日志可以通过以下方式获取: 0089 接收客户端发送的待处理日志; 或者, 从存储器获取待处理日志。 0090 这里, 服务器可以接收客户端发送的待处理日志, 并对待处理日志进行相应处理。 如果客户端没有发送待处理日志到服务器, 服务器还可以从存储器获取待处理日志, 对待 处理日志进行相应处理。 其中, 存储器可以预存多个待处理日志, 并可以保存多个待处理日 志的处理顺序。 服务器可以根据该处理顺序依次从存储器获取待处理日志进行相应处理。 0091 其中, 上述日志行中设置跟踪标识的方式采用下述具体地实施方式进行说明: 0092 通过所述日志打印函数在将所述日志行写入所述待处理。

45、日志时, 确定待写入日志 行的日志事件的所属事务的调用链; 0093 根据所述待写入日志行的日志事件的所属事务的调用链, 确定所述待写入日志行 的日志事件的跟踪标识; 0094 将确定的跟踪标识设置在所述待写入日志行的第一预设位置。 0095 由上述可知, 每个调用链代表对事务的一次执行, 事务和调用链是一对多的对应 关系, 每个调用链都有一个全局唯一的id, 作为上述跟踪标识。 因此, 在通过日志打印函数 在将日志行写入待处理日志时, 确定待写入日志行的日志事件的所属事务的调用链, 例如 说明书 7/20 页 11 CN 110764980 A 11 待写入日志行的日志事件属于上述登录事务在。

46、过去2分钟的4次登录产生的第一条调用链, 根据待写入日志行的日志事件的所属事务的调用链, 确定待写入日志行的日志事件的跟踪 标识, 例如上述第一条调用链的跟踪标识为trace01, 则确定待写入日志行的日志事件的跟 踪标识为trace01, 将确定的跟踪标识设置在待写入日志行的第一预设位置。 即上述登录事 务, 多个微服务的日志打印在不同的日志文件时, 可以通过日志打印函数, 在原来日志行的 第一预设位置加入相应的跟踪标识。 其中, 第一预设位置可以为日志行的头部、 尾部等, 本 申请对此不作特别限制。 0096 具体地, 在对待处理日志进行上下文提取之前, 利用上述日志打印函数在将日志 行写。

47、入待处理日志时, 在待写入日志行的第一预设位置设置跟踪标识, 即在每一个日志行 中多放入一个信息: trace_id。 然后根据日志行中设置的跟踪标识, 提取待处理日志中的事 务上下文; 再根据日志行的日志行采集时间, 对提取的各个事务上下文进行排序, 最终确定 相应的事务上下文。 0097 其中, 上述日志打印函数用于将日志数据传递给自身内部的函数, 利用内部的函 数完成相应数据处理。 示例性的, 通过日志打印函数在将待处理日志行写入日志时, 利用内 部的函数修改日志的参数, 在日志中加入上述跟踪标识。 0098 为了更好地理解上述日志打印函数, 这里以Java语言为例, 对方案进行介绍。 。

48、0099 假设有一个Java类Test, 这个类定义了一个函数testme(), 这个函数里有一个打 印日志的语句 0100 logger.info(The order info has been updated.) 0101 这里使用Java log4j框架打印日志, 调用了org.apache.log4j.Logger类中的 info方法, 其中, logger.info为日志打印函数。 该函数可以执行下述操作: 0102 1、 调用doRender()方法给原始日志加头(rendering); 0103 这个函数会根据用户的配置, 加入时间, 日志级别, 线程名, 文件名等信息。 例如,。

49、 上面的原始日志经过doRender()函数后, 会生成一下字符串: 0104 2018-12-19 17:59:27,073 INFOThread-1Test_110The order info has been updated. 0105 2、 调用callAppenders()方法将加好头的日志写入文件; 0106 这里, 在调用callAppenders()方法的时候, 通过修改字节码, 修改日志的参数, 在 原来的参数的预设位置, 例如原来的参数前, 加入需要的信息, 例如trace10, 最后获得: 0107 trace102018-12-19 17:59:27,073 INFOT。

50、hread-1Test_110The order info has been updated. 0108 进一步地, 可以在上述日志打印函数logger.info调用callAppenders()方法的时 候, 通过修改字节码, 修改日志的参数, 在原来的参数的预设位置加入上述跟踪标识。 0109 另外, 还可以根据日志行中设置的跟踪标识, 以及目标事务对应的调用链中日志 事件的跟踪标识, 对待处理日志进行目标事务上下文提取。 其中, 目标事务可以是登录事 务、 注册事务、 支付事务等, 本申请对此不做特别限制。 示例性的, 以目标事务为上述登录事 务为例, 在某一时间段, 例如过去2分钟有4。

展开阅读全文
内容关键字: 日志 处理 方法 装置
关于本文
本文标题:日志处理方法和装置.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/10928289.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1