CN114610689B - 一种分布式环境中请求日志的记录和分析方法 - Google Patents
一种分布式环境中请求日志的记录和分析方法 Download PDFInfo
- Publication number
- CN114610689B CN114610689B CN202210265212.7A CN202210265212A CN114610689B CN 114610689 B CN114610689 B CN 114610689B CN 202210265212 A CN202210265212 A CN 202210265212A CN 114610689 B CN114610689 B CN 114610689B
- Authority
- CN
- China
- Prior art keywords
- request
- information
- service
- application
- log
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 16
- 238000012216 screening Methods 0.000 claims abstract description 14
- 239000003550 marker Substances 0.000 claims description 19
- 238000004458 analytical method Methods 0.000 claims description 12
- 239000003795 chemical substances by application Substances 0.000 claims description 5
- 235000014510 cooky Nutrition 0.000 claims description 4
- 238000013024 troubleshooting Methods 0.000 claims description 4
- 238000012800 visualization Methods 0.000 claims description 3
- 238000011835 investigation Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种分布式环境中请求日志的记录和分析方法,包括定义标记日志记录的特征码;拦截、获取并记录业务请求的信息,生成业务请求的特征码;将特征码分别写入请求线程和业务应用的日志记录中;通过特征码记录业务应用间的调用关系,直至相关业务请求的业务调用执行完毕,参与处理本次业务请求的所有业务应用所产生的日志记录,都以特征码标记;问题定位及排查。达到减少人工整理的时间,降低人工成本,提高了对重点日志的筛查效率,实现针对某一类问题的特别观察,以便于快速地排查问题的效果。
Description
技术领域
本发明涉及日志分布式记录和分析技术领域,尤其涉及一种分布式环境中请求日志的记录和分析方法。
背景技术
应用日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视应用中发生的事件。开发人员可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。应用一般都会记录这些日志,虽然日志数据对业务而言是没有任何意义的是但却是开发人员排除应用故障和问题的重要依据。然而,面对数量多且繁杂的日志,开发人员如若要从海量日志数据中发现问题、定位问题,以及分析日志,无疑是一项耗时耗力的工作;尤其是在分布式环境下,多机房环境不仅造成日志数据的分离,应用间复杂多重的调用关系更增加了利用日志排查问题的难度。
现有技术通过诸如日志传输技术,实现了日志查询的线上化,但日志查询的前提仍旧需要开发人员耗费大量时间挑选日志;专利“一种分布式环境下的日志收集系统及日志收集方法”(申请号:202010742719.8)提出了分布式环境下的日志记录中的traceID生成和传递,实现了对各个应用节点内的日志收集及整理排序,为请求链路提供了traceID方案,使得整体请求被串联起来,然而此专利中的traceId为UUID或随机数,生成规则非常简单,这种简单的特征码并不能解决对特定日志的快速挑选,更不能对问题的排查和定位提供有效的解决方案。
基于此,务必需要一种请求日志记录的方法,能实现帮助开发人员能够高效地获取并分析应用日志,以便快速、准确地定位线上遇到的业务问题。
发明内容
为解决现有技术存在的问题,本发明重新定义日志记录特征码的生成格式,在请求处理过程中动态地收集机房信息、业务应用信息、请求信息及访问者信息,通过信息拼接形成日志记录特征码,并以日志记录特征码标记一个请求处理过程中不同应用产生的应用日志记录,不仅实现建立分布式环境中跨机房间的应用日志记录的关联性,更重要地,提高了分布式环境中的问题定位及排查效率,降低了问题排查的复杂度和难度。
本发明提供一种分布式环境中请求日志的记录和分析方法,包括如下步骤:
步骤1:定义标记日志记录的特征码,所述日志记录的特征码是通过获取并拼接业务请求的机房信息、业务应用信息、请求信息及访问者信息形成的字符编码;所述机房信息包括接收用户请求的机房名称;所述业务应用信息包括前置业务应用的应用名称;所述前置业务应用指用户请求首次到达的业务应用;所述请求信息包含请求时间和请求类型的标记符;所述请求类型包含用户请求类型、爬虫请求类型和调度请求类型;所述访问者信息包含访问者ID、访问者IP、访问设备标记符;所述访问设备包含移动设备和PC;
步骤2:拦截、获取并记录业务请求的信息,生成业务请求的特征码;具体为:前置业务应用拦截业务请求,获取接收业务请求的机房信息、业务应用信息、请求信息及访问者信息;根据请求类型的标记符判断请求类型;;按照步骤1定义的特征码格式,拼接生成本次业务请求的特征码,将特征码分别写入请求线程和业务应用的日志记录中;
步骤3:通过特征码记录业务应用间的调用关系:在业务请求向后传递时,包含同机房的业务应用调用和跨机房的业务应用调用,获取请求线程中的特征码,将所述特征码写入调用请求中,并传至被调用的业务应用;被调用的业务应用获取调用请求中的特征码,在处理完调用请求后,将特征码写入所述被调用业务应用的日志记录中;
步骤4:循环执行步骤3,直至相关业务请求的业务调用执行完毕,参与处理本次业务请求的所有业务应用所产生的日志记录,都以步骤2生成的特征码标记;
步骤5:问题定位及排查,包括:当请求处理过程中报错时,提取包含错误信息的日志记录,根据日志记录中的特征码,筛选包含相同特征码的所有相关本次业务请求的日志记录,基于预设的问题类型的关联信息,确定问题类型。
在所述步骤1中,所述机房信息、业务应用信息、请求信息及用户信息之间以点号顺序拼接。
所述特征码记为:{机房名称}.{请求时间}.{应用名称}.{请求类型}.{访问者ID)}.{访问者IP}.{访问设备标记符}的格式;所述机房中部署多个业务应用。
在所述步骤1中的定义唯一特征码中,在访问者IP的信息中,增加与IP对应的国家名称。
在所述步骤2中,根据请求标记符判断请求类型,具体流程包含:若业务请求携带有HTTP请求的标记符,则判定为Web请求;根据HTTP请求头User-Agent的内容,判断访问者身份是用户还是爬虫;若访问者身份是用户,记本次业务请求的请求类型为用户请求类型;若访问者身份是爬虫,记本次业务请求的请求类型为爬虫请求类型;从HTTP请求头Cookie中获取访问ID;从请求头中获取访问者IP;
若业务请求携带有预设的调度请求标记符,则从调度请求的信息中获取被调度应用名称、调度任务名称、被调度应用所在的服务器IP;以被调度应用为前置应用,以调度任务名称为用户ID;以被调度应用所在的服务器IP为用户IP。
在所述步骤2中,每个业务请求在所在的业务应用中的请求线程是唯一的,所述已写入请求线程中的特征码,在当前业务请求结束时,从请求线程中删除。
在所述步骤5中,所述根据日志记录中的特征码,筛选包含相同特征码的所有相关本次业务请求的日志记录,基于预设的问题类型的关联信息,确定问题类型,具体为:根据特征码中机房信息、业务应用信息、请求信息、访问者身份信息的信息类别,以信息类别筛选系统内所有日志记录,通过检查日志记录是否存在相同的错误信息,排查在其他业务请求处理过程中是否存在相同的问题类型;若存在,获取所述日志记录中的特征码,以消息的形式通知技术人员;若不存在,则不通知。
所述步骤5中,所述问题类型与特征码中包含的信息相对应,具体为:所述问题类型包含机房问题、业务应用问题、请求类型问题、访问者身份问题、访问设备问题;所述机房问题与特征码中的机房信息对应;所述业务应用问题与特征码中的业务应用信息对应;所述请求类型问题与特征码中的请求信息对应;所述访问者身份问题及访问设备问题,与特征码中的访问者信息对应,新应用上线时,通过筛选不同请求类型的日志记录,同步记录用户请求、爬虫请求及调度请求的业务请求的全过程数据。
所述步骤2至步骤5以功能模块的形式嵌入应用服务器中用以对接外部日志分析系统,执行日志数据记录、统计及可视化。
本发明所达到的有益效果:
(1)本发明通过在接收请求时动态获取业务请求相关的机房信息、业务应用信息、请求信息及访问者信息,并将信息拼接形成的字符编码写入应用日志,作为应用日志的特征码,使技术人员不需再花费大量时间翻阅、整理所有日志,而是能通过特征码包含的多个字段信息筛选重点关注的日志,这不仅减少了人工整理的时间,降低人工成本,更提高了对重点日志的筛查效率,实现针对某一类问题的特别观察,以便于快速地排查问题;
(2)本发明通过将特征码TraceID写入调用请求中,并随同调用请求写入被调用应用的日志中,实现在请求处理中,以TraceID记录同机房及跨机房的应用调用关系,帮助技术人员在遇到请求报错时,不仅能利用TraceID获取当前一次请求过程涉及的所有日志,定位一次请求遇到的问题,也可以从TraceID中获取字段信息作为关键词,检索其他请求过程中的所有日志,排查其他请求是否存在共性问题。
附图说明
图1为本发明实施例中一种分布式环境中的请求日志记录和分析方法流程图;
图2为本发明实施例中请求日志记录处理流程图;
图3为本发明实施例中生成的日志记录唯一特征码TraceId的示意图;
图4为本发明实施例中请求的日志记录处理流程图;
图5为本发明实施例中日志记录检索过程流程图;
图6为本发明实施例中一种请求过程中日志记录的系统结构图。
具体实施方式
下面结合附图和示例性实施例对本发明作进一步的说明:
在实际的业务问题排查过程中,不管是系统的主动报错,还是人为上报的被动报错,技术人员需要花费大量时间根据报错时间筛查日志,进而在日志内容中排查问题,然而日志中包含许多繁杂的内容,尤其在分布式环境中,如若单纯依赖技术人员一个接一个的日志内容排查,无疑给他们的工作带来负担,且这样低效的排查,也极大延迟了问题解决的速度。
技术人员基于对以往报错信息分析,以及在问题排查过程中对问题类型的总结,经过对问题类型发生频率的统计,发现在日志筛查过程中,最容易出现的问题包含:(1)请求调用是从哪个机房来的;(2)请求到达的第一个应用是什么应用;(3)无法通过日志分辨访问者是用户,还是爬虫或调度系统;(4)无法将特定访问者的日志快速筛选;(5)日志记录无法反应业务应用之间的逻辑关系。
因此,技术人员提出在请求达到欲访问的应用时,动态地收集与业务请求相关的机房信息、业务应用信息、请求信息及访问者信息,将这些信息形成一种字符编码;将字符编码写入业务应用的日志记录中,使字符编码不仅能标记一次请求同机房调用时产生的所有日志记录,也能标记一次请求跨机房调用时产生的所有日志记录;
如图1为本发明实施例中一种分布式环境中的请求日志记录和分析方法流程图,具体流程包含:
步骤1-1:定义标记日志记录的唯一特征码,记为TraceId,所述特征码是通过获取并拼接机房信息、业务应用信息、请求信息及访问者信息形成的字符编码;所述业务应用信息是前置业务应用的应用名称;所述前置业务应用是指用户请求首次到达的业务应用;所述机房信息是接收用户请求的机房名称;所述请求信息包含请求时间和请求类型的标记符;所述请求类型包含用户请求、爬虫请求和调度请求;所述访问者信息包含访问者ID、访问者IP、访问设备标记符;所述访问设备包含移动设备和PC;
所述机房信息、业务应用信息、请求信息及用户信息之间以点号顺序拼接,记为:{机房名称}.{请求时间}.{应用名称}.{请求类型}.{访问者ID)}.{访问者IP}.{访问设备标记符};
所述机房中部署多个业务应用;
在所述定义唯一特征码中,根据访问者IP,按照IP与国家的对应关系,在访问者IP的信息中,增加与IP对应的国家名称;
步骤1-2:拦截业务请求,获取并记录请求信息,生成唯一特征码TraceId;具体为:根据请求标记符判断请求类型;前置应用拦截业务请求,获取接收请求的机房名、前置应用名称及当前的请求时间;从业务请求的信息中获取访问者ID、访问者IP及访问设备标记符;按照步骤1-1定义的特征码格式,拼接生成本次业务请求的TraceId,并将TraceId写入请求线程中;所述每个业务请求的请求线程是唯一的,所述已写入请求线程中的TraceId,在当前业务请求结束时,从请求线程中删除;
所述根据请求标记符判断请求类型,具体流程包含:
步骤1-2-1:若业务请求携带有HTTP请求的标记符,则判定为Web请求;根据HTTP请求头User-Agent的内容,判断访问者身份是用户还是爬虫;若访问者身份是用户,记本次业务请求的请求类型为用户请求类型;若访问者身份是爬虫,记本次业务请求的请求类型为爬虫请求类型;从HTTP请求头Cookie中获取访问ID;从请求头中获取访问者IP;
步骤1-2-2:若业务请求携带有预设的调度请求标记符,则业务请求为调度请求类型,从调度请求的信息中获取被调度应用名称、调度任务名称、被调度应用所在的服务器IP;以被调度应用为前置应用,以调度任务名称为用户ID;以被调度应用所在的服务器IP为用户IP;
步骤1-3:通过TraceId记录业务应用间的调用关系:在业务请求向后传递时,包含同机房的业务应用调用和跨机房的业务应用调用,获取请求线程中的TraceId,将所述TraceID写入调用请求中,并传至被调用的业务应用;被调用的业务应用获取调用请求中的TraceID,在处理完调用请求后,将TraceId写入所述被调用业务应用的日志记录中;
步骤1-4:循环执行步骤3,直至相关业务请求的业务调用执行完毕,参与处理本次业务请求的所有业务应用所产生的日志记录,都以步骤2生成的TraceId标记;
通过TraceId实现将应用间调用关系、机房间的应用调用关系串联;
步骤1-5:通过日志记录进行问题定位及排查:当请求处理过程中报错时,提取包含错误信息的日志记录,根据日志记录的TraceId,筛选包含相同TraceId的所有相关本次业务请求的日志记录,由技术人员在筛选的日志记录中定位问题,确定问题类型;所述问题类型与TraceID中包含的信息对应;根据TraceID中机房信息、业务应用信息、请求信息、访问者身份信息的信息类别,以信息类别筛选系统内所有日志记录,通过检查日志记录是否存在相同的错误信息,排查在其他业务请求处理过程中是否存在相同的问题类型;
所述问题类型与TraceID中包含的信息对应,具体是:所述问题类型包含机房问题、业务应用问题、请求类型问题、访问者身份问题、访问设备问题;所述机房问题与TraceID中的机房信息对应,以机房信息定位业务请求来源的机房名称,区分机房是海外机房还是本地机房;所述业务应用问题与TraceID中的业务应用信息对应,以定位业务请求访问的第一个业务应用;所述请求类型问题与TraceID中的请求信息对应,以区分请求发送方是真实用户、爬虫还是调度系统;所述访问者身份问题及访问设备问题,与TraceID中的访问者信息对应,以定位业务请求的发送方、地理位置及使用设备。待新应用上线时,通过筛选不同请求类型的日志记录,同步观察用户请求、爬虫请求及调度请求的业务请求全过程;
本专利动态获取对分析业务问题至关重要的业务字段信息,定义一种包含重要业务字段信息的traceId格式,实现不仅通过traceId进行串联所有日志记录,而且能够获取请求从哪个机房发起的请求,请求到达机房的第一个应用的名称和时间,也能从日志记录中获取到此请求的类型,是用户,爬虫或者job,用户身份ID,用户的IP信息,可以在日志分析系统中,通过这些字段信息查询到想要获取的所有日志信息,便于从获取的日志信息中排查线上问题.
图2为本发明实施例中请求日志记录处理流程图,具体流程包括:
步骤2-1:定义一种标记日志记录唯一性的特征码TraceId,特征码TraceId格式:{机房信息}.{请求时间}.{应用名称}.{请求类型(用户或者爬虫,job)}.{访问者ID)}.{访问者ip+设备},机房信息表示请求首先到达的前置应用所在的哪个机房,比如:美国机房,电信机房等;请求时间表示请求首先到达的前置应用的时间;应用名称表示请求首先到达的前置应用的名称;所述前置业务应用是指用户请求首次到达的业务应用;请求类型表示请求的类型,如果请求是web请求,获取请求头信息的User-Agent值,识别其值为用户或者爬虫;如果请求是调度系统发出的调度任务,则识别为调度请求;访问者ID表示请求访问者的ID号,如果请求是web请求,从浏览器cookie里获取访问ID,如果请求是调度请求,记录调度任务名称为访问ID;访问者ip表示记录访问者的IP信息和IP对应的国家信息,如果是调度任务,会记录被调度应用的服务器IP;
步骤2-2:请求访问任意DC(机房)时,前置应用拦截请求,生成此次访问的唯一特征码TraceID,如图3为本发明实施例中生成的日志记录唯一特征码TraceId的示意图;如果请求是web请求,前置应用首先会通过请求过滤模块拦截此次请求,按照步骤2-1,生成此次访问的唯一性特征码TraceId,并将此TraceId放到线程上下文中,如果请求是任务调度job,前置应用首先会通过服务化服务端模块拦截此次请求,也需按照步骤2-1,生成此次请求访问的唯一性特征码TraceId,并将此TraceId放到线程上下文中;
步骤2-3:前置应用调用应用时,将TraceId写入调用请求中,被调用应用将TraceId写入日志记录,具体是:前置应用记录日志时,会从线程上下文中获取此TraceId,将TraceId一并记录到日志记录中,前置应用调用其他应用时,会首先通过服务化客户端模块将此TraceId与调用请求一并传过去,当请求到达其他应用时,会通过服务化服务端模块获取传过来的TraceId,并将此TraceId放到此应用的线程上下文中,在其他应用记录日志时会将TraceId一并记录;
步骤2-4:当前机房请求调用其他机房应用服务时,会通过服务化客户端模块将此TraceId一并传过去,其他机房的应用会通过服务化服务端模块来获取传过来的TraceId,重复上面步骤2-2和步骤2-3,直至此次请求调用结束,所有记录日志的地方都会将此TraceId一并记录。通过TraceId将应用间调用关系、机房间的应用调用关系串联起来;
本发明通过在每条日志信息中记录TraceId的方式,此TraceId的值不是单纯无意义的唯一ID,TraceId生成时的格式:{机房信息}.{请求时间}.{应用名称}.{请求类型(用户或者爬虫,job)}.{UID(访问者ID)}.{访问者ip}.{访问设备标记符},将此TraceId增加到一次完整请求调用所产生所有日志上,在查看日志时,解决了5个痛点:查看日志时,无法分辨请求调用是从哪个DC(机房)来的;查看日志时,无法分辨请求到达的第一个应用是什么应用;查看日志时,无法分辨日志是用户,爬虫或job所调用产生的;查看日志时,无法将特定的用户或者爬虫,job产生的日志串起来,便于更好的排查问题;无法在日志收集平台上高效查找特定日志。
图4为本发明实施例中请求的日志记录处理流程图,当一个请求进入机房1-应用A时,机房1内的应用A生成请求特征码TraceId;机房1-应用A在记录此请求涉及的所有日志时,会将此TraceId一并记录到日志中;机房1-应用A调用机房1-应用B时,会将TraceId传递到机房1-应用B中,机房1-应用B在记录此请求涉及的所有日志时,会将此TraceId一并记录到日志中;如果此请求调用到了机房2-应用C的服务,会将TraceId传递到机房2-应用C中,机房2-应用C在记录此请求涉及的所有日志时,会将此TraceId一并记录到日志中;机房2-应用C调用机房2-应用D时,会将TraceId传递到机房2-应用D中,机房2-应用D在记录此请求涉及的所有日志时,会将此TraceId一并记录到日志中。
图5为本发明实施例中日志记录检索过程流程图,开发人员可以使用日志查询客户端,通过TraceId或者TraceId包含的任意一个字段信息进行检索,日志查询客户端会返回日志服务器中满足条件的日志列表,所示返回的日志记录列表;开发人员分析返回的日志列表中日志记录,定位线上问题,如果此时对返回的日志列表不满足定位问题,继续通过traceId包含的其他字段信息进行检索,直至问题定位结束。
图6为本发明实施例中一种请求过程中日志记录的系统结构图,将本发明功能以功能模块的形式嵌入应用服务器中用以对接外部日志分析系统,执行日志数据记录、统计及可视化。本系统结构包含与应用服务器相连接的客户端及日志服务器;所有客户端发起的访问请求,经过应用服务器执行后,所有涉及的日志都需要记录日志唯一特征码TraceId,所有日志会集中收集到日志服务器中,日志分析服务器会获取日志服务器中记录的日志进行分析,日志查询客户端可以通过日志中包含的字段信息进行搜索查询想要的日志;
所述每个客户端的访问请求中含有IP及用户身份标识User-Agent(用户或者爬虫)或者任务调度的名称;
所述应用服务器,在原有应用服务器结构基础上新增请求过滤模块、服务化客户端模块、服务化服务端模块;
所述请求过滤模块用于拦截web请求,获取请求中的UID信息,IP信息,请求类型,所述请求类型包含用户或者爬虫,生成请求的唯一特征码TraceId,并将此TraceId保存到应用请求线程中;
所述服务化客户端模块用于传输TraceId至其他应用的应用服务器;
所述服务化服务端模块拦截调度请求,获取调度请求中的信息,生成请求的唯一特征码TraceId,保存TraceId在请求线程中;同时负责获取服务化客户端模块传输过来的TraceId。
所述日志服务器会收集应用服务器记录的所有包含TraceId的日志记录。
所述日志分析服务器通过各种分析模块分析日志服务器收集到的日志记录;
所述日志查询客户端可以通过日志记录中TraceID包含的字段信息进行检索出所有涉及到的日志记录。
本发明所达到的有益效果:
(1)本发明通过在接收请求时动态获取业务请求相关的机房信息、业务应用信息、请求信息及访问者信息,并将信息拼接形成的字符编码写入应用日志,作为应用日志的特征码,使技术人员不需再花费大量时间翻阅、整理所有日志,而是能通过特征码包含的多个字段信息筛选重点关注的日志,这不仅减少了人工整理的时间,降低人工成本,更提高了对重点日志的筛查效率,实现针对某一类问题的特别观察,以便于快速地排查问题;
(2)本发明通过将特征码TraceID写入调用请求中,并随同调用请求写入被调用应用的日志中,实现在请求处理中,以TraceID记录同机房及跨机房的应用调用关系,帮助技术人员在遇到请求报错时,不仅能利用TraceID获取当前一次请求过程涉及的所有日志,定位一次请求遇到的问题,也可以从TraceID中获取字段信息作为关键词,检索其他请求过程中的所有日志,排查其他请求是否存在共性问题。
以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。
Claims (8)
1.一种分布式环境中请求日志的记录和分析方法,其特征在于,包括如下步骤:
步骤1:定义标记日志记录的特征码,所述日志记录的特征码是通过获取并拼接业务请求的机房信息、业务应用信息、请求信息及访问者信息形成的字符编码;所述机房信息包括接收用户请求的机房名称;所述业务应用信息包括前置业务应用的应用名称;所述前置业务应用指用户请求首次到达的业务应用;所述请求信息包含请求时间和请求类型的标记符;所述请求类型包含用户请求类型、爬虫请求类型和调度请求类型;所述访问者信息包含访问者ID、访问者IP、访问设备标记符;所述访问设备包含移动设备和PC;
步骤2:拦截、获取并记录业务请求的信息,生成业务请求的特征码;具体为:前置业务应用拦截业务请求,获取接收业务请求的机房信息、业务应用信息、请求信息及访问者信息;根据请求类型的标记符判断请求类型;按照步骤1定义的特征码格式,拼接生成本次业务请求的特征码,将特征码分别写入请求线程和业务应用的日志记录中;
在所述步骤2中,根据请求标记符判断请求类型,具体流程包含:若业务请求携带有HTTP请求的标记符,则判定为Web请求;根据HTTP请求头User-Agent的内容,判断访问者身份是用户还是爬虫;若访问者身份是用户,记本次业务请求的请求类型为用户请求类型;若访问者身份是爬虫,记本次业务请求的请求类型为爬虫请求类型;从HTTP请求头Cookie中获取访问ID;从请求头中获取访问者IP;
若业务请求携带有预设的调度请求标记符,则从调度请求的信息中获取被调度应用名称、调度任务名称、被调度应用所在的服务器IP;以被调度应用为前置应用,以调度任务名称为用户ID;以被调度应用所在的服务器IP为用户IP;
步骤3:通过特征码记录业务应用间的调用关系:在业务请求向后传递时,包含同机房的业务应用调用和跨机房的业务应用调用,获取请求线程中的特征码,将所述特征码写入调用请求中,并传至被调用的业务应用;被调用的业务应用获取调用请求中的特征码,在处理完调用请求后,将特征码写入所述被调用业务应用的日志记录中;
步骤4:循环执行步骤3,直至相关业务请求的业务调用执行完毕,参与处理本次业务请求的所有业务应用所产生的日志记录,都以步骤2生成的特征码标记;
步骤5:问题定位及排查,包括:当请求处理过程中报错时,提取包含错误信息的日志记录,根据日志记录中的特征码,筛选包含相同特征码的所有相关本次业务请求的日志记录,基于预设的问题类型的关联信息,确定问题类型。
2.如权利要求1所述的一种分布式环境中请求日志的记录和分析方法,其特征在于,在所述步骤1中,所述机房信息、业务应用信息、请求信息及用户信息之间以点号顺序拼接。
3.如权利要求2所述的一种分布式环境中请求日志的记录和分析方法,其特征在于,所述特征码记为:{机房名称}.{请求时间}.{应用名称}.{请求类型}.{访问者ID}.{访问者IP}.{访问设备标记符}的格式;所述机房中部署多个业务应用。
4.如权利要求3所述的一种分布式环境中请求日志的记录和分析方法,其特征在于,在所述步骤1中的定义唯一特征码中,在访问者IP的信息中,增加与IP对应的国家名称。
5.如权利要求4所述的一种分布式环境中请求日志的记录和分析方法,其特征在于,在所述步骤2中,每个业务请求在所在的业务应用中的请求线程是唯一的,所述已写入请求线程中的特征码,在当前业务请求结束时,从请求线程中删除。
6.如权利要求5所述的一种分布式环境中请求日志的记录和分析方法,其特征在于,在所述步骤5中,所述根据日志记录中的特征码,筛选包含相同特征码的所有相关本次业务请求的日志记录,基于预设的问题类型的关联信息,确定问题类型,具体为:根据特征码中机房信息、业务应用信息、请求信息、访问者身份信息的信息类别,以信息类别筛选系统内所有日志记录,通过检查日志记录是否存在相同的错误信息,排查在其他业务请求处理过程中是否存在相同的问题类型;若存在,获取所述日志记录中的特征码,以消息的形式通知技术人员;若不存在,则不通知。
7.如权利要求6所述的一种分布式环境中请求日志的记录和分析方法,其特征在于,所述步骤5中,所述问题类型与特征码中包含的信息相对应,具体为:所述问题类型包含机房问题、业务应用问题、请求类型问题、访问者身份问题、访问设备问题;所述机房问题与特征码中的机房信息对应;所述业务应用问题与特征码中的业务应用信息对应;所述请求类型问题与特征码中的请求信息对应;所述访问者身份问题及访问设备问题,与特征码中的访问者信息对应,新应用上线时,通过筛选不同请求类型的日志记录,同步记录用户请求、爬虫请求及调度请求的业务请求的全过程数据。
8.如权利要求7所述的一种分布式环境中请求日志的记录和分析方法,其特征在于,所述步骤2至步骤5以功能模块的形式嵌入应用服务器中用以对接外部日志分析系统执行日志数据记录、统计及可视化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210265212.7A CN114610689B (zh) | 2022-03-17 | 2022-03-17 | 一种分布式环境中请求日志的记录和分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210265212.7A CN114610689B (zh) | 2022-03-17 | 2022-03-17 | 一种分布式环境中请求日志的记录和分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114610689A CN114610689A (zh) | 2022-06-10 |
CN114610689B true CN114610689B (zh) | 2024-04-30 |
Family
ID=81864269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210265212.7A Active CN114610689B (zh) | 2022-03-17 | 2022-03-17 | 一种分布式环境中请求日志的记录和分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114610689B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116049115B (zh) * | 2023-01-13 | 2023-12-01 | 深圳安科百腾科技有限公司 | 一种软件日志处理方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004259154A (ja) * | 2003-02-27 | 2004-09-16 | Nippon Telegr & Teleph Corp <Ntt> | ソフトウェア・コンポーネントの呼出関係トレース方法及びシステム |
JP2012234273A (ja) * | 2011-04-28 | 2012-11-29 | Kyocera Document Solutions Inc | 情報処理装置、ログ解析システム、ログ解析方法、及び、ログ解析プログラム |
CN110275817A (zh) * | 2019-06-13 | 2019-09-24 | 北京航空航天大学 | 一种基于模型驱动的日志文件自动生成方法 |
CN111274215A (zh) * | 2020-01-08 | 2020-06-12 | 成都康赛信息技术有限公司 | 一种基于分布式的日志统一管理方法 |
CN112162965A (zh) * | 2020-10-12 | 2021-01-01 | 平安科技(深圳)有限公司 | 一种日志数据处理的方法、装置、计算机设备及存储介质 |
CN112416557A (zh) * | 2020-11-23 | 2021-02-26 | 青岛海尔科技有限公司 | 调用关系的确定方法和装置、存储介质及电子装置 |
CN112540808A (zh) * | 2019-09-23 | 2021-03-23 | 腾讯科技(深圳)有限公司 | 一种程序行为层级调用关系的记录方法及相关设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3102259B1 (fr) * | 2019-10-17 | 2023-01-20 | Amadeus Sas | Surveillance d’un environnement de serveur d’applications distribué |
-
2022
- 2022-03-17 CN CN202210265212.7A patent/CN114610689B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004259154A (ja) * | 2003-02-27 | 2004-09-16 | Nippon Telegr & Teleph Corp <Ntt> | ソフトウェア・コンポーネントの呼出関係トレース方法及びシステム |
JP2012234273A (ja) * | 2011-04-28 | 2012-11-29 | Kyocera Document Solutions Inc | 情報処理装置、ログ解析システム、ログ解析方法、及び、ログ解析プログラム |
CN110275817A (zh) * | 2019-06-13 | 2019-09-24 | 北京航空航天大学 | 一种基于模型驱动的日志文件自动生成方法 |
CN112540808A (zh) * | 2019-09-23 | 2021-03-23 | 腾讯科技(深圳)有限公司 | 一种程序行为层级调用关系的记录方法及相关设备 |
CN111274215A (zh) * | 2020-01-08 | 2020-06-12 | 成都康赛信息技术有限公司 | 一种基于分布式的日志统一管理方法 |
CN112162965A (zh) * | 2020-10-12 | 2021-01-01 | 平安科技(深圳)有限公司 | 一种日志数据处理的方法、装置、计算机设备及存储介质 |
CN112416557A (zh) * | 2020-11-23 | 2021-02-26 | 青岛海尔科技有限公司 | 调用关系的确定方法和装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114610689A (zh) | 2022-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522922B (zh) | 日志信息查询方法、装置、存储介质及计算机设备 | |
CN107562620B (zh) | 一种埋点自动设置方法和装置 | |
CN110807085B (zh) | 故障信息的查询方法及装置、存储介质、电子装置 | |
CN108197200A (zh) | 日志追踪方法、装置、计算机设备和存储介质 | |
CN109885496B (zh) | 测试日志管理方法及系统 | |
CN109460307B (zh) | 基于日志埋点的微服务调用跟踪方法及其系统 | |
CN111367760B (zh) | 日志采集方法及装置、计算机设备、存储介质 | |
CN111522728A (zh) | 自动化测试用例的生成方法、电子设备及可读存储介质 | |
US20080098365A1 (en) | Performance analyzer | |
CN110134583B (zh) | 软件测试及数据处理方法及装置 | |
US8489631B2 (en) | Distributing a query | |
CN110851324B (zh) | 基于日志的巡检处理方法、装置以及电子设备、存储介质 | |
CN114610689B (zh) | 一种分布式环境中请求日志的记录和分析方法 | |
CN113360376A (zh) | 埋点测试方法和装置 | |
CN108650123B (zh) | 故障信息记录方法、装置、设备和存储介质 | |
CN116719750B (zh) | 软件测试方法及装置、服务器设备和存储介质 | |
CN114625407A (zh) | 一种ab实验的实现方法、系统、设备及存储介质 | |
CN109951355B (zh) | 一种用于分布式系统白盒关联路径追踪的方法 | |
CN108923963B (zh) | 一种利用Looking Glass测量点实现自动化拓扑测量的方法 | |
CN111026616A (zh) | 一种信息处理方法、装置、电子设备及存储介质 | |
CN112579406A (zh) | 一种日志调用链生成方法和装置 | |
CN113114612B (zh) | 分布式系统调用链的确定方法和装置 | |
CN115168297A (zh) | 绕行日志审计方法及装置 | |
CN113132143A (zh) | 服务调用追踪方法及相关产品 | |
CN113691423B (zh) | 数据流转路径的绘制方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |