CN109684052B - 事务分析方法、装置、设备及存储介质 - Google Patents
事务分析方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109684052B CN109684052B CN201811604315.1A CN201811604315A CN109684052B CN 109684052 B CN109684052 B CN 109684052B CN 201811604315 A CN201811604315 A CN 201811604315A CN 109684052 B CN109684052 B CN 109684052B
- Authority
- CN
- China
- Prior art keywords
- information
- feature
- transaction
- execution process
- execution
- 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
- 238000004458 analytical method Methods 0.000 title claims abstract description 111
- 238000000034 method Methods 0.000 claims abstract description 540
- 230000008569 process Effects 0.000 claims abstract description 472
- 230000006870 function Effects 0.000 claims description 209
- 230000002776 aggregation Effects 0.000 claims description 52
- 238000004220 aggregation Methods 0.000 claims description 52
- 238000012795 verification Methods 0.000 claims description 31
- 230000004931 aggregating effect Effects 0.000 claims description 19
- 238000003491 array Methods 0.000 claims description 17
- 230000015654 memory Effects 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000012360 testing method Methods 0.000 abstract description 13
- 230000001364 causal effect Effects 0.000 abstract description 8
- 238000003745 diagnosis Methods 0.000 abstract description 3
- 230000000875 corresponding effect Effects 0.000 description 116
- 238000010586 diagram Methods 0.000 description 50
- 238000005516 engineering process Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 21
- 238000012544 monitoring process Methods 0.000 description 16
- 230000009471 action Effects 0.000 description 14
- 238000006116 polymerization reaction Methods 0.000 description 13
- 238000002474 experimental method Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 9
- 230000002596 correlated effect Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000012423 maintenance Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 239000000523 sample Substances 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000007476 Maximum Likelihood Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000000547 structure data Methods 0.000 description 4
- 230000000052 comparative effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000007619 statistical method Methods 0.000 description 3
- 238000012353 t test Methods 0.000 description 3
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 2
- 238000000692 Student's t-test Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000012447 hatching Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000010223 real-time analysis Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- QVQLCTNNEUAWMS-UHFFFAOYSA-N barium oxide Chemical compound [Ba]=O QVQLCTNNEUAWMS-UHFFFAOYSA-N 0.000 description 1
- 229910001864 baryta Inorganic materials 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000000546 chi-square test Methods 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 229940029329 intrinsic factor Drugs 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000379 polymerizing effect Effects 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种事务分析方法、装置、设备及存储介质,属于计算机技术领域。本申请提供了一种智能、自动化、高效的事务分析方法,通过特征在问题执行过程中出现的次数以及正常执行过程中出现的特征之间的差异,可以自动发现事务的潜在原因特征,无需人工进行大量的分析和测试工作,极大地缩短了分析事务耗费的时间,提高了事务分析的效率。通过潜在原因特征,能够确定与事务的问题执行过程存在因果关系的特征,从而定位到导致事务出现问题的特征,因此为性能诊断和错误定位提供了更多有价值的信息量,有助于缩短事务的问题闭环的周期,快速解决事务存在的问题。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种事务分析方法、装置、设备及存储介质。
背景技术
随着计算机技术的发展,计算机设备能够处理的事务飞速增长,同时计算机设备每天都可以多次执行同一事务,以满足大量用户的需求。为了提高执行事务的性能,需要对事务的问题进行分析,以便更好的执行事务。
目前,事务分析过程通常为:在事务的执行过程中,实时采集当前的执行记录,从执行记录中,提取执行事务所调用的每个节点的信息,该节点的信息包括节点的名称、调用节点的时长、状态码、不同节点之间的调用关系等;之后,在界面中显示每个节点的信息。运维人员可以查看每个节点的信息,根据自身经验,分别判断每个节点的信息是否异常,找出信息明显异常的节点,对这些节点的程序进行进一步测试,通过测试来判断这些节点是否存在问题,最终找到导致事务出现问题的节点。
基于上述方案进行分析时,需要人工进行大量的分析和测试工作,导致效率较为低下。
发明内容
本申请实施例提供了一种事务分析方法、装置、设备及存储介质,能够解决相关技术中事务分析的效率较低的技术问题。所述技术方案如下:
第一方面,提供了一种事务分析方法,所述方法包括:
获取事务的至少一个特征中的每个特征的第一信息以及第二信息,所述第一信息用于指示所述特征在所述事务的问题执行过程中出现的次数,所述第二信息用于指示所述特征在所述事务的正常执行过程中出现的次数;
计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息;
根据所述事务的所述至少一个特征的差异信息,分析所述至少一个特征中是否存在所述事务的潜在原因特征,所述潜在原因特征的差异信息符合差异条件。
本实施例提供的方法,提供了一种智能、自动化、高效的事务分析方法,通过特征在问题执行过程中出现的次数以及正常执行过程中出现的特征之间的差异,可以自动发现事务的潜在原因特征,无需人工进行大量的分析和测试工作,极大地缩短了分析事务耗费的时间,提高了事务分析的效率。通过潜在原因特征,能够确定与事务的问题执行过程存在因果关系的特征,从而定位到导致事务出现问题的特征,因此为性能诊断和错误定位提供了更多有价值的信息量,有助于缩短事务的问题闭环的周期,快速解决事务存在的问题。
可选地,所述计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息,包括:
获取所述每个特征的第三信息,所述第三信息用于指示所述特征的至少一个其他特征的第一信息的总和,所述其他特征为所述事务的所述特征以外的特征,所述其他特征的特征名与所述特征的特征名是相同的,所述其他特征的特征值与所述特征的特征值不同;
获取所述每个特征的第四信息,所述第四信息用于指示所述特征的至少一个其他特征的第二信息的总和;
根据所述每个特征的所述第一信息、所述每个特征的所述第二信息、所述每个特征的所述第三信息以及所述每个特征的所述第四信息,计算所述每个特征的所述差异信息。
可选地,所述根据所述每个特征的所述第一信息、所述每个特征的所述第二信息、所述每个特征的所述第三信息以及所述每个特征的所述第四信息,计算所述每个特征的所述差异信息,包括:
对于所述至少一个特征中的任一特征,将所述特征的第一信息、所述特征的第二信息、所述特征的第三信息以及所述特征的第四信息输入似然比校验模型,输出所述特征的所述差异信息;或者,
对于所述至少一个特征中的任一特征,将所述特征的第一信息、所述特征的第二信息、所述特征的第三信息以及所述特征的第四信息输入假设校验模型,从所述假设校验模型中,获取所述特征的差异信息。
可选地,所述计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息,包括:
根据所述每个特征的所述第一信息,生成至少一个第一蜡烛图,所述第一蜡烛图用于表示所述事务的问题执行过程中同一特征名的特征的分布情况;根据所述每个特征的所述第二信息,生成至少一个第二蜡烛图,所述第二蜡烛图用于表示所述事务的正常执行过程中同一特征名的特征的分布情况;计算所述每个特征所属的特征名的第一蜡烛图与所述每个特征所属的特征名的第二蜡烛图之间的差异信息;或者,
计算第一直方图与第二直方图之间的差异信息,所述第一直方图用于表示同一特征名的每个特征的第一信息的分布情况,所述第二直方图用于表示同一特征名的每个特征的第二信息的分布情况;或者,
根据所述每个特征的所述第一信息,生成至少一个第一曲线图,所述第一曲线图用于表示所述事务的问题执行过程中同一特征名的特征的变化趋势;根据所述每个特征的所述第二信息,生成至少一个第二曲线图,所述第二曲线图用于表示所述事务的正常执行过程中同一特征名的特征的分布情况;计算所述每个特征所属的特征名的第一曲线图与所述每个特征所属的特征名的第二曲线图之间的差异信息。
可选地,所述差异信息符合差异条件,包括:
所述差异信息大于差异信息阈值;或者,
所述差异信息在所述事务的至少一个特征的差异信息中排在前预设位数;或者,
所述差异信息与至少一个其他特征的差异信息之间的偏差大于偏差阈值;或者,
所述差异信息是所述事务的至少一个特征的差异信息中最大的差异信息;或者,
所述差异信息在所述事务的至少一个特征的差异信息中处于目标范围,所述目标范围的一个端点是所述事务的至少一个特征的差异信息中最大的差异信息,所述目标范围的另一个端点是所述事务的至少一个特征的差异信息按照从大到小的顺序排序后的目标百分位数。
可选地,所述获取事务的至少一个特征中的每个特征的第一信息以及第二信息,包括:
对于所述至少一个特征中的任一特征,使用多个不同的哈希函数,对所述特征进行哈希运算,得到多个不同的哈希值;根据多个不同的哈希值,在多个不同的第一数组中获取多个第一位置;对所述多个第一位置存储的次数进行递增;当符合停止统计条件时,选取所述多个第一位置存储的次数的最小值,作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,对第一直方图中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第一直方图作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,遍历第一计数信息;当在所述第一计数信息中遍历到所述特征时,对所述第一计数信息中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第一计数信息中所述特征对应的次数作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,使用哈希函数,对所述特征进行哈希运算,得到哈希值;根据所述哈希值,在第二数组中获取第二位置;对所述第二位置存储的次数进行递增;当符合停止统计条件时,获取所述第二位置存储的次数,作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,使用多个不同的哈希函数,对所述特征进行哈希运算,得到多个不同的哈希值;根据多个哈希值,在多个不同的第三数组中获取多个第三位置;对所述多个第三位置存储的次数进行递增;当符合停止统计条件时,选取所述多个第三位置存储的次数的最小值,作为所述特征的第二信息;或者,
对于所述至少一个特征中的任一特征,对第二直方图中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第二直方图作为所述特征的第二信息;或者,
对于所述至少一个特征中的任一特征,遍历第二计数信息;当在所述第二计数信息中遍历到所述特征时,对所述第二计数信息中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第二计数信息中所述特征对应的次数作为所述特征的第二信息,或者,
对于所述至少一个特征中的任一特征,使用哈希函数,对所述特征进行哈希运算,得到哈希值;根据所述哈希值,在第四数组中获取第四位置;对所述第四位置存储的次数进行递增;当符合停止统计条件时,获取所述第四位置存储的次数,作为所述特征的第二信息。
可选地,所述问题执行过程包括慢执行过程、失败执行过程、发生网络攻击的执行过程中的至少一项,所述正常执行过程包括不慢执行过程、成功执行过程、未发生网络攻击的执行过程中的至少一项;
相应地,所述获取事务的至少一个特征中的每个特征的第一信息以及第二信息之前,所述方法还包括:
根据所述事务的至少一次执行过程的执行时长,从所述至少一次执行过程中,确定所述事务的慢执行过程;或者,
根据所述事务的至少一次执行过程的状态码,从所述至少一次执行过程中,确定所述事务的失败执行过程;或者,
根据所述事务的至少一次执行过程的执行记录,从所述至少一次执行过程中,确定所述事务的发生网络攻击的执行过程;或者,
根据所述事务的至少一次执行过程的执行时长,从所述至少一次执行过程中,确定所述事务的不慢执行过程;或者,
根据所述事务的至少一次执行过程的状态码,从所述至少一次执行过程中,确定所述事务的成功执行过程;或者,
根据所述事务的至少一次执行过程的执行记录,从所述至少一次执行过程中,确定所述事务的未发生网络攻击的执行过程。
可选地,所述获取事务的至少一个特征中的每个特征的第一信息以及第二信息,包括:
对所述事务的添加了第一标签的特征的出现次数进行统计,得到所述第一信息,所述第一标签用于标识所述问题执行过程;
对所述事务的添加了第二标签的特征的出现次数进行统计,得到所述第二信息,所述第二标签用于标识所述正常执行过程。
可选地,所述获取事务的至少一个特征中的每个特征的第一信息以及第二信息之前,所述方法还包括:
接收所述事务的任一执行记录;
当所述执行记录为事务返回记录时,根据所述执行记录,为所述执行记录以及至少一个相关执行记录添加所述第一标签或者所述第二标签,所述至少一个相关执行记录与所述执行记录属于所述事务的同一次执行过程。
通过上述可选方式,达到的效果至少可以包括:
根据事务在一段时间的执行记录,对事务在这段时间的每次执行过程,区分为问题执行过程以及正常执行过程,为两种执行过程中出现的特征分别进行次数统计,从而得到事务的每个特征在问题执行过程中出现的次数以及在正常执行过程中的出现次数,进而通过两种出现次数来发现事务的潜在原因特征,可以自动发现事务的潜在原因特征,无需人工进行大量的分析和测试工作,极大地缩短了分析事务耗费的时间,提高了事务分析的效率。
可选地,所述根据所述事务的所述至少一个特征的差异信息,分析所述至少一个特征中是否存在所述事务的潜在原因特征之后,所述方法还包括:
如果所述事务具有多个潜在原因特征,则确定所述多个潜在原因特征的包含关系;
根据所述包含关系,选择上位的潜在原因特征。
可选地,所述多个潜在原因特征包括:服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征中的至少两项;
所述多个潜在原因特征具有的上下位关系依次如下:服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征。
通过这种可选方式,达到的效果至少可以包括:
可以对大量的潜在原因信息根据包含与被包含的关系进行洞察,从而挖掘出真正的根因,帮助用户分析问题,避免告警风暴。
可选地,所述获取事务的至少一个特征中的每个特征的第一信息以及第二信息,包括:
当到达第一时间周期时,获取所述第一信息以及所述第二信息;
相应地,所述计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息之前,所述方法还包括:
对获取到的第一时间周期的第一信息进行缓存,对获取到的第一时间周期的第二信息进行缓存;
当到达第二时间周期时,对已缓存的多个第一时间周期的第一信息进行聚合,对已缓存的多个第一时间周期的第二信息进行聚合,所述第二时间周期大于所述第一时间周期;
相应地,所述计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息,包括:
获取聚合后的第一信息与聚合后的第二信息之间的差异信息。
可选地,所述对已缓存的多个第一时间周期的第一信息进行聚合,包括:
对当前的第一时间周期的第一信息与第一聚合次数相加,得到第一和值,所述第一聚合次数为上一个第二时间周期中所有第一信息的总和,所述上一个第二时间周期与当前的第二时间周期相隔一个第一时间周期;对所述第一和值与目标第一时间周期的第一信息相减,将差值作为聚合后的第一信息,所述目标第一时间周期与所述当前的第一时间周期相隔一个第二时间周期;或者,
对当前的第一时间周期的第一信息与上一个第二时间周期中目标第一时间周期以外的每个第一时间周期的第一信息相加,将和值作为聚合后的第一信息;
相应地,所述对已缓存的多个第一时间周期的第二信息进行聚合,包括:
对当前的第一时间周期的第二信息与第二聚合次数相加,得到第二和值,所述第二聚合次数为上一个第二时间周期中所有第二信息的总和;对所述第二和值与目标第一时间周期的第二信息相减,将差值作为聚合后的第二信息;或者,
对当前的第一时间周期的第二信息与当前的第二时间周期的上一个第二时间周期中目标第一时间周期以外的每个第一时间周期的第二信息相加,将和值作为聚合后的第二信息。
通过这种聚合方式,达到的效果至少可以包括:
一方面,每当到达任一第一时间周期时,均可以计算出最新的第二时间周期的聚合计数,保证后续发现潜在原因特征时,使用的数据具有高时效性。例如,每当到达1分钟时,均可以计算出前10分钟的聚合计数。另一方面,每当到达任一第一时间周期时,通过一次减法操作以及一次加法操作,即可得到聚合计数,提高了效率,优化了性能。例如,当接收到第11分钟的计数时,通过对第11分钟的计数与聚合计数相加,然后再减去第一分钟的计数,则通过两步操作,即可计算出第2分钟至第11分钟的聚合计数。
第二方面,提供了一种事务分析装置,所述装置包括:
获取模块,用于获取事务的至少一个特征中的每个特征的第一信息以及第二信息,所述第一信息用于指示所述特征在所述事务的问题执行过程中出现的次数,所述第二信息用于指示所述特征在所述事务的正常执行过程中出现的次数;
计算模块,用于计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息;
分析模块,用于根据所述事务的所述至少一个特征的差异信息,分析所述至少一个特征中是否存在所述事务的潜在原因特征,所述潜在原因特征的差异信息符合差异条件。
可选地,所述计算模块,用于:
获取所述每个特征的第三信息,所述第三信息用于指示所述特征的至少一个其他特征的第一信息的总和,所述其他特征为所述事务的所述特征以外的特征,所述其他特征的特征名与所述特征的特征名是相同的,所述其他特征的特征值与所述特征的特征值不同;
获取所述每个特征的第四信息,所述第四信息用于指示所述特征的至少一个其他特征的第二信息的总和;
根据所述每个特征的所述第一信息、所述每个特征的所述第二信息、所述每个特征的所述第三信息以及所述每个特征的所述第四信息,计算所述每个特征的所述差异信息。
可选地,所述计算模块,用于:
对于所述至少一个特征中的任一特征,将所述特征的第一信息、所述特征的第二信息、所述特征的第三信息以及所述特征的第四信息输入似然比校验模型,输出所述特征的所述差异信息;或者,
对于所述至少一个特征中的任一特征,将所述特征的第一信息、所述特征的第二信息、所述特征的第三信息以及所述特征的第四信息输入假设校验模型,从所述假设校验模型中,获取所述特征的差异信息。
可选地,所述计算模块,用于:
根据所述每个特征的所述第一信息,生成至少一个第一蜡烛图,所述第一蜡烛图用于表示所述事务的问题执行过程中同一特征名的特征的分布情况;根据所述每个特征的所述第二信息,生成至少一个第二蜡烛图,所述第二蜡烛图用于表示所述事务的正常执行过程中同一特征名的特征的分布情况;计算所述每个特征所属的特征名的第一蜡烛图与所述每个特征所属的特征名的第二蜡烛图之间的差异信息;或者,
计算第一直方图与第二直方图之间的差异信息,所述第一直方图用于表示同一特征名的每个特征的第一信息的分布情况,所述第二直方图用于表示同一特征名的每个特征的第二信息的分布情况;或者,
根据所述每个特征的所述第一信息,生成至少一个第一曲线图,所述第一曲线图用于表示所述事务的问题执行过程中同一特征名的特征的变化趋势;根据所述每个特征的所述第二信息,生成至少一个第二曲线图,所述第二曲线图用于表示所述事务的正常执行过程中同一特征名的特征的分布情况;计算所述每个特征所属的特征名的第一曲线图与所述每个特征所属的特征名的第二曲线图之间的差异信息。
可选地,所述差异信息符合差异条件,包括:
所述差异信息大于差异信息阈值;或者,
所述差异信息在所述事务的至少一个特征的差异信息中排在前预设位数;或者,
所述差异信息与至少一个其他特征的差异信息之间的偏差大于偏差阈值;或者,
所述差异信息是所述事务的至少一个特征的差异信息中最大的差异信息;或者,
所述差异信息在所述事务的至少一个特征的差异信息中处于目标范围,所述目标范围的一个端点是所述事务的至少一个特征的差异信息中最大的差异信息,所述目标范围的另一个端点是所述事务的至少一个特征的差异信息按照从大到小的顺序排序后的目标百分位数。
可选地,所述获取模块,用于:
对于所述至少一个特征中的任一特征,使用多个不同的哈希函数,对所述特征进行哈希运算,得到多个不同的哈希值;根据多个不同的哈希值,在多个不同的第一数组中获取多个第一位置;对所述多个第一位置存储的次数进行递增;当符合停止统计条件时,选取所述多个第一位置存储的次数的最小值,作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,对第一直方图中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第一直方图作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,遍历第一计数信息;当在所述第一计数信息中遍历到所述特征时,对所述第一计数信息中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第一计数信息中所述特征对应的次数作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,使用哈希函数,对所述特征进行哈希运算,得到哈希值;根据所述哈希值,在第二数组中获取第二位置;对所述第二位置存储的次数进行递增;当符合停止统计条件时,获取所述第二位置存储的次数,作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,使用多个不同的哈希函数,对所述特征进行哈希运算,得到多个不同的哈希值;根据多个哈希值,在多个不同的第三数组中获取多个第三位置;对所述多个第三位置存储的次数进行递增;当符合停止统计条件时,选取所述多个第三位置存储的次数的最小值,作为所述特征的第二信息;或者,
对于所述至少一个特征中的任一特征,对第二直方图中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第二直方图作为所述特征的第二信息;或者,
对于所述至少一个特征中的任一特征,遍历第二计数信息;当在所述第二计数信息中遍历到所述特征时,对所述第二计数信息中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第二计数信息中所述特征对应的次数作为所述特征的第二信息,或者,
对于所述至少一个特征中的任一特征,使用哈希函数,对所述特征进行哈希运算,得到哈希值;根据所述哈希值,在第四数组中获取第四位置;对所述第四位置存储的次数进行递增;当符合停止统计条件时,获取所述第四位置存储的次数,作为所述特征的第二信息。
可选地,所述问题执行过程包括慢执行过程、失败执行过程、发生网络攻击的执行过程中的至少一项,所述正常执行过程包括不慢执行过程、成功执行过程、未发生网络攻击的执行过程中的至少一项;
相应地,所述装置还包括:确定模块,用于:
根据所述事务的至少一次执行过程的执行时长,从所述至少一次执行过程中,确定所述事务的慢执行过程;或者,
根据所述事务的至少一次执行过程的状态码,从所述至少一次执行过程中,确定所述事务的失败执行过程;或者,
根据所述事务的至少一次执行过程的执行记录,从所述至少一次执行过程中,确定所述事务的发生网络攻击的执行过程;或者,
根据所述事务的至少一次执行过程的执行时长,从所述至少一次执行过程中,确定所述事务的不慢执行过程;或者,
根据所述事务的至少一次执行过程的状态码,从所述至少一次执行过程中,确定所述事务的成功执行过程;或者,
根据所述事务的至少一次执行过程的执行记录,从所述至少一次执行过程中,确定所述事务的未发生网络攻击的执行过程。
可选地,所述获取模块,用于:
对所述事务的添加了第一标签的特征的出现次数进行统计,得到所述第一信息,所述第一标签用于标识所述问题执行过程;
对所述事务的添加了第二标签的特征的出现次数进行统计,得到所述第二信息,所述第二标签用于标识所述正常执行过程。
可选地,所述装置还包括:
接收模块,用于接收所述事务的任一执行记录;
添加模块,用于当所述执行记录为事务返回记录时,根据所述执行记录,为所述执行记录以及至少一个相关执行记录添加所述第一标签或者所述第二标签,所述至少一个相关执行记录与所述执行记录属于所述事务的同一次执行过程。
可选地,所述装置还包括:
确定模块,用于如果所述事务具有多个潜在原因特征,则确定所述多个潜在原因特征的包含关系;
选择模块,用于根据所述包含关系,选择上位的潜在原因特征。
可选地,所述多个潜在原因特征包括:服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征中的至少两项;
所述多个潜在原因特征具有的上下位关系依次如下:服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征。
可选地,所述获取模块,用于:当到达第一时间周期时,获取所述第一信息以及所述第二信息;
相应地,所述装置还包括:
缓存模块,用于对获取到的第一时间周期的第一信息进行缓存,对获取到的第一时间周期的第二信息进行缓存;
聚合模块,用于当到达第二时间周期时,对已缓存的多个第一时间周期的第一信息进行聚合,对已缓存的多个第一时间周期的第二信息进行聚合,所述第二时间周期大于所述第一时间周期;
相应地,所述获取模块,用于:
获取聚合后的第一信息与聚合后的第二信息之间的差异信息。
可选地,所述缓存模块,用于:
对当前的第一时间周期的第一信息与第一聚合次数相加,得到第一和值,所述第一聚合次数为上一个第二时间周期中所有第一信息的总和,所述上一个第二时间周期与当前的第二时间周期相隔一个第一时间周期;对所述第一和值与目标第一时间周期的第一信息相减,将差值作为聚合后的第一信息,所述目标第一时间周期与所述当前的第一时间周期相隔一个第二时间周期;或者,
对当前的第一时间周期的第一信息与上一个第二时间周期中目标第一时间周期以外的每个第一时间周期的第一信息相加,将和值作为聚合后的第一信息;
相应地,所述聚合模块,用于:
对当前的第一时间周期的第二信息与第二聚合次数相加,得到第二和值,所述第二聚合次数为上一个第二时间周期中所有第二信息的总和;对所述第二和值与目标第一时间周期的第二信息相减,将差值作为聚合后的第二信息;或者,
对当前的第一时间周期的第二信息与当前的第二时间周期的上一个第二时间周期中目标第一时间周期以外的每个第一时间周期的第二信息相加,将和值作为聚合后的第二信息。
第三方面,提供一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述第一方面或第一方面的任一种可选方式所述的事务分析方法所执行的操作。
第四方面,提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述第一方面或第一方面的任一种可选方式所述的事务分析方法所执行的操作。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得该计算机设备能够实现上述第一方面或第一方面的任一种可选方式所述的事务分析方法所执行的操作。
第六方面,提供了一种计算机设备集群,包括至少一个计算机设备,每个计算机设备包括处理器和存储器,所述至少一个计算机设备的处理器用于执行以实现上述第一方面或第一方面的任一种可选方式所述的事务分析方法所执行的操作。
第七方面,提供了一种芯片,所述芯片包括处理器和/或程序指令,当所述芯片运行时,实现上述第一方面或第一方面的任一种可选方式所述的事务分析方法所执行的操作。
附图说明
图1是本申请实施例提供的一种调用链的示意图;
图2是本申请实施例提供的一个调用链的多个调用信息的示意图;
图3是本申请实施例提供的一种实施环境的架构图;
图4是本发明实施例提供的一种计算机设备的结构示意图;
图5是本申请实施例提供的一种计算机设备集群的系统架构图;
图6是本申请实施例提供的一种计算机设备集群的系统架构图;
图7是本申请实施例提供的一种事务分析方法的流程图;
图8是本申请实施例提供的一种执行时长基线的示意图;
图9是本申请实施例提供的携带了第一信息的第一列表的示意图;
图10是本申请实施例提供的携带了第一信息的第一直方图的示意图;
图11是本申请实施例提供的一种计数最小草图的示意图;
图12是本申请实施例提供的一种使用计数最小草图技术进行计数的示意图;
图13是本申请实施例提供的一种计数信息的示意图;
图14是本申请实施例提供的一种使用计数信息进行计数的示意图;
图15是本申请实施例提供的一种使用计数信息进行计数的示意图;
图16是本申请实施例提供的一种使用直方图进行计数的示意图;
图17是本申请实施例提供的携带了第二信息的第三列表的示意图;
图18是本申请实施例提供的携带了第二信息的第二直方图的示意图;
图19是本申请实施例提供的一种第一蜡烛图的示意图;
图20是本申请实施例提供的一种第二蜡烛图的示意图;
图21是本申请实施例提供的一种计算两个蜡烛图之间的差异的示意图;
图22是本申请实施例提供的一种计算两个蜡烛图之间的差异的示意图;
图23是本申请实施例提供的一种事务分析方法的流程图;
图24是本申请实施例提供的一种计数聚合的示意图;
图25是本申请实施例提供的一种特征缓存的示意图;
图26是本申请实施例提供的一种特征缓存的示意图;
图27是本申请实施例提供的一种事务洞察发现的系统架构图;
图28是本申请实施例提供的一种事务分析装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
事务(英文:transaction):是指具有计算能力的一个或多个节点所执行的一个或一系列操作。其中,该执行事务的节点可以为软件,例如,节点可以为虚拟机(VirtualMachine,缩写:VM)、容器、应用、服务、微服务、模块、子模块、类或函数;当然,节点也可以为硬件,例如,该节点可以为计算硬件、存储硬件或网络硬件等,该计算硬件可以是服务器,该存储硬件可以是硬盘,该网络硬件可以是网卡、交换机、路由器等,本实施例对该节点的具体形态不做限定。事务可以包括计算事务、存储事务、网络事务等。具体地,计算事务可以是登录事务、注册事务、游戏事务等。存储事务可以是将数据存入数据库的事务、从数据库读取数据的事务等。网络事务可以是向其他设备发送数据包的事务、从其他设备接收数据包的事务等。示例性地,事务可以包括流媒体事务、浏览网页、下载文件、收发邮件、网络电话(Voice over Internet Protocol,缩写:VOIP)、超文本传输协议(HyperText TransferProtocol,HTTP)事务、即时通讯(InstantMessaging,缩写:IM)事务、文件传输协议(FileTransfer Protocol、缩写:FTP)事务、对等网络(Peer to Peer,缩写:P2P)事务等。其中,流媒体事务包括而不限于播放和/或下载视频、播放和/或下载音乐、视频直播等。
调用链(英文:call trace):用于指示执行事务的多个节点以及多个节点之间的调用关系。以节点为服务为例,举例来说,调用链可以为:前端服务可以调用中间层服务,中间层服务调用后端服务。示例性地,参见图1,终端触发了图1所示的调用链,该调用链为:前端服务A调用中间层服务B以及中间层服务C,中间层服务C调用后端服务D和后端服务E。调用链可以包括一个或多个调用信息(英文:span)。
调用信息用于描述一次调用过程的一次调用动作,调用信息可以视为描述一次调用过程的元数据(英文:metadata)。参见图2,图2为一个调用链的多个调用信息的示意图,一次调用过程可以通过四个调用动作定义,该四个动作包括客户端发送请求(英文:clientsend,缩写:cs)、服务器接收(英文:server receive,缩写:sr)请求、服务器发送(英文:server send,缩写:ss)请求以及客户端接收(英文:client receive,缩写:cr)请求,相应地,调用信息可以包括这四种动作的信息以及通过这四种动作统计得出的相关信息。调用信息可以包括链路标识、节点的名称、节点的标识、父节点的标识、时间戳、调用时长、状态码中的至少一项。
链路标识用于标识调用链。同一调用链的不同调用信息的链路标识相同,例如,不同调用链的调用信息的链路标识不同。在程序中,链路标识可以记录为“trace_id”。
节点的名称可以为调用链中函数的名称、调用链中服务的名称等。同一个调用链中不同调用信息的节点的名称可以相同或不同。例如,当调用过程中多次调用同一函数时,调用链的多个调用信息中节点的名称可以是重复的。可选地,在程序中,节点的名称可以记录为“spanName”。
节点的标识用于标识调用信息。可选地,在程序中,节点的标识可以记录为“span_id”。在同一个调用链中,每个节点的标识是唯一的,不同节点的标识不同。在一种可能的实现中,可以使用通用唯一识别码(英文:Universally Unique Identifier,缩写:UUID)生成随机数,将该随机数作为节点的标识。
父节点的标识用于标识生成调用信息的节点的父节点。例如,父节点的标识可以为调用链中调用信息的前一个节点的标识,在程序中,父节点的标识可以记录为“parent_id”。
时间戳用于指示节点执行调用动作的时间点。例如,时间戳可以指示节点开始调用的时间点以及节点结束调用的时间点。示例性地,该时间戳可以包括cs的时间戳、sr的时间戳、ss的时间戳、cr的时间戳中的至少一项。其中,cs的时间戳以及ss的时间戳可以指示节点开始调用的时间点,sr的时间戳以及cr的时间戳可以指示节点结束调用的时间点。
调用时长用于指示节点执行调用动作的耗时,调用时长可以为节点开始调用的时间点与节点结束调用的时间点之间的时间差。例如,调用时长可以为cr的时间戳与cs的时间戳的时间差。在程序中,调用时长可以记录为“duration”。
状态码(英文:Status code)用于指示调用动作的完成状态,状态码可以包括成功和失败。
举例来说,调用信息可以如下表1所示。其中,表1中的cs的时间戳、sr的时间戳、ss的时间戳以及cr的时间戳采用Unix时间戳(英文:Unix epoch、Unix time、POSIX time或Unix timestamp)的格式表示,该Unix时间戳是从1970年1月1日开始所经过的秒数。当然,时间戳也可以采用Unix时间戳以外的格式表示,例如采用协调世界时(英文:CoordinatedUniversal Time,缩写:UTC)的格式表示,本实施例对时间戳的具体数据格式不做限定。
表1
其中,表1中链路标识可以通过2个字段来标识,分别是high和low,high和low可以是两个随机数,从而保证不同调用链的链路标识不同。表述性状态传递(RepresentationalState Transfer,缩写:REST)是一种软件架构的规范,用于描述超文本传输协议(HyperText Transfer Protocol,缩写:HTTP)层中客户端与服务器的数据交互规则。
频数分布直方图(英文:frequency distribution histogram):用于表示样本的频数分布规律。频数分布直方图包括一些相邻的矩形组成,每个矩形的底宽等于组距,每个矩形的高等于组的频数。具体地,可以在直角坐标系中,将样本的取值范围划分为m组,使样本的最大值和最小值落在开区间(a,b)内,a略小于样本数据的最小值,b略大于样本数据的最大值。其中,组距是指每个组的两个端点的距离。其中,可以对样本的取值范围等组距划分,则频数分布直方图中各个矩形的底宽表示的取值范围均相等。也可以对样本的取值范围非等组距划分,则频数分布直方图中各个矩形的底宽表示的取值范围不相等。
假设检验(英文:hypothesis test):是推论统计中用于检验统计假设的一种方法。具体地,会对随机变量的参数或总体分布形式做出假设,该假设包括原假设(英文:nullhypothesis)以及备择假设(英文:alternative hypothesis),原假设和备择假设相互对立。利用样本信息对原假设是否合理进行校验,若原假设合理,则接受原假设,若原假设不合理,则拒绝原假设,接受备择假设。假设检验种类包括:t检验,Z检验,卡方检验,F检验等。
图3是本申请实施例提供的一种实施环境的架构图,参见图3,下述实施例中的事务分析方法可以应用于该实施环境架构中。该实施环境架构中可以包括服务器、终端以及数据库。其中,服务器可以提供为下述实施例中的计算机设备。服务器可以是提供应用性能管理服务的平台。服务器可以为终端执行事务,通过执行下述方法实施例发现事务的潜在原因特征,将发现的潜在原因特征提供给终端。终端可以是移动终端或个人电脑(英文:personal computer,简称:PC)。终端可以安装有服务器对应的客户端,终端可以通过该客户端,接收服务器提供的潜在原因特征。或者,终端可以登录服务器对应的网页,接收服务器提供的潜在原因特征。
图4是本发明实施例提供的一种计算机设备的结构示意图,该计算机设备400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(英文:centralprocessing units,CPU)401和一个或一个以上的存储器402,其中,该存储器402中存储有至少一条指令,该至少一条指令由该处理器401加载并执行以实现下述各个方法实施例提供的事务分析方法。当然,该计算机设备400还可以具有有线或无线网络接口以及输入输出接口等部件,以便进行输入输出,该计算机设备400还可以包括其他用于实现设备功能的部件,在此不做赘述。该计算机设备400上运行的操作系统可以是LinuX操作系统,当然也可以是Windows操作系统等,本实施例对该计算机设备的操作系统不做限定。
需要说明的一点是,该计算机设备可以是物理设备,例如,该计算机设备可以是数据中心中的服务器;该计算机设备也可以是虚拟化的设备,例如,该计算机设备可以是云平台提供的虚拟服务器,比如说可以是从云平台租用的弹性云服务器。该计算机设备可以映射为具有处理资源以及存储资源的任一实体,本实施例对该实体的具体形态不做限定。
需要说明的另一点是,计算机设备400可以为云环境中的计算机设备,或边缘环境中的计算机设备,或终端环境中的计算机设备,本实施例对计算机设备400的运行环境不做限定。
图5是本申请实施例提供的一种计算机设备集群的系统架构图,该计算机设备集群可以用于执行事务分析方法。
如图5所示,该计算机设备集群包括至少一个计算机设备500,每个计算机设备500可以执行事务分析方法中的任一个或多个步骤,不同的步骤可以由不同的计算机设备500执行。举例来说,某一个计算机设备500可以执行下述方法实施例中的步骤701,另一个计算机设备500可以执行下述方法实施例中的步骤702。其中,每个计算机设备500的结构与图4实施例中计算机设备400的结构相同。具体地,每个计算机设备500可以包括一个或一个以上处理器501和一个或一个以上的存储器502。每个计算机设备500可以是物理设备,也可以是虚拟化的设备,每个计算机设备500可以为云环境中的计算机设备,或边缘环境中的计算机设备,或终端环境中的计算机设备,对此不做限定。
图6是本申请实施例提供的一种计算机设备集群的系统架构图,该计算机设备集群可以用于执行事务分析方法。
如图6所示,该计算机设备集群包括云计算系统以及至少一个计算机设备600。其中,该云计算系统可以执行事务分析方法中的任一个步骤或任多个步骤,每个计算机设备600也可以执行事务分析方法的任一个步骤或任多个步骤。其中,每个计算机设备600的结构与图4实施例中计算机设备400的结构相同。具体地,每个计算机设备600可以包括一个或一个以上处理器601和一个或一个以上的存储器602。可选地,云计算系统以及计算机设备600执行的步骤可以不同,可选地,云计算系统中不同节点执行的步骤可以相同或不同。
图6中的云计算系统可以通过云端的服务器集群实现,举例来说,可以通过租用云计算服务商提供的一台或多台虚拟服务器实现。该云计算系统可以通过虚拟化技术扩展运算的计算能力,以实现共享软、硬件资源和信息,按需提供给云计算系统中的各个节点设备,使得每个节点设备发挥最大的效能。
每个计算机设备600的结构与图6实施例中计算机设备600的结构相同。每个计算机设备600可以是物理设备,也可以是虚拟化的设备,每个计算机设备600可以为云环境中的计算机设备,或边缘环境中的计算机设备,或终端环境中的计算机设备,对此不做限定。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成下述实施例中的事务分析方法。例如,计算机可读存储介质可以是只读存储器(Read-Only Memory,简称:ROM)、随机存取存储器(Random AccessMemory,简称:RAM)、只读光盘(Compact Disc Read-Only Memory,简称:CD-ROM)、磁带、软盘和光数据存储设备等。
图7是本申请实施例提供的一种事务分析方法的流程图,如图7所示,包括以下步骤:
701、计算机设备获取事务的至少一个特征中的每个特征的第一信息以及第二信息。
特征:用于描述事务在执行过程具有的性质。可选地,特征可以包括执行特征、环境特征以及网络特征中的至少一项,执行特征是指由于执行事务而产生的特征,例如可以是执行事务的过程中的输入参数、输出参数、中间结果等。环境特征用于描述事务的执行环境,例如可以是执行事务的节点的特征、执行事务的时间、执行事务的位置等。其中,该执行事务的节点的特征可以包括节点的资源占用率。该网络特征可以用于指示网络通信的质量,网络特征包括而不限于参考信号接收功率(英文:Reference Signal ReceivingPower,缩写:RSRP)、信道质量信息(英文:Channel Quality Information,缩写:CQI)、信号干扰噪声比(英文:Signal to Interference Plus Noise Ratio,缩写:SINR)、无线链路承载(英文:Radio Bear,缩写:RB)、调制与编码策略(英文:Modulation and Coding Scheme,缩写:MCS)、参考信号接收质量(英文:ReferenceSignalReceivingQuality,缩写:RSRQ)、下行参考信号接收质量(英文:Downlink ReferenceSignalReceivingQuality,缩写:DLRSRQ)、下行误块率(英文:Downlink block error rate,缩写:DLBLER)、下行传输带宽(英文:Downlink Transmission Bandwidth,缩写:DLRB)、用户设备功率余量报告(英文:User Equipment Power Headroom,缩写:UE PHR)、时间提前量(英文:Timing Advance,缩写:TA)、下行调制与编码策略(英文:Downlink Modulation and Coding Scheme,缩写:DLMCS)、主服务小区的电平强度、激活用户数、覆盖、干扰、吞吐量、物理资源块(英文:physical resource block,缩写:PRB)利用率等。
可选地,特征可以包括特征名以及特征值。特征名(英文:attribute name)即特征的名称,用于指示特征描述的对象。特征的特征值(英文:attribute value)用于指示特征的取值。例如,在描述一个人时,假设这个人的身高是183厘米,则特征名是“身高”,特征值是“183厘米”,假设这个人的体重是70公斤,则特征名是“体重”,特征值是“70公斤”。又如,在描述一个商品时,假设这个商品的价格是200元,则特征名是“价格”,特征值是“200元”。又如,假设这个商品的品牌是xxx”来说,则特征名是“品牌”,特征值是“xxx”。再如,对于在描述一个事件时,假设这个事件是10点发生的,则特征名是“发生时间”,特征值是“10点”。
可选地,特征可以包括服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征中的至少一项。
服务特征用于描述在事务执行过程中调用的服务。服务特征的特征名为“服务”,在程序中服务特征的特征名可以记录为“service(此单词意思是服务)”;服务特征的特征值可以为服务的标识。该服务的标识用于指示服务,例如为服务的名称、服务的编号等。例如,服务特征的特征值可以是服务X、数据库Y、网关W等;
服务调用服务特征用于描述在事务执行过程中不同服务之间的调用关系。服务调用服务特征的特征名为“服务调用服务”,在程序中服务调用服务特征的特征名可以记录为“service2service(此单词意思是服务调用服务)”;服务调用服务特征的特征值包括调用其他服务的服务的标识以及被调用的服务的标识。例如,服务调用服务特征的特征值可以为“登录服务X调用了数据库Y”。
函数特征用于描述在事务执行过程中调用的函数。函数的特征名为“函数”,在程序中函数特征的特征名可以记录为“function”(此单词意思是函数);函数特征的特征值为函数的标识,该函数的标识用于指示函数,例如为函数的名称、函数的编号等。例如,函数特征的特征值可以是“函数1”等。
函数调用函数特征用于描述在事务执行过程中不同函数之间的调用关系。函数调用函数特征的特征名可以为“函数调用函数”,在程序中函数调用函数的特征名可以记录为“Func2Func”(此单词意思是函数调用函数);函数调用函数特征的特征值包括调用其他函数的函数的标识以及被调用的函数的标识。例如,函数调用函数特征的特征值可以为“函数1调用了函数2”。
参数特征用于描述在事务执行过程中的输入参数或者输出参数。参数特征的特征名为参数名称,例如可以是“浏览器”、“时间”;参数特征的特征值为参数的标识,该参数的标识用于指示参数,例如为参数的名称、参数的编号等。举例来说,假设参数特征的特征名为浏览器,参数特征的特征值可以是“firefox(火狐)”、“IE(Internet Explorer,一种网页浏览器)”等。
示例性地,参见下表2,上述五种特征的实例可以如下表2所示。在表2中示出了5个特征。
表2
特征名的作用域 | 特征的特征名 | 特征的特征值 |
服务 | service | 网关Y |
服务调用服务 | service2service | 服务c调用了服务d |
函数 | function | 函数1 |
函数调用函数 | function2function | 函数c调用了函数d |
参数 | 浏览器 | aaa |
可选地,特征可以表示为键值对(英文:Key-Value)的形式,每个键值对表示一个特征。具体地,键值对的键为特征的特征名,键值对的值表示特征的特征值。例如,键值对可以表示为“K”:“V”,其中K为特征名,V为特征值。举例来说,假设特征的特征名为浏览器,特征的特征值为“firefox”,则特征可以表示为“浏览器”:“firefox”;又如,假设特征的特征名为时间,特征的特征值为“08:00”,则特征可以表示为“时间”:“08:00”。当然,键值对仅是特征的一种可选形式,特征也可以通过其他任一计算机可读的形式承载。例如,特征可以表示为列表中的条目,一个字段为特征名,另一个字段为特征值。
可选地,特征可以为枚举类型(英文:Categorical)的特征,也可以为实数类型(英文:Numerical)的特征。
枚举类型的特征具有的所有特征值可以一一列举,枚举类型的特征可以视为离散变量。举例来说,特征名为浏览器的特征可以是枚举类型的特征,例如“浏览器是浏览器aa”、“浏览器是浏览器bb”这两个特征均为枚举类型的特征。又如,特征名为手机品牌的特征可以是枚举类型的特征,例如“手机品牌是品牌1”、“手机品牌是品牌2”这两个特征均为枚举类型的特征。
实数类型的特征具有的所有特征值难以一一列举,实数类型的特征可以视为连续变量。举例来说,特征名为时间的特征可以是实数类型的特征,例如“时间为某时某分某秒某毫秒”这个特征为连续型的特征。又如,特征名为队列长度的特征可以是实数类型的特征,例如“队列长度为190”这个特征为实数类型的特征。
需要说明的一点是,可选地,枚举类型的特征以及实数类型的特征的区别可以在于,特征值的大小关系是否具有比较的意义。例如,可以将特征值的大小关系无比较意义的特征作为枚举类型的特征。举例来说,对于身份标识号码(英文:Identification,缩写:ID)来说,不同ID的大小关系通常没有实际意义,因此可以将特征名为ID的特征作为枚举类型的特征;又例如,对于手机号来说,不同手机号的大小关系通常没有实际意义,因此可以将特征名为手机号的特征作为枚举类型的特征。相应地,可选地,可以将特征值的大小关系具有比较意义的特征作为实数类型的特征。举例来说,对于时间来说,不同时间的大小关系表示时间的早晚关系,可以将特征名为为时间的特征作为实数类型的特征。
需要说明的另一点是,可选地,特征的类型可以通过埋点技术获取。具体地,可以在执行事务的节点的事务执行程序中,嵌入用于获取特征的类型的探针程序,在节点执行事务的过程中,探针程序会采集事务的特征的类型,对特征的类型进行封装,发送至计算机设备。
可选地,可以将特征的特征值映射为枚举值。具体地,可以获取特征的特征值所属的目标区间;根据目标区间,从区间与枚举值之间的对应关系中,获取目标区间对应的枚举值;使用枚举值指代特征的特征值。
目标区间是指特征的特征值所属的区间。例如,假设特征的特征名为时间,特征的特征值为08:30,则目标区间可以为06:30至12:00。又如,假设特征的特征名为队列已占用的缓存空间,特征的特征值为90%,则目标区间可以为75%至100%。
区间与枚举值之间的对应关系包括至少一个区间以及至少一个枚举值。可以以目标区间为索引,查询区间与枚举值之间的对应关系,得到目标区间对应的枚举值。举例来说,区间与枚举值之间的对应关系可以如下表3所示,假设获取到的目标区间为06:30至12:00,则目标区间对应的枚举值为上午。关于区间与枚举值之间的对应关系的建立过程,可选地,可以获取特征的取值范围,将特征的取值范围划分为至少一个区间,为每个区间分配对应的枚举值,以得到区间与枚举值之间的对应关系。
表3
区间 | 枚举值 |
04:00-06:30 | 凌晨 |
06:30-12:00 | 上午 |
12:00-18:30 | 下午 |
18:30-04:00 | 晚上 |
在一个示例性场景中,假设特征的特征名为时间,特征为“时间”:“10:23:56”,可以获取10:23:56所属的目标区间为06:30-12:00”,根据“06:30-12:00”,从上表3所示的对应关系中,获取“06:30-12:00”对应的“上午”,则后续可以使用“上午”来指代“10:23:56”,从而将特征从“时间”:“10:23:56”转换为“时间”:“上午”。依次类推,可以将把一天的时间转换为“凌晨”、“上午”、“下午”、“晚上”这四个枚举值。
可选地,也可以获取特征的特征值所属的目标区间;使用目标区间指代特征的特征值。例如,假设特征为“时间”:“10:23:56”,可以获取10:23:56所属的目标区间为“06:30至12:00”,则后续可以使用“06:30至12:00”来指代“10:23:56”,从而将特征从“时间”:“10:23:56”转换为“时间”:“06:30至12:00”。
通过将特征的特征值映射为枚举值或目标区间,可以将特征进行离散化,从而减少特征的总的数量,减少运算量。
可选地,可以获取特征的类型,判断特征的类型是否为实数类型,当特征的类型为实数类型时,则执行上述将特征的特征值映射为枚举值或目标区间的步骤,从而将实数类型的特征离散化。通过将实数类型的特征的特征值映射为枚举值或目标区间,由于枚举值或目标区间的数量少于实数的数量,因此可以便于统计,减少需要运算的数据量。
需要说明的一点是,可以将实数类型的特征的特征值映射为枚举值或目标区间,也可以将枚举类型的特征的特征值映射为枚举值或目标区间,本实施例对此不做限定。举例来说,假设对于特征名为手机号的特征来说,可以根据手机号的前三位,将不同的手机号映射为不同的运营商,例如,将前三位为139的手机号映射为运营商aa,将前三位为186的手机号映射为运营商bb。
第一信息:用于指示特征在事务的问题执行过程中出现的次数。可选地,第一信息可以是特征在事务的问题执行过程中出现的次数;可选地,第一信息可以是对特征在事务的问题执行过程中出现的次数进行换算得到的某一信息,例如,第一信息可以是比例或百分比。举例来说,第一信息可以是特征在事务的问题执行过程中出现的次数与同一特征名的其他特征在事务的问题执行过程中出现的次数之间的比例;举例来说,第一信息可以是特征在事务的问题执行过程中出现的次数在特征的总计出现次数中所占的百分比;举例来说,第一信息可以是特征在事务的问题执行过程中出现的次数在同一特征名的所有特征在事务的问题执行过程中出现的次数中所占的百分比,举例来说,第一信息可以是特征在事务的问题执行过程中出现的次数在同一特征名的所有特征的总计出现次数中所占的百分比。
问题执行过程是指事务的存在问题的一次执行过程。其中,事务的问题可以根据实际应用场景定义,本实施例对此不做限定。举例来说,应用于运维技术领域,问题执行过程可以包括慢执行过程以及失败执行过程中的至少一种。具体地,若事务的一次执行过程为慢执行过程,可以将此次执行过程视为问题执行过程。在另一种可能的实现中,若事务的一次执行过程为失败执行过程,可以将此次执行过程视为问题执行过程。在另一种可能的实现中,若事务的一次执行过程为慢执行过程且为失败执行过程,可以将此次执行过程视为问题执行过程。应用于网络安全领域,可以将发生网络攻击的执行过程视为问题执行过程。
发生网络攻击的执行过程:例如可以是被病毒入侵、被黑客攻击、被篡改数据、被监听、发生拒绝服务攻击的执行过程。
需要说明的一点是,慢执行过程、失败执行过程以及发生网络攻击的执行过程仅是对问题执行过程的举例说明,本领域技术人员在考虑到本实施例提供的事务分析方法后,可以将本申请提供的事务分析方法应用在运维技术的其他应用场景中,相应地,可以将该其他应用场景中产品的痛点定义为问题执行过程。同理地,可以将运维技术领域以外的其他技术领域中产品的痛点定义为问题执行过程;依次类推,可以将任意技术领域中任意一种会导致用户体验不佳的执行过程定义为问题执行过程。本实施例旨在涵盖其他应用场景下,对问题执行过程的定义的任何变型、用途或者适应性变化,这些经过了变型、用途或者适应性变化的、对问题执行过程的定义方式,凡是遵循本公开的一般性原理,均应包含在本申请的保护范围。
慢执行过程可以是执行时长符合第一预设条件的执行过程。该执行时长用于指示事务的一次执行过程的总耗时。具体地,执行时长是开始执行事务的时间点与结束执行事务的时间点之间的时间差,例如可以是开始执行事务的时间戳与结束执行事务的时间戳之间的差值。
可选地,执行时长可以为调用链中第一个节点的调用时长。其中,调用时长是指节点完成调用动作的时长。调用时长可以为节点开始执行调用动作的时间点与结束调用动作的时间点之间的时间差。可选地,调用时长可以记录在调用信息(英文:span)中,例如,调用时长可以为span中的cs与cr之间的时间差;又如,调用时长可以为span的duration。相应地,执行时长的获取方式可以包括:从调用链的span0中获取cs以及cr,计算cs与cr之间的时间差,将时间差作为执行时长。又如,执行时长的获取方式可以包括:从调用链的span0中获取duration,将duration作为执行时长。其中,span0是指调用链中父节点标识为空或父节点标识为预设标识的span,该预设标识可以为0。
可选地,第一预设条件包括而不限于以下条件(1)至条件(4)中任一项或多项的组合:
条件(1)执行时长大于执行时长阈值。
执行时长阈值可以通过配置指令、经验、实验或需求确定,本实施例对此不做限定。以执行时长阈值通过配置指令确定为例,可以接收配置指令,对配置指令进行解析,得到配置指令携带的执行时长阈值。其中,该配置指令可以通过用户的配置操作触发。在一个示例性场景中,假设事务为登录事务,用户可以通过配置操作,将执行时长阈值配置为2秒,则如果登录事务的任一次执行过程的执行时长大于2秒,则此次执行过程可以定义为慢执行过程。
可选地,不同事务的执行时长可以对应于不同的执行时长阈值。相应地,条件(1)可以包括:执行时长大于事务对应的执行时长阈值。在一种可能的实现中,可以建立事务与执行时长之间的对应关系,从事务与执行时长之间的对应关系中,获取事务对应的执行时长阈值。其中,事务与执行时长阈值之间的对应关系可以根据实验、经验、需求或配置指令确定,本实施例对事务与执行时长阈值之间的对应关系不做具体限定。例如,事务与执行时长阈值之间的对应关系可以如下表4所示。
表4
事务 | 执行时长阈值 |
登录事务 | t1 |
支付事务 | t2 |
注册事务 | t3 |
条件(2)执行时长在事务的至少一次执行过程的执行时长中处于目标范围。
目标范围的一个端点是至少一次执行过程的执行时长中最大的执行时长,目标范围的另一个端点是至少一次执行过程的执行时长按照从大到小的顺序排序后的目标百分位数。其中,目标百分位数的位置可以根据配置指令、经验、实验或需求配置,本实施例对此不做限定。例如,假设将目标百分位数的位置设置为1%,则目标范围为最大的执行时长至排在前1%的执行时长。
分位数:(英文:Quantile):是指对一个变量的所有取值按照数值的大小顺序进行排序后,划分成若干个等份,每个分割点对应的数值称为分位数。分位数可以包括二分位数、四分位数、百分位数等。其中,二分位数即中位数。
在一个示例性场景中,假设登录事务在某分钟内执行了1000次,目标百分位数的位置为1%,则目标百分位数为按照从大到小的顺序对1000个执行时长进行排序后的第10个执行时长,相应地,若事务的某次执行过程的执行时长处于第1个执行时长至第10个执行时长,则此次事务执行过程符合条件(2)。
条件(3)执行时长与事务的执行时长基线之间的偏差大于偏差阈值。
执行时长基线用于指示时间周期中每个时间点的执行时长。以数学的形式表示,执行时长基线可以表示为y=f(t),其中f表示函数,t表示时间点,y表示执行时长基线在t的执行时长。其中,该时间周期可以为日、周等。示例性地,执行时长基线可以如图8所示,在图8中,箭头所指的一次事务执行过程的执行时长与执行时长基线之间的偏差大于偏差阈值,则可以将此次事务执行过程定义为慢执行过程。
可选地,事务的执行时长基线可以根据事务的多次执行过程的执行时长确定。在一种可能的实现中,可以根据事务的多次执行过程的执行记录,获取事务在多个历史时间点的执行时长,根据事务在多个历史时间点的执行时长,生成执行时长基线。在一种可能的实现中,可以确定多个位置,对于该多个位置中的每个位置,获取事务在多个历史统计周期中该位置的执行时长的平均值,作为执行时长基线在该位置的取值,对执行时长基线在多个位置的取值进行曲线拟合,得到执行时长基线。示例性地,以位置为12:00为例,可以获取登录事务在最近1个月中每天的12:00的执行时长,计算30个执行时长的平均值,作为登录事务的执行时长基线在12:00的取值,依次类推,可以确定登录事务的执行时长基线在一天中每个时间段的取值,从而得到执行时长基线。
可选地,事务的执行时长基线也可以根据对执行时长的期望确定。在一种可能的实现中,可以接收执行时长基线配置指令,该执行时长基线配置指令携带多个时间点的期望执行时长,可以对多个时间点的期望执行时长进行曲线拟合,得到执行时长基线。
关于执行时长与事务的执行时长基线之间的偏差的获取方式,对于事务的任一次执行过程来说,可以确定执行该执行过程的时间点,获取执行时长基线在该时间点的执行时长,计算执行时长基线在该时间点的执行时长以及此次执行过程的执行时长之间的时间差,将该时间差作为执行时长与事务的执行时长基线之间的偏差。
以偏差阈值为100毫秒为例,在一个示例性场景中,假设某设备在18:00执行了登录事务,此次执行过程的执行时长为500毫秒,而执行时长基线在18:00的执行时长为20毫秒,则执行时长与事务的执行时长基线之间的偏差为500毫秒-20毫秒=480毫秒,该480毫秒大于100毫秒,则登录事务的此次执行过程可以作为慢执行过程。
条件(4)执行时长在事务的至少一次执行过程的执行时长中排在前预设位数。
事务的至少一次执行过程可以为同一时间段中发生的执行过程,例如可以为同一分钟中发生的每个执行过程。
举例来说,可以对事务的至少一次执行过程的执行时长按照从大到小的顺序排序,得到排序结果,对于任一次执行过程来说,如果该执行过程排在前预设位数,则此次执行过程可以定义为慢执行过程。其中,预设位数可以通过经验、实验或需求设置,本实施例对此不做限定。
需要说明的一点是,上述条件(1)至条件(4)可以择一使用,也可以结合使用。假设将条件(1)作为第一预设条件,则如果事务的任一次执行过程的执行时长大于执行时长阈值,则此次执行过程即可作为慢执行过程。假设将条件(2)作为第一预设条件,则对于事务的至少一次执行过程中的任一次执行过程来说,如果此次执行过程的执行时长在该至少一次执行过程的执行时长中排在目标范围,则此次执行过程即可作为慢执行过程。
失败执行过程可以是状态码符合第二预设条件的执行过程。该状态码用于指示事务的一次执行过程的状态,该状态码也称状态码。可选地,一次执行过程的状态码可以为此次执行过程的调用链的span0中的状态码。可选地,该状态码可以是超文本传输协议(英文:Hyper Text Transfer Protocol,缩写:HTTP)状态码(英文:Status Code),该HTTP状态码是指用以表示网页服务器HTTP响应状态的3位数字代码。可选地,该状态码也可以是错误信息串(英文:error message string,缩写:errMsg)中的错误码。可选地,该状态码也可以是根据内部规范定义的状态码。例如,可以规定当函数返回状态码0时,表示成功,当函数返回状态码1时,表示失败。
可选地,该第二预设条件包括而不限于:状态码属于至少一个目标状态码。其中,该目标状态码用于指示事务的执行过程失败,该目标状态码可以预先存储在计算机设备中。其中,该目标状态码包括HTTP状态码、errMsg中的错误码、内部规范定义的表示失败的状态码等。例如,目标状态码可以为第1个数字为4的HTTP状态码,例如可以为404。又如,目标状态码可以为第1个数字为5的HTTP状态码。再如,假设规定当函数状态码1时,表示失败,则目标状态码可以为1。
发生网络攻击的执行过程可以是执行记录中包括网络攻击发生标识的执行过程。其中,该网络攻击发生标识用于标识执行记录对应的执行过程中发生了网络攻击,网络攻击发生标识包括而不限于数字、字母、字符串等任意形式。
作为举例性质的描述,第一信息包括而不限于以下两种形式:
(1)第一信息可以携带在第一列表中。
具体地,第一列表用于记录同一特征名的每个特征的第一信息,第一信息可以是第一列表中某一行的取值,或者为第一列表中某一列的取值。
在一种可能的实现中,该第一列表中可以包括两列,一列包括至少一个特征,另一列包括至少一个第一信息,第i行的特征的第一信息也位于第i行。在另一种可能的实现中,该第一列表中可以包括两行,一行包括至少一个特征,另一行包括至少一个第一信息,第j列的特征的第一信息也位于第j列。示例性的,参见图9,图9为携带了第一信息的第一列表的示意图,从图9可以看出,“浏览器是aaa”这个特征的第一信息是132次,“浏览器是bbb”这个特征的第一信息是25次,“浏览器是ccc”的第一信息是128次。
(2)第一信息可以携带在直方图中。
为了对携带第一信息的直方图以及携带第二信息的直方图进行区分描述,在此将携带第一信息的直方图称为第一直方图,将携带第二信息的直方图称为第二直方图。
第一直方图可以用于表示同一特征名的每个特征的第一信息的分布情况。该第一直方图的横轴表示同一特征名的每个特征,该第一直方图的纵轴表示第一信息的取值范围。第一直方图包括至少一个相邻的矩形,每个矩形映射一个特征。具体地,矩形的底宽等于对应特征的取值范围的跨度,矩形的底的一个端点表示对应特征的最小值,矩形的底的另一个端点表示对应特征的最大值,矩形的高度表示对应特征的第一信息。可选地,矩形的高度越高,表示对应特征在错误执行过程中出现的次数越多,对应特征在错误执行过程中出现越频繁。
可选地,第一信息可以是第一直方图中特征对应的矩形的高度。参见图10,其示出了第一直方图的示意图,该第一直方图对应的特征名为时间,第一直方图中每个矩形表示一个时间段在问题执行过程中的出现次数,矩形的高度越高,表示对应时间段在问题执行过程中的出现次数越多,对应时间段在问题执行过程中出现的越频繁。该第一直方图中第一个矩形表示:“0点至6点”在问题执行过程中出现10次;该第一直方图中第二个矩形表示:“7点至12点”在问题执行过程中出现70次。该第一直方图中第三个矩形表示:“13点至18点”在问题执行过程中出现200次。该第一直方图中第四个矩形表示:“19点至24点”在问题执行过程中出现60次。
可选地,对于实数类型的特征来说,可以每个特征名对应一个第一直方图,如果特征具有多个特征名,则可以为特征生成多个第一直方图。
在一种可能的实现中,第一直方图可以通过对应特征名的第二列表生成。该第二列表包括该特征名在问题执行过程中出现的多个特征。举例来说,假设特征名为时间,则第二列表可以是“早上、中午、晚上、深夜”。举例来说,假设特征名为队列长度,则第二列表可以是“3、1、10、4”。可选地,该第二列表可以通过数组实现,数组的每个位置可以存储一个特征。
关于通过第二列表生成第一直方图的方式,在一种可能的实现中,可以对第二列表中的每个特征按照特征值的大小进行排序,根据排序结果。从排序结果中,选取值最小的特征以及特征值最大的特征。根据该特征值最小的特征以及该特征值最大的特征,获取直方图中矩形的数量、每个矩形的底宽以及每个矩形的高度。根据矩形的数量、每个矩形的底宽以及每个矩形的高度,生成第一直方图。
可选地,该第一直方图的横轴可以均分,则横轴中每个单位长度映射的特征的取值范围的跨度均相等。举例来说,假设第一直方图描述的特征名为时间,横轴的每个单位长度可以映射1个小时。可选地,该第一直方图的横轴也可以不均分,则横轴上每个单位长度映射的特征的取值范围的跨度可以不同,这种形式的直方图可以称为高动态(英语:highdynamic range,缩写:HDR)直方图。例如,横轴的第一个单位长度映射1个长度,横轴的第2个单位长度映射1.5个小时,横轴的第3个单位长度映射2个小时,横轴的第4个单位长度开始,每个单位长度映射2个小时。
需要说明的一点是,上述(1)以及(2)仅是第一信息的形式的可选方式,而非必选方式。可选地,第一信息可以是任一数据结构中的数据。例如,第一信息可以是数组中的某一位置存储的数据;例如,第一信息可以是链表中的某一节点中存储的数据;例如,第一信息可以是哈希表中的某一节点中存储的数据;例如,第一信息可以是二叉树中的某一节点中存储的数据;例如,第一信息可以是图形化数据中的某一位置中的数据。
关于第一信息的获取方式,可选地,第一信息可以通过下述实现方式一至实现方式四中的任一项或多项获取。
实现方式一、对特征在事务的问题执行过程中出现的次数进行统计,得到第一信息。
实现方式一包括而不限于下述方式(1.1)至方式(1.4)中的任一项或多项的组合:
方式(1.1)使用基数统计技术,对特征在事务的问题执行过程中出现的次数进行统计。
在一种可能的实现中,事务的问题执行过程中出现的每个特征可以组成数据流,可以对数据流中的每个特征进行基数统计(英文:Cardinality Estimation),得到每个特征的第一信息。
基数统计是指对于一个数据流σ={α1,α2,……,αm},定义每个元素出现的次数为f={f1,f2,……,fm},求解fi的算法。其中,m表示数据流的长度,即数据流中元素的数量,αi表示数据流中的元素,i={1,2,……,m},fi为αi出现的次数。在本实现方式中,可以将问题执行过程中出现的特征的总数量作为m,将任一特征作为αi,将每个特征在问题执行过程中的出现次数定义为f={f1,f2,……,fm},其中fi为特征αi在事务的问题执行过程中出现的次数;相应地,可以采用任意一种基数统计方法,统计得到每个特征的第一信息。
关于统计特征在问题执行过程中出现的次数的方式,在一种可能的实现中,可以为事务的每一种特征分配一个计数器,使用该计数器来记录该特征在问题执行过程中的出现次数,当尚未接收到在问题执行过程中出现的特征时,特征对应的计数器存储的次数可以为0,每当该特征出现一次时,可以对该计数器存储的次数加一,当符合停止统计条件时,可以从计数器中读取存储的次数,作为特征的第一信息。
在另一种可能的实现中,可以为每一种特征的哈希值分配一个计数器,使用该计数器来记录该哈希值对应的特征在问题执行过程中的出现次数。具体地,可以利用基于草图(英文:Sketch-based)的计数方法来进行计数,每当特征在问题执行过程中出现一次时,可以对特征的哈希值对应的计数器存储的次数递增,则各种特征可以根据对应的哈希值进行归类计数,从而减少统计次数所需占用的存储空间。
可选地,统计第一信息时,使用的基数统计方法包括而不限于CMS、线性计数(英文:Linear Counting,缩写:LC)、双对数计数(英文:LogLog Counting,缩写:LLC)、自适应计数(Adaptive Counting,缩写:AC)、超双对数计数(英文:HyperLogLog Counting,缩写:HLLC)、计数平均最小草图(英文:Count-Mean-Min Sketch,缩写:CMMS)、位图(英文:bitmap)、混合静态随机存取存储器(英文:Static Random-Access Memory,缩写:SRAM)/动态随机存取存储器(英文:Dynamic Random Access Memory,缩写:DRAM)计数器(英文:Counter)、布隆过滤器(英文:Bloom Filter)、编织分层计数器(英文:Counter Braids)、桶式秩索引计数器(英文:bucketized rank indexed counters,缩写:BRICK)等。
其中,CMS技术是指通过多个哈希函数以及多个数组来统计次数。其中,该多个哈希函数不同。可选地,哈希函数的数量可以根据实验、经验、需求或配置指令确定。可选地,数组的长度可以为哈希函数能够计算出的哈希值的数量。
以使用CMS技术为例,对特征在问题执行过程中的出现次数的统计过程可以包括下述步骤一至步骤三:
步骤一、使用多个不同的哈希函数,对特征进行哈希运算,得到多个不同的哈希值。
具体地,事务的每个在问题执行过程中出现的特征可以组成数据流,持续发送至计算机设备。每当接收到一次特征时,可以使用每个哈希函数对特征计算出一个哈希值,由于哈希函数不同,则计算出的哈希值也不同。示例性地,假设使用4个哈希函数,当接收到“手机品牌是品牌xx”时,可以使用4个哈希函数对“手机品牌是品牌xx”进行哈希运算,得到4个哈希值。
步骤二、根据多个不同的哈希值,在多个不同的第一数组中获取多个第一位置。
第一数组用于统计特征在问题执行过程中出现的次数,每个第一数组对应一个哈希函数,任一第一数组用于为对应哈希函数存储计数。示例性地,假设使用4个哈希函数,第一数组的长度为m,如图11所示,CMS的数据结构可以为4行m列的矩阵。例如,一个第一数组可以是图11中矩阵的一行。第一数组的数量可以等于哈希函数的数量。第一数组中的每个位置可以视为一个计数器。当开始统计次数时,每个第一数组的每个第一位置存储的次数可以置为0。示例性地,参见图11,图11描述了计数最小草图(CMS),哈希函数h1(x)对应于第1行所示的第一数组,哈希函数h2(x)对应于第2行所示的第一数组,哈希函数h3(x)对应于第3行所示的第一数组,哈希函数h4(x)对应于第4行所示的第一数组。
第一位置是指第一数组中哈希值对应的位置。例如,假设哈希值为i,则第一位置可以是第一数组中第i个位置。关于第一位置的获取过程,具体来讲,对于任一哈希函数计算出的哈希值,可以将哈希值作为数组索引,在该哈希函数对应的数组中,获取该数组索引对应的位置,作为第一位置。示例性地,参见图12,假设哈希函数h1(x)计算出的哈希值为2,则在第1行中获取第2个位置,假设哈希函数h2(x)计算出的哈希值为3,则在第2行中获取第3个位置,假设哈希函数h3(x)计算出的哈希值为4,则在第3行中获取第4个位置,假设哈希函数h4(x)计算出的哈希值为1,则在第4行中获取第1个位置。
步骤三、对该多个第一位置存储的次数进行递增。
例如,可以对多个第一位置中每个第一位置存储的次数加一。
示例性地,参见图12的第一个图,假设一个统计周期中,在尚未接收到“手机品牌是品牌xx”的时间段内,第1行中第2个位置存储的次数、第2行中第3个位置存储的次数、第3行中第4个位置存储的次数以及第4行中第1个位置存储的次数均为0。当第一次接收到“手机品牌是品牌xx”时,可以将第1行中第2个位置存储的次数从0递增为1,将第2行中第3个位置存储的次数从0递增为1,将第3行中第4个位置存储的次数从0递增为1,将第4行中第1个位置存储的次数从0递增为1。
上述步骤一至步骤三描述了使用CMS技术的一次计数过程,可以通过多次执行上述步骤一至步骤三,为事务的每个特征在问题执行过程中的出现次数进行统计,当符合停止统计条件时,对于事务的任一个特征,在多个第一数组中获取该特征对应的多个第一位置;选取该多个第一位置存储的次数的最小值,作为该特征的第一信息。可选地,可以获取该多个第一位置存储的次数,对该多个第一位置存储的次数进行排序,以从多个第一位置存储的次数中选取最小值。
停止统计条件用于结束一次次数统计过程。停止统计条件可以是从启动计数开始,经过的时长到达时间周期;停止统计条件也可以是接收到停止指令;停止统计条件还可以是已经确定出潜在原因特征,例如当确定出了最上位的潜在原因特征;停止统计条件也可以是统计的次数已经达到预设大小;当然,停止统计条件还可以根据需求自定义设置,本实施例对此不做限定。
通过选取多个第一位置存储的次数的最小值,可以尽量减少哈希碰撞的影响。具体来说,对于任一个特征来说,若对该特征进行计数的过程中,发生了哈希碰撞,则停止统计时多个第一数组中存储的该特征的次数可以不一致,发生了哈希碰撞的数组的位置存储的次数会偏大,那么通过选取多个第一位置中存储的次数的最小值,可以尽量减少哈希碰撞的影响,提高计数的准确性。
其中,哈希碰撞也称哈希冲突,是一种不同数据的存储位置产生冲突的事件。对于任两个不同特征来说,如果对两个特征进行哈希运算,得到了同一哈希值,则在第一数组中会获取到相同的第一位置,此时产生了哈希碰撞。
在一个示例性场景中,参见图12的第一个图,假设一个统计周期中,共计接收到了两个特征:“手机品牌是品牌xx”、“手机品牌是品牌yy”。对于“手机品牌是品牌xx”来说,哈希函数h1(x)计算出的该特征的哈希值为2,哈希函数h2(x)计算出的该特征的哈希值为3,假设哈希函数h3(x)计算出的该特征的哈希值为4,哈希函数h4(x)计算出的该特征的哈希值为1。对于“手机品牌是品牌yy”来说,哈希函数h1(x)计算出的该特征的哈希值也正好为2,哈希函数h2(x)计算出的该特征的哈希值为1,假设哈希函数h3(x)计算出的该特征的哈希值为3,哈希函数h4(x)计算出的哈希值为4。
由于哈希函数h1(x)对“手机品牌是品牌xx”、“手机品牌是品牌yy”计算出的哈希值刚好相同,均为2,会导致哈希函数h1(x)对应的数组的第2个位置存储的次数偏大。
举例来说,假设一个统计周期统计了3次特征,首先,接收到“手机品牌是品牌xx”时,将第1行中第2个位置存储的次数从0递增为1,将第2行中第3个位置存储的次数从0递增为1,将第3行中第4个位置存储的次数从0递增为1,将第4行中第1个位置存储的次数从0递增为1;然后,接收到“手机品牌是品牌yy”时,将第1行中第2个位置存储的次数从1递增为2,将第2行中第3个位置存储的次数从0递增为1,将第3行中第4个位置存储的次数从0递增为1,将第4行中第1个位置存储的次数从0递增为1。然后,接收到“手机品牌是品牌xx”时,将第1行中第2个位置存储的次数从2递增为3,将第2行中第3个位置存储的次数从1递增为2,将第3行中第4个位置存储的次数从1递增为2,将第4行中第1个位置存储的次数从1递增为2,此时停止统计。
此时,对于“手机品牌是品牌xx”来说,第1个数组存储的该特征的次数是3,第2个数组存储的该特征的次数是2,第3个数组存储的该特征的次数是2,第3个数组存储的该特征的次数是2,其中3这个计数是由于哈希碰撞导致偏大了1。则选取3、2、2、2中的最小值2,确定“手机品牌是品牌xx”的第一信息为2。对于“手机品牌是品牌yy”来说,第1个数组存储的该特征的次数是3,第2个数组存储的该特征的次数是1,第3个数组存储的该特征的次数是1,第3个数组存储的该特征的次数是1,其中3这个计数是由于哈希碰撞而导致偏大了2,则选取3、1、1、1中的最小值1,确定“手机品牌是品牌xx”的第一信息为1。
通过上述举例可以看出,通过使用CMS技术来进行计数,一方面,由于CMS的数据结构的数据量较小,占用的内存空间较少,可以节约对存储资源的消耗。另一方面,可以减少哈希碰撞对计数的影响,保证了准确性。
需要说明的是,当特征为实数型特征时,可以将特征映射为枚举型特征,对枚举型特征进行基数统计,得到第一信息。也可以将特征映射为目标区间,对目标区间进行基数统计,得到第一信息。
方式(1.2)使用计数信息,对特征在事务的问题执行过程中出现的次数进行统计。
方式(1.2)可以包括下述步骤一至步骤三:
步骤一、遍历第一计数信息。
第一计数信息是指记录事务的每个特征在问题执行过程中的出现次数时,使用的计数信息。第一计数信息可以是任意形式的信息,例如,参见图13,第一计数信息可以是列表,列表中的任一表项用于记录一个特征的出现次数;第一计数信息也可以是数组,数组中的任一位置用于记录一个特征的出现次数;第一计数信息也可以是链表,链表中的任一节点用于记录一个特征的出现次数;第一计数信息也可以是树形结构数据,树形结构数据中的任一节点用于记录一个特征的的出现次数,本实施例对第一计数信息的数据结构不做限定。
具体地,事务的每个在问题执行过程中出现的特征可以组成数据流,持续发送至计算机设备。每当接收到一次特征时,可以根据该特征遍历第一计数信息;当在该第一计数信息中遍历到该特征时,可以执行下述步骤二;当在该第一计数信息中未遍历到该特征时,可以执行下述步骤三。
其中,第一计数信息的遍历方式可以包括:以该特征的特征名为目标特征名,以该特征的特征值为目标特征值,从第一计数信息的任一特征开始,判断第一计数信息中的特征的特征名是否为目标特征名,第一计数信息中的特征的特征值是否为目标特征值,当第一计数信息中任一特征的特征名为目标特征名且特征值为目标特征值时,确定遍历到了该特征,则遍历结束,当第一计数信息中任一特征的特征名不为目标特征名或者特征值不为目标特征值时,则继续遍历下一个特征,直至遍历结束。另外,该遍历方式可以包括前序遍历、中序遍历、后序遍历、深度优先、广度优先等,本实施例对此不做限定。
步骤二、对该第一计数信息中该特征对应的次数进行递增。
可选地,递增的幅度可以为1。示例性地,参见图14,图14中的左图为一次计数前第一计数信息的示意,假设接收到“手机品牌是yy”时,可以将“手机品牌是yy”对应的次数从10递增为11,则第一计数信息会更新为图14中的右图。
步骤三、向该第一计数信息中插入目标位置,该目标位置用于存储特征对应的次数。
可选地,可以向第一计数信息中已占用的所有位置之后插入该目标位置。可选地,可以向目标位置中写入特征以及特征的初始次数,该初始次数可以为1。示例性地,参见图15,图15中的左图为一次计数前第一计数信息的示意,假设接收到“手机品牌是品牌ww”时,可以向第一计数信息中插入最后一行,在最后一行中写入“手机品牌是品牌ww”以及1,则第一计数信息会更新为图15中的右图。
上述步骤一至步骤三描述了使用第一计数信息的一次计数过程,可以通过多次执行上述步骤一至步骤三,为事务的每个特征在问题执行过程中的出现次数进行统计,当符合停止统计条件时,将该第一计数信息中该特征对应的次数作为该特征的第一信息。
方式(1.3)使用直方图,对特征在事务的问题执行过程中出现的次数进行统计。
在一种可能的实现中,可以对第一直方图中该特征对应的次数进行递增;当符合停止统计条件时,将该第一直方图作为该特征的第一信息。其中,递增幅度可以为1。示例性地,示例性地,参见图16,图16中的左图为一次计数前第一直方图的示意,假设接收到“时间是13点至18点”时,可以将“时间是13点至18点”对应的次数从200递增为201,则第一直方图会更新为图16中的右图。
可选地,若第一直方图指示区间以及次数之间的对应关系,每个矩形(英文:bin)的底指代一个区间,则第一直方图中特征对应的次数,可以指特征的特征值所属的目标区间对应的次数。可选地,若第一直方图指示枚举值以及次数之间的对应关系,每个矩形的底指代一个枚举值,则第一直方图中特征对应的次数,可以指特征的特征值映射的枚举值对应的次数。可选地,可以当接收到特征时,确定特征所属的目标区间或者特征映射的枚举值;可选地,也可以在预处理时,将特征映射为目标区间或枚举值,则在次数统计时,可以直接对目标区间或枚举值进行计数。
方式(1.4)使用基础草图(英文:Basic Sketch)算法,对特征在事务的问题执行过程中出现的次数进行统计。
在一种可能的实现中,可以使用哈希函数,对该特征进行哈希运算,得到哈希值;根据该哈希值,在第二数组中获取第二位置;对该第二位置存储的次数进行递增;当符合停止统计条件时,获取该第二位置存储的次数,作为该特征的第一信息。其中,该第二数组用于统计特征在问题执行过程中出现的次数。第二位置是指第二数组中哈希值对应的位置。关于第二位置的获取过程,具体来讲,可以将哈希值作为数组索引,在第二数组中,获取该数组索引对应的位置,作为第二位置。示例性地,假设哈希函数计算出的哈希值为2,则在第二数组中获取第2个位置。另外,递增幅度可以为1。
实现方式二、从数据源读取事务的每个特征的第一信息。
该数据源用于存储事务的每个特征的每个第一信息。该数据源可以是一个或多个存储设备、数据库或云存储系统等。该数据库包括而不限于Elastic数据库(英文:ElasticSearch)、Redis数据库、kafka数据库等。
实现方式三、接收终端的事务分析请求,从事务分析请求中获取第一信息。
终端可以在事务分析请求中携带第一信息,将事务分析请求发送至计算机设备,计算机设备可以接收事务分析请求,解析该事务分析请求,得到事务分析请求中携带的第一信息。
实现方式四、从第三方性能监控应用,截获第一信息。
第三方性能监控应用可以是任一能够监控事务的执行过程的应用,第三方性能监控应用可以对特征在事务的问题执行过程中出现的次数进行统计,以得到第一信息,计算机设备可以与第三方性能监控应用进行通信,当第三方性能监控应用输出第一信息时,计算机设备可以截获该第一信息。
第二信息:用于指示特征在事务的正常执行过程中出现的次数。可选地,第二信息可以是特征在事务的正常执行过程中出现的次数;可选地,第二信息可以是对特征在事务的正常执行过程中出现的次数进行换算得到的某一信息,例如,第二信息可以是比例或百分比。举例来说,第二信息可以是特征在事务的正常执行过程中出现的次数与同一特征名的其他特征在事务的正常执行过程中出现的次数之间的比例;举例来说,第二信息可以是特征在事务的正常执行过程中出现的次数在特征的总计出现次数中所占的百分比;举例来说,第二信息可以是特征在事务的正常执行过程中出现的次数在同一特征名的所有特征在事务的正常执行过程中出现的次数中所占的百分比;举例来说,第二信息可以是特征在事务的正常执行过程中出现的次数在同一特征名的所有特征的总计出现次数中所占的百分比。
正常执行过程是指事务的正常的一次执行过程。其中,事务的正常可以根据实际应用场景定义,本实施例对此不做限定。举例来说,应用于运维技术领域,正常执行过程可以包括不慢执行过程以及成功执行过程中的至少一种。举例来说,应用于网络安全技术领域,正常执行过程可以包括未发生网络攻击的执行过程中的至少一种。
在一种可能的实现中,若事务的一次执行过程为不慢执行过程,可以将此次执行过程视为正常执行过程。在另一种可能的实现中,若事务的一次执行过程为成功执行过程,可以将此次执行过程视为正常执行过程。在另一种可能的实现中,若事务的一次执行过程为不慢执行过程且为成功执行过程,可以将此次执行过程视为正常执行过程。其中,不慢执行过程可以是执行时长不符合第一预设条件的执行过程。成功执行过程可以是状态码不符合第二预设条件的执行过程。未发生网络攻击的执行过程可以是执行记录中包括网络攻击未发生标识的执行过程。其中,该网络攻击未发生标识用于标识执行记录对应的执行过程中未发生了网络攻击,网络攻击未发生标识包括而不限于数字、字母、字符串等任意形式。
该第一预设条件以及该第二预设条件详见上述描述,在此不做赘述。
需要说明的一点是,不慢执行过程、成功执行过程以及未发生网络攻击的执行过程仅是对正常执行过程的举例说明,本申请对正常执行过程的具体定义方式并不做限定。本领域技术人员在考虑到本实施例提供的事务分析方法后,可以将本申请提供的事务分析方法应用在运维技术的其他应用场景中,相应地,可以将该其他应用场景中对产品的期望定义为正常执行过程。同理地,可以将运维技术领域以外的其他技术领域中对产品的期望定义为正常执行过程;依次类推,可以将任意技术领域中任意一种满足用户需求的执行过程定义为正常执行过程。本实施例旨在涵盖其他应用场景下,对正常执行过程的定义的任何变型、用途或者适应性变化,这些经过了变型、用途或者适应性变化的、对正常执行过程的定义方式,凡是遵循本公开的一般性原理,均应包含在本申请的保护范围。
第二信息的数据格式可以是可供设备识别的任一数据格式。作为举例性质的描述,第二信息包括而不限于以下两种形式:
(1)第二信息可以携带在第三列表中。
具体地,第三列表用于记录同一特征名的每个特征的第二信息,第二信息可以为第三列表中某一行的取值,或者为第三列表中某一列的取值。
在一种可能的实现中,该第三列表中可以包括两列,一列包括至少一个特征,另一列包括至少一个第二信息,第i行的特征的第二信息也位于第i行。在另一种可能的实现中,该第三列表中可以包括两行,一行包括至少一个特征,另一行包括至少一个第二信息,第j列的特征的第二信息也位于第j列。示例性的,参见图17,图17为携带了第二信息的第三列表的示意图,从图17可以看出,“浏览器是aaa”这个特征的第二信息是10次,“浏览器是bbb”这个特征的第二信息是200次,“浏览器是ccc”这个特征的第二信息是253次,“浏览器是ddd”这个特征的第二信息是18次。
(2)第二信息可以携带在直方图中。
第二直方图可以用于表示同一特征名的每个特征的第二信息的分布情况。该第二直方图的横轴表示同一特征名的每个特征,该第二直方图的纵轴表示第二信息的取值范围。第二直方图包括至少一个相邻的矩形,每个矩形映射一个特征。具体地,矩形的底宽等于对应特征的取值范围的跨度,矩形的底的一个端点表示对应特征的最小特征值,矩形的底的另一个端点表示对应特征的最大特征值,矩形的高表示对应特征的第二信息。
可选地,第二信息可以是第二直方图中特征对应的矩形的高度。示例性地,参见图18,其示出了第二直方图的示意图,该第二直方图对应的特征名为时间,第二直方图中每个矩形表示一个时间段在正常执行过程中的出现次数,矩形的高度越高,表示对应时间段在正常执行过程中的出现次数越多,对应时间段在正常执行过程中出现的越频繁。该第二直方图中第一个矩形表示:特征“0点至6点”在正常执行过程中出现210次;该第二直方图中第二个矩形表示:特征“7点至12点”在正常执行过程中出现140次。该第二直方图中第三个矩形表示:特征“13点至18点”在正常执行过程中出现40次。该第二直方图中第四个矩形表示:特征“19点至24点”在正常执行过程中出现50次。
在一种可能的实现中,第二直方图可以通过对应特征名的第四列表生成。该第四列表包括该特征名在正常执行过程中出现的多个特征。举例来说,假设特征名为时间,则第四列表可以是“8点、7点、10点、9点、11点”。举例来说,假设特征名为队列长度,则第四列表可以是“3、1、10、4”。可选地,该第四列表可以通过数组实现,数组的每个位置可以存储一个特征。
关于通过第四列表生成第二直方图的方式,在一种可能的实现中,可以对第四列表中的每个特征按照特征值的大小进行排序,根据排序结果。从排序结果中,选取值最小的特征以及特征值最大的特征。根据该特征值最小的特征以及该特征值最大的特征,获取直方图中矩形的数量、每个矩形的底宽以及每个矩形的高度。根据矩形的数量、每个矩形的底宽以及每个矩形的高度,生成第二直方图。
可选地,该第二直方图的横轴可以均分,则横轴中每个单位长度映射的特征的取值范围的跨度均相等。举例来说,假设第二直方图描述的特征名为时间,横轴的每个单位长度可以映射1个小时。可选地,该第二直方图的横轴也可以不均分,则横轴上每个单位长度映射的特征的取值范围的跨度可以不同,这种形式的直方图可以称为HDR直方图。例如,横轴的第二个单位长度映射1个长度,横轴的第2个单位长度映射1.5个小时,横轴的第3个单位长度映射2个小时,横轴的第4个单位长度开始每个单位长度映射2个小时。
需要说明的一点是,上述(1)以及(2)仅是第二信息的形式的可选方式,而非必选方式。可选地,第二信息可以是任一数据结构中的数据。例如,第二信息可以是数组中的某一位置存储的数据;例如,第二信息可以是链表中的某一节点中存储的数据;例如,第二信息可以是哈希表中的某一节点中存储的数据;例如,第二信息可以是二叉树中的某一节点中存储的数据;例如,第二信息可以是图形化数据中的某一位置中的数据。
关于第二信息的获取方式,可选地,第二信息可以通过下述实现方式一至实现方式四中的任一项或多项获取。
实现方式一、对特征在事务的正常执行过程中出现的次数进行统计,得到第二信息。
实现方式一包括而不限于下述方式(1.1)至方式(1.4)中的任一项或多项的组合:
方式(1.1)使用基数统计技术,对特征在事务的正常执行过程中出现的次数进行统计。
在一种可能的实现中,事务的正常执行过程中出现的每个特征可以组成数据流,可以对数据流中的每个特征进行基数统计,得到每个特征的第二信息。
在本实现方式中,可以将正常执行过程中出现的特征的总数量作为基数统计中的m,将任一特征作为ai,将每个特征在正常执行过程中的出现次数定义为f={f1,f2,……,fm},其中fi为特征ai在事务的正常执行过程中出现的次数;相应地,可以采用任意一种基数统计方法,统计得到每个特征的第二信息。
关于统计特征在正常执行过程中出现的次数的方式,在一种可能的实现中,可以为事务的每一种特征均分配一个计数器,使用该计数器来记录该特征在正常执行过程中的出现次数,当尚未接收到在正常执行过程中出现的特征时,特征对应的计数器存储的次数可以为0,每当该特征出现一次时,可以对该计数器存储的次数加一,当符合停止统计条件时,可以从计数器中读取存储的次数,作为特征的第二信息。在另一种可能的实现中,可以为每一种特征的哈希值分配一个计数器,使用该计数器来记录该哈希值对应的特征在正常执行过程中的出现次数。具体地,可以利用基于草图(英文:Sketch-based)的计数方法来进行计数,每当特征在正常执行过程中出现一次时,可以对特征的哈希值对应的计数器存储的次数递增,则各种特征可以根据对应的哈希值进行归类计数,从而减少统计次数所需占用的存储空间。
可选地,统计第二信息时,使用的基数统计方法包括而不限于CMS、线性计数(英文:Linear Counting,缩写:LC)、双对数计数(英文:LogLog Counting,缩写:LLC)、自适应计数(英文:Adaptive Counting,缩写:AC)、超双对数计数(英文:HyperLogLog Counting,缩写:HLLC)、计数平均最小草图(英文:Count-Mean-Min Sketch,缩写:CMMS)、位图(英文:bitmap)、混合静态随机存取存储器(英文:Static Random-Access Memory,缩写:SRAM)/动态随机存取存储器(英文:Dynamic Random Access Memory,缩写:DRAM)计数器(英文:Counter)、布隆过滤器(英文:Bloom Filter)、编织分层计数器(英文:Counter Braids)、桶式秩索引计数器(英文:bucketized rank indexed counters,缩写:BRICK)等。
其中,计数最小草图(Count-Min Sketch,缩写:CMS):是一种用于统计数据流(英文:flow)中任一数据的频数的技术。CMS的数据结构是一个m列和n行的矩阵,m和n是正整数。矩阵的每一行是一个数组,对应于一个哈希函数,不同行对应的哈希函数。矩阵中的每个单元是一个计数器(counter)。其中,m可以是哈希函数能够生成的哈希值的总数量。
以使用CMS技术为例,对特征在正常执行过程中的出现次数的统计过程可以包括下述步骤一至步骤三:
步骤一、使用多个不同的哈希函数,对特征进行哈希运算,得到多个不同的哈希值。
具体地,事务的每个在正常执行过程中出现的特征可以组成数据流,持续发送至计算机设备。每当接收到一次正常执行过程中出现的特征时,可以使用每个哈希函数对特征计算出一个哈希值,由于哈希函数不同,则计算出的哈希值也不同。
步骤二、根据多个哈希值,在多个不同的第三数组中获取多个第三位置。
第三数组用于统计特征在正常执行过程中出现的次数,每个第三数组对应一个哈希函数,任一第三数组用于为对应哈希函数存储计数。例如,一个第三数组可以是图11中矩阵的一行。第三数组的数量可以等于哈希函数的数量。第三数组中的每个位置可以视为一个计数器。当开始统计次数时,每个第三数组的每个第三位置存储的次数可以置为0。示例性地,参见图11,哈希函数h1(x)对应于第1行所示的第三数组,哈希函数h2(x)对应于第2行所示的第三数组,哈希函数h3(x)对应于第3行所示的第三数组,哈希函数h4(x)对应于第4行所示的第三数组。
第三位置是指第三数组中哈希值对应的位置。在第三数组中获取第三位置的过程与在第一数组中获取第一位置的过程同理,在此不做赘述。
步骤三、对该多个第三位置存储的次数进行递增。
例如,可以对多个第三位置中每个第三位置存储的次数加一。
上述步骤一至步骤三描述了使用CMS技术的一次计数过程,可以通过多次执行上述步骤一至步骤三,为事务的每个特征在正常执行过程中的出现次数进行统计,当符合停止统计条件时,对于事务的任一个特征,可以使用多个哈希函数,对特征进行哈希运算,得到多个不同的哈希值。根据多个哈希值,在多个第三数组中获取多个第三位置;选取该多个第三位置存储的次数的最小值,作为该特征的第二信息。可选地,可以获取该多个第三位置存储的次数,对该多个第三位置存储的次数进行排序,以从多个第三位置存储的次数中选取最小值。
需要说明的是,当特征为实数型特征时,可以将特征映射为枚举型特征,对枚举型特征进行基数统计,得到第二信息。也可以将特征映射为目标区间,对目标区间进行基数统计,得到第二信息。
通过使用CMS技术来进行计数,一方面,由于CMS的数据结构的数据量较小,占用的内存空间较少,可以节约对存储资源的消耗。另一方面,可以减少哈希碰撞的概率。
方式(1.2)使用计数信息,对特征在事务的正常执行过程中出现的次数进行统计。
方式(1.2)可以包括下述步骤一至步骤三:
步骤一、遍历第二计数信息。
第二计数信息是指记录事务的每个特征在正常执行过程中的出现次数时,使用的计数信息。第二计数信息可以是任意形式的信息,例如,参见图13,第二计数信息可以是列表,列表中的任一表项用于记录一个特征的出现次数;第二计数信息也可以是数组,数组中的任一位置用于记录一个特征的出现次数;第二计数信息也可以是链表,链表中的任一节点用于记录一个特征的出现次数;第二计数信息也可以是树形结构数据,树形结构数据中的任一节点用于记录一个特征的出现次数,本实施例对第二计数信息的数据结构不做限定。
具体地,事务的在正常执行过程中出现的每个特征可以组成数据流,持续发送至计算机设备。每当接收到一次特征时,可以根据该特征遍历第二计数信息;当在该第二计数信息中遍历到该特征时,可以执行下述步骤二;当在该第二计数信息中未遍历到该特征时,可以执行下述步骤三。遍历第二计数信息的方式可以包括:以该特征的特征名为目标特征名,以该特征的特征值为目标特征值,从第二计数信息的任一特征开始,判断第二计数信息中的特征的特征名是否为目标特征名,第二计数信息中的特征的特征值是否为目标特征值,当第二计数信息中任一特征的特征名为目标特征名且特征值为目标特征值时,确定遍历到了该特征,则遍历结束,当第二计数信息中任一特征的特征名不为目标特征名或者特征值不为目标特征值时,则继续遍历下一个特征,直至遍历结束。另外,该遍历方式可以包括前序遍历、中序遍历、后序遍历、深度优先、广度优先等,本实施例对此不做限定。
步骤二、对该第二计数信息中该特征对应的次数进行递增。
可选地,递增的幅度可以为1。对第二计数信息中的次数进行递增的过程与上述对第一计数信息中的次数进行递增的过程同理,在此不做赘述。
步骤三、向该第二计数信息中插入目标位置,该目标位置用于存储特征对应的次数。
可选地,可以向第二计数信息中已占用的所有位置之后插入该目标位置。可选地,可以向目标位置中写入特征以及特征的初始次数,该初始次数可以为1。向第二计数信息插入目标位置的过程与上述向第一计数信息插入目标位置的过程同理,在此不做赘述。
上述步骤一至步骤三描述了使用第二计数信息的一次计数过程,可以通过多次执行上述步骤一至步骤三,为事务的每个特征在正常执行过程中的出现次数进行统计,当符合停止统计条件时,将该第二计数信息中该特征对应的次数作为该特征的第二信息。
方式(1.3)使用直方图,对特征在事务的正常执行过程中出现的次数进行统计。
在一种可能的实现中,可以对第二直方图中该特征对应的次数进行递增;当符合停止统计条件时,将该第二直方图作为该特征的第二信息。其中,递增幅度可以为1。
可选地,若第二直方图指示区间以及次数之间的对应关系,每个矩形的底指代一个区间,则第二直方图中特征对应的次数,可以指特征的特征值所属的目标区间对应的次数。可选地,若第二直方图指示枚举值以及次数之间的对应关系,每个矩形的底指代一个枚举值,则第二直方图中特征对应的次数,可以指特征的特征值映射的枚举值对应的次数。可选地,可以当接收到特征时,确定特征所属的目标区间或者特征映射的枚举值;可选地,也可以在预处理时,将特征映射为目标区间或枚举值,则在次数统计时,可以直接对目标区间或枚举值进行计数。
方式(1.4)使用基础草图(英文:Basic Sketch)算法,对特征在事务的正常执行过程中出现的次数进行统计。
在一种可能的实现中,可以使用哈希函数,对该特征进行哈希运算,得到哈希值;根据该哈希值,在第四数组中获取第四位置;对该第四位置存储的次数进行递增;当符合停止统计条件时,获取该第四位置存储的次数,作为该特征的第二信息。其中,该第四数组用于统计特征在正常执行过程中出现的次数,第四位置是指第四数组中哈希值对应的位置,递增幅度可以为1。
实现方式二、从数据源读取事务的每个特征的第二信息。
该数据源用于存储事务的每个特征的每个第二信息。该数据源可以是一个或多个存储设备、数据库或云存储系统等。该数据库包括而不限于Elastic数据库(英文:ElasticSearch)、Redis数据库、kafka数据库等。
实现方式三、接收终端的事务分析请求,从事务分析请求中获取第二信息。
终端可以在事务分析请求中携带第二信息,将事务分析请求发送至计算机设备,计算机设备可以接收事务分析请求,解析该事务分析请求,得到事务分析请求中携带的第二信息。
实现方式四、从第三方性能监控应用,截获第二信息。
第三方性能监控应用可以是任一能够监控事务的执行过程的应用,第三方性能监控应用可以对特征在事务的正常执行过程中出现的次数进行统计,以得到第二信息,计算机设备可以与第三方性能监控应用进行通信,当第三方性能监控应用输出第二信息时,计算机设备可以截获该第二信息。
需要说明的一点是,第一信息的获取方式以及第二信息的获取方式可以相同,也可以不同,本实施例对此不做限定。
702、计算机设备计算至少一个特征中的每个特征的第一信息与第二信息之间的差异信息。
差异信息用于指示第一信息与第二信息之间的差异程度。例如,差异信息可以与第一信息与第二信息之间的差异程度正相关,差异信息越大,表示第一信息与第二信息之间的差异程度越显著,差异信息对应的特征是潜在原因特征的概率越大。可选地,可以以第一信息为被减对象,将第一信息减去第二信息,得到差异信息,可选地,也可以以第二对象为被减对象,将第二信息减去第一信息,得到差异信息。
可选地,差异信息的计算方式包括而不限于下述实现方式一至实现方式三中任一项或多项的组合。可选地,当特征为枚举类型时,可以执行下述实现方式一;当特征为连续类型时,可以执行下述实现方式二或实现方式三。可选地,可以获取特征的类型,判断特征的类型是否为枚举类型,当特征为枚举类型时,执行下述实现方式一;同理地,可以判断特征的类型是否为连续类型,当特征为连续类型时,执行下述实现方式二或实现方式三。可选地,当特征为连续类型时,可以将特征的特征值映射为枚举值或目标区间,从而将特征离散化,再对离散化的特征执行下述实现方式二或实现方式三。
实现方式一、根据特征的第一信息、第二信息、第三信息以及第四信息,计算第一信息以及第二信息之间的差异信息。
实现方式一具体包括下述步骤一至步骤三。
步骤一、获取每个特征的第三信息。
第三信息用于指示对应特征的至少一个其他特征的第一信息的总和,即至少一个其他特征在事务的问题执行过程中出现的次数的总和。其中,该其他特征为事务的对应特征以外的特征,其他特征的特征名与对应特征的特征名相同,其他特征的特征值与对应特征的特征值不同。
例如,假设某特征为“浏览器是浏览器aa”,则该特征的特征名为浏览器,该特征的特征值为浏览器aa。那么,该特征的其他特征是指:特征名是浏览器且特征值不是浏览器aa的特征。例如,其他特征可以是“浏览器是浏览器bb”。可选地,特征与至少一个其他特征可以组成一个特征名的取值范围。例如,假设执行某事务的环境中,浏览器共计分为4种,分别是浏览器aa、浏览器bb、浏览器cc以及浏览器dd,则对于“浏览器是浏览器aa”来说,该特征的至少一个其他特征可以是“浏览器是浏览器bb”、“浏览器是浏览器cc”以及“浏览器是浏览器dd”,相应地,该特征的第三信息可以指示“浏览器是浏览器bb”的第一信息、“浏览器是浏览器cc”以及“浏览器是浏览器dd”的第一信息的总和;对于“浏览器是浏览器bb”来说,该特征的至少一个其他特征可以是“浏览器是浏览器aa”、“浏览器是浏览器cc”以及“浏览器是浏览器dd”,相应地,该特征的第三信息可以指示“浏览器是浏览器aa”的第一信息、“浏览器是浏览器cc”以及“浏览器是浏览器dd”的第一信息的总和;以此类推。
关于特征的第三信息的获取方式,可选地,对于任一个特征来说,假设将该特征的特征名称为目标特征名,将该特征的特征值称为目标特征值,可以从事务的至少一个特征中,选择特征名为该目标特征名且特征值不为该目标特征值的至少一个其他特征,对至少一个其他特征的第一信息求和,将和特征值作为特征的第三信息。在一种可能的实现中,假设特征以键值对的形式表示,假设将该特征的键称为目标键,将该特征的特征值称为目标特征值,可以从事务的至少一个特征中,选择键为该目标键且特征值不为该目标特征值的至少一个其他特征,对至少一个其他特征的第一信息求和,将和值作为特征的第三信息。
作为一个举例,假设第一信息、第二信息、第三信息以及第四信息为次数,参见下表5以及表6,对于“浏览器是浏览器aa”来说,该特征的至少一个其他特征是“浏览器是浏览器bb”、“浏览器是浏览器cc”以及“浏览器是浏览器dd”,“浏览器是浏览器bb”的第一信息为25,“浏览器是浏览器cc”的第一信息为128,“浏览器是浏览器dd”的第一信息为32。该特征的第三信息为25+128+32=185。
表5
特征 | 在问题执行过程中出现的次数 |
浏览器是浏览器aa | 132 |
浏览器是浏览器bb | 25 |
浏览器是浏览器cc | 128 |
浏览器是浏览器dd | 32 |
表6
步骤二、获取每个特征的第四信息。
第四信息用于指示对应特征的至少一个其他特征的第二信息的总和,即至少一个其他特征在事务的在事务的正常执行过程中出现的次数的总和。其中,该其他特征为事务的对应特征以外的特征,其他特征的特征名与对应特征的特征名相同,其他特征的特征值与对应特征的特征值不同。
关于特征的第四信息的获取方式,可选地,对于任一个特征来说,假设将该特征的特征名称为目标特征名,将该特征的特征值称为目标特征值,可以从事务的至少一个特征中,选择特征名为该目标特征名且特征值不为该目标特征值的至少一个其他特征,对至少一个其他特征的第二信息求和,将和值作为特征的第四信息。在一种可能的实现中,假设特征以键值对的形式表示,假设将该特征的键称为目标键,将该特征的特征值称为目标特征值,可以从事务的至少一个特征中,选择键为该目标键且特征值不为该目标特征值的至少一个其他特征,对至少一个其他特征的第二信息求和,将和值作为特征的第四信息。
示例性地,假设第一信息、第二信息、第三信息以及第四信息为次数,参见下表7以及表8,对于“浏览器是浏览器aa”来说,该特征的至少一个其他特征是“浏览器是浏览器bb”、“浏览器是浏览器cc”以及“浏览器是浏览器dd”,“浏览器是浏览器bb”的第一信息为200,“浏览器是浏览器cc”的第一信息为253,“浏览器是浏览器dd”的第一信息为18。该特征的第三信息为200+253+18=471。
表7
特征 | 在正常执行过程中出现的次数 |
浏览器是浏览器aa | 10 |
浏览器是浏览器bb | 200 |
浏览器是浏览器cc | 253 |
浏览器是浏览器dd | 18 |
表8
需要说明的第一点是,先描述步骤一再描述步骤二仅是为了表述方便,本实施例对步骤一以及步骤二并没有时序上的限定。例如,可以先执行步骤二,再执行步骤一;又如,可以先执行步骤一,再执行步骤二;再如,可以并行执行步骤一和步骤二。
步骤三、根据每个特征的第一信息、每个特征的第二信息、每个特征的第三信息以及每个特征的第四信息,计算每个特征的差异信息。
对于任一个特征来说,可以根据该特征的第一信息、该特征的第二信息、该特征的第三信息以及该特征的第四信息,计算该特征的差异信息。可选地,步骤三中差异信息的计算方式包括而不限于下述方式A至方式B中的任一项或多项。
方式A、将第一信息、第二信息、第三信息以及第四信息输入似然比校验模型,输出似然比校验值。
该似然比校验模型用于使用似然函数,校验第一信息与第二信息之间的差异。该似然比校验模型的输入参数可以包括第一信息、第二信息、第三信息、第四信息,输出参数或中间结果为似然比校验值。
可选地,该似然比校验模型可以对频数列联表进行计算,输出似然比校验值。
频数列联表(英文:contingency table):是指对观测变量按照两个或两个以上的属性进行分类后列出的频数表。具体地,如果使用数据集合的属性A以及属性B来构建列联表,其中属性A共计有r个等级A1、A2至Ar,属性B共计有c个等级B1、B2至Bc,则会得到一个r行c列的列联表,该列联表简称r×c表,该列联表中第i行第j列的数据nij为等级Ai和等级Bj处的频数。其中,r、c、i和j均为正整数。举例来说,如果使用样本数据的两个属性构建列联表,且每个属性有两种,则会得到两行两列的列联表,该两行两列的列联表又称2×2表或四格表。
在一种可能的实现中,可以将特征的出现次数作为频数列联表对应的观测变量,将问题执行过程以及正常执行过程作为观测变量的属性,生成2×2的频数列联表,来承载第一信息。示例性地,参见下表9,表9为携带第一信息的频数列联表的示例。该频数列联表中K表示频数,K11表示特征在问题执行过程中出现的次数,该频数列联表中K21表示特征在正常执行过程中出现的次数,该频数列联表中K12表示同一特征名的其他特征在问题执行过程中出现的次数的总和,该频数列联表中K22表示同一特征名的其他特征在正常执行过程中出现的次数的总和。结合表1,第一信息可以是K11,第二信息可以是K21。
表9
频数列联表 | 特征 | 同一特征名的其他特征 |
问题执行过程 | K<sub>11</sub> | K<sub>12</sub> |
正常执行过程 | K<sub>21</sub> | K<sub>22</sub> |
可选地,似然比校验模型可以包括对数似然比校验模型以及最大似然估计模型,相应地,方式A包括而不限于下述两种方式。
方式A1、可以将第一信息、第二信息、第三信息以及第四信息输入对数似然比校验模型,输出差异信息。
方式A1包括而不限于下述三种实现方式中的任一项或多项的组合:
A1.1在一种可能的实现中,该对数似然比校验模型使用的数学公式可以如下:
N11=K11/(K11+K12);公式(1)
N21=K21/(K21+K22);公式(2)
M11=M21=(K11+K21)/(K11+K12+K21+K22);公式(3)
D=2*(K11*log(N11/M11)+K21*log(N21/M21)));公式(4)
其中,K11表示特征的第二信息,K21表示特征的第一信息,K12表示特征的第三信息,K22表示特征的第四信息。N11的取值如公式(1)所示,N11可以视为特征的第二信息在同一特征名的所有第二信息的总和所占的比例;N21的取值如公式(2)所示,N21可以视为特征的第一信息在同一特征名的所有第一信息中所占的比例;M11和M21的取值如公式(3)所示,M11和M21可以视为特征的出现次数在同一特征名的所有特征的出现次数中所占的比例;D表示差异信息,D的取值如公式(4)所示。
示例性地,假设某特征的第一信息、第二信息、第三信息、第四信息如下表10所示,则K11为10,K21为130,K12为471,K22为185;N11=K11/(K11+K12)=10/(10+471)=0.02;N21=K21/(K21+K22)=130/(130+185)=0.42;M11=M21=(K11+K21)/(K11+K12+K21+K22)=(10+130)/(10+471+130+185)=0.17;差异信息=2*(10*log(0.02/0.17)+132*log(0.42/0.17))=85.11。
表10
特征 | 浏览器是浏览器aa | 浏览器不为浏览器aa |
在正常执行过程中出现的次数 | 10 | 471 |
在问题执行过程中出现的次数 | 132 | 185 |
A1.2在一种可能的实现中,该对数似然比校验模型使用的数学公式可以如下:
N11=K11/(K11+K12);公式(5)
N12=K12/(K11+K12);公式(6)
N21=K21/(K21+K22);公式(7)
N22=K22/(K21+K22);公式(8)
M11=M21=(K11+K21)/(K11+K12+K21+K22);公式(9)
M12=M22=(K12+K22)/(K11+K12+K21+K22);公式(10)
其中,K11表示特征的第二信息,K21表示特征的第一信息,K12表示特征的第三信息,K22表示特征的第四信息。N11可以视为特征的第二信息在同一特征名的所有第二信息的总和所占的比例,N11的取值如公式(5)所示;N21可以视为特征的第一信息在同一特征名的所有第一信息中所占的比例,N21的取值如公式(7)所示;N12可以视为同一特征名的所有其他特征的第一信息,在同一特征名的所有特征的第一信息中所占的比例,N12的取值如公式(6)所示;N22可以视为同一特征名的所有其他特征的第二信息,在同一特征名的所有特征的第二信息中所占的比例,N22的取值如公式(8)所示;M11和M21可以视为特征的出现次数在同一特征名的所有特征的出现次数中所占的比例,M11和M21的取值如公式(9)所示;M12和M22可以视为同一特征名的所有其他特征的出现次数在同一特征名的所有特征的出现次数中所占的比例,M12和M22的取值如公式(10)所示;D表示差异信息,D的取值如公式(11)所示,i的取值范围为1或2,j的取值范围为1或2。
A1.3在一种可能的实现中,该对数似然比校验模型使用的数学公式可以如下:
N12=K12/(K11+K12);公式(12)
N22=K22/(K21+K22);公式(13)
M12=M22=(K12+K22)/(K11+K12+K21+K22);公式(14)
D=2*(K12*log(N12/M12+K22*log(N22/M22)));公式(15)
其中,K11表示特征的第二信息,K21表示特征的第一信息,K12表示特征的第三信息,K22表示特征的第四信息。N12可以视为同一特征名的所有其他特征的第一信息,在同一特征名的所有特征的第一信息中所占的比例,N12的取值如公式(12)所示;N22可以视为同一特征名的所有其他特征的第二信息,在同一特征名的所有特征的第二信息中所占的比例,N22的取值如公式(13)所示;M12和M22可以视为同一特征名的所有其他特征的出现次数在同一特征名的所有特征的出现次数中所占的比例,M12和M22的取值如公式(14)所示;D表示差异信息,D的取值如公式(15)所示。
需要说明的一点是,对上述A1.1、A1.2以及A1.3的选择可以根据需求确定,本实施例对此不做限定。在一种可能的实现中,在分析事务的问题的原因的场景中,可以将A1.1作为对数似然比校验模型使用的数学公式,在分析事务的成功的原因的场景中,可以将A1.3作为对数似然比校验模型使用的数学公式。
可选地,在分析事务的问题的原因的场景中,当事务的问题较少时,可以将A1.1作为对数似然比校验模型使用的数学公式,当事务的问题严重时,可以将A1.2作为对数似然比校验模型使用的数学公式。在一种可能的实现中,可以获取事务的至少一次正常执行过程的第一总次数以及至少一次问题执行过程的第二总次数;计算第一总次数与第二总次数的差值,当该差值大于阈值时,将A1.1作为对数似然比校验模型使用的数学公式;当该差值不大于阈值时,将A1.2作为对数似然比校验模型使用的数学公式。在另一种可能的实现中,可以判断第一总次数是否大于第二总次数,当第一总次数大于第二总次数时,可以将A1.1作为对数似然比校验模型使用的数学公式,当第一总次数不大于第二总次数时,可以将A1.2作为对数似然比校验模型使用的数学公式。
方式A2、可以将第一信息、第二信息、第三信息以及第四信息输入最大似然估计模型,输出差异信息。
在一种可能的实现中,可以将最大似然估计模型输出的最大似然估计(英文:Maximum Likelihood Estimation,缩写:MLE)值作为差异信息。
方式B、将第一信息、第二信息、第三信息以及第四信息输入假设校验模型,从假设校验模型中,获取该差异信息。
假设校验模型用于根据输入的第一信息、第二信息、第三信息以及第四信息,判定第一信息以及第二信息之间是否出现显著性差异。具体地,假设校验模型可以通过假设校验的方式,判断特征在问题执行过程中出现的次数以及特征在正常执行过程中出现的次数之间的差异是否足够显著,从而确定两种出现的次数的差异,是由抽样误差以及噪声信号这样的偶然因素引起,还是由节点出现问题这样的本质因素引起。示例性地,假设校验模型可以包括卡方检验模型、t检验模型、Z检验模型、F检验模型等。示例性地,假设校验模型可以包括双边检验模型、右侧单边检验模型、左侧单边检验模型等。
在一种可能的实现中,假设校验模型可以将第一信息与第二信息之间存在显著性差异作为原假设,将第一信息与第二信息之间不存在显著性差异作为备选假设,根据第一信息、第二信息、第三信息以及第四信息,对原假设进行校验,得到校验结果,当校验结果属于接受域时,则判定原假设成立,备选假设不成立,即特征的第一信息与第二信息之间不存在显著性差异;当校验结果属于拒绝域时,则判定原假设不成立,备选假设成立,即特征的第一信息与第二信息之间存在显著性差异。其中,该接受域以及拒绝域可以根据自由度以及显著性水平确定,该自由度可以根据第一信息、第二信息、第三信息以及第四信息的数量确定,该显著性水平可以根据经验、实验或需求设置。当然,假设校验模型可以将第一信息与第二信息之间不存在显著性差异作为原假设,将第一信息与第二信息之间存在显著性差异作为备选假设,本实施例对此不做限定。
在一种可能的实现中,可以从假设校验模型中获取校验结果,作为差异信息。示例性地,若假设校验模型为卡方校验模型,可以从卡方校验模型中获取卡方值,作为差异信息;若假设校验模型为t检验模型,可以从t检验模型获取t值,作为差异信息。
实现方式二、根据蜡烛图来计算差异信息。
蜡烛图:也称K线图(英文:K line graph),是一种能够反映数据的变化趋势以及分布情况的可视化数据,蜡烛图的形状形似蜡烛,其实体为一个矩形,另外蜡烛图还包括上影线、下影线等。
在实现方式二中,可以使用蜡烛图来表示事务的执行过程中同一特征名出现的每个特征的分布情况。具体地,每个蜡烛图可以对应事务的一个特征名,蜡烛图的每个位置可以对应特征的一个特征值。可选地,以蜡烛图为阳线为例,蜡烛图的最低点表示同一特征名的多个特征中,位于第一分位数的特征值。蜡烛图的收盘点表示同一特征名的多个特征中,位于第二分位数的特征值。蜡烛图的开盘点表示同一特征名的多个特征中,位于第三分位数的特征值。蜡烛图的最高点表示同一特征名的多个特征中,位于第四分位数的特征值。蜡烛图中实体的长度表示第二分位数的特征值与第三分位数的特征值的差异。其中,最低点是指蜡烛图中下影线的远离实体的端点的位置,收盘点是指蜡烛图中实体的与下影线接触的端点的位置,开盘点是指蜡烛图中实体的与上影线接触的端点的位置,最高点是指蜡烛图中上影线的远离实体的端点的位置。可选地,蜡烛图中可以具有穿过实体的竖线,该竖线的位置表示位于第五分位数的特征值。
其中,该第一分位数、第二分位数、第三分位数、第四分位数可以按照从小到大的顺序排序。该第一分位数、第二分位数、第三分位数以及第四分位数的位置可以根据需求配置。举例来说,第一分位数为5%,第二分位数为25%,第三分位数为75%,第四分位数为95%。可选地,该第五分位数可以是50%,则蜡烛图中穿过实体的竖线可以表示一个特征名的所有特征的中位数。
在一种可能的实现中,实现方式二可以通过下述步骤一至步骤三实现:
步骤一、根据每个特征的第一信息,生成至少一个第一蜡烛图。
第一蜡烛图用于表示事务的问题执行过程中同一特征名的特征的分布情况。具体地,第一蜡烛图中最低点表示在事务的问题执行过程中出现的同一特征名的多个特征中,位于第一分位数的特征值。蜡烛图的收盘点表示在事务的问题执行过程中出现的同一特征名的多个特征中,位于第二分位数的特征值。蜡烛图的开盘点表示在事务的问题执行过程中出现的同一特征名的多个特征中,位于第三分位数的特征值。蜡烛图的最高点在事务的问题执行过程中出现的同一特征名的多个特征中,位于第四分位数的特征值。蜡烛图的实体的竖线表示在事务的问题执行过程中出现的同一特征名的多个特征中,位于第五分位数的特征值。
举例来说,假设特征名为时间,并假设第一分位数为5%,第二分位数为25%,第三分位数为75%,第四分位数为95%。该第五分位数是50%,参见图19,图19为第一蜡烛图的示意图,从图19可以看出,事务的问题执行过程中出现的所有时间中,排在第25%的时间为9点、排在第50%的时间为14点,排在第75%的时间为19点,排在第95%的时间为19点。
关于第一蜡烛图的生成过程,在一种可能的实现中,可以根据事务的每个特征的第一信息,获取位于第一分位数的特征值、位于第二分位数的特征值、位于第三分位数的特征值、位于第四分位数的特征值,根据位于第一分位数的特征值,获取第一蜡烛图中最低点的第一位置坐标;根据位于第二分位数的特征值,获取第一蜡烛图中收盘点的第二位置坐标;根据位于第三分位数的特征值,获取第一蜡烛图中开盘点的第三位置坐标;根据位于第四分位数的特征值,获取第一蜡烛图中最高点的第四位置坐标;可以根据第一位置坐标、第二位置坐标、第三位置坐标、第四位置坐标,绘制第一蜡烛图。
其中,关于获取位于某一分位数的特征值的过程,在一种可能的实现中,可以对事务的同一特征名的在问题执行过程中出现的每个特征,按照特征值从小到大的顺序,对每个特征进行排序,得到排序结果;从排序结果中,获取至少一个分位数。在另一种可能的实现中,可以采用任一种将直方图转换为蜡烛图的函数,对第一直方图进行计算,得到第一蜡烛图。
举例来说,以特征名为价格为例,同时假设特征名为价格的特征在问题执行过程中共计出现100次,可以对100个特征按照价格从小到大的顺序进行排序;可以获取排序结果中第5个价格,即排在第5%的价格;获取排序结果中第25个价格,即排在第25%的价格;获取排序结果中第75个价格,即排在第75%的价格;获取排序结果中第95个价格,即排在第95%的价格;根据这四个价格的具体数值,生成第一蜡烛图。
步骤二、根据每个特征的第二信息,生成至少一个第二蜡烛图。
第二蜡烛图用于表示事务的正常执行过程中同一特征名的特征的分布情况。具体地,第二蜡烛图中最低点表示在事务的正常执行过程中出现的同一特征名的多个特征中,位于第二分位数的特征值。蜡烛图的收盘点表示在事务的正常执行过程中出现的同一特征名的多个特征中,位于第二分位数的特征值。蜡烛图的开盘点表示在事务的正常执行过程中出现的同一特征名的多个特征中,位于第三分位数的特征值。蜡烛图的最高点在事务的正常执行过程中出现的同一特征名的多个特征中,位于第四分位数的特征值。蜡烛图的实体的竖线表示在事务的正常执行过程中出现的同一特征名的多个特征中,位于第五分位数的特征值。
举例来说,假设特征名为时间,假设第一分位数为5%,第二分位数为25%,第三分位数为75%,第四分位数为95%。该第五分位数是50%,参见图20,图20为第二蜡烛图的示意图,从图20可以看出,事务的正常执行过程中出现的所有时间中,排在第25%的时间为2点、排在第50%的时间为7点,排在第75%的时间为13点。
第二蜡烛图的生成过程与第一蜡烛图的生成过程同理,在此不做赘述。
步骤三、计算每个特征所属的特征名的第一蜡烛图与每个特征所属的特征名的第二蜡烛图之间的差异信息。
对于事务的任一特征名,可以根据该特征名的第一蜡烛图以该特征名的第二蜡烛图,计算第一蜡烛图与第二蜡烛图之间的差异信息,以第一蜡烛图与第二蜡烛图之间的差异信息,作为该特征名的每个特征的差异信息。
具体地,步骤三包括而不限于下述实现A至实现B:
实现A、计算该第一蜡烛图与该第二蜡烛图之间的中值移位评分(英文:MedianShift Score,缩写:MSS),作为该差异信息。
实现A可以包括下述(1.1)至(1.3):
(1.1)计算第一蜡烛图与该第二蜡烛图的中值移位。
中值移位(英文:Median Shift):用于指示两个蜡烛图的中值的偏差程度,可以为一个蜡烛图的中值与另一个蜡烛图的中值之间的差值。
在一种可能的实现中,可以获取第一蜡烛图的中值以及第二蜡烛图的中值,计算第一蜡烛图的中值与第二蜡烛图的中值之间的差值,该差值即为第一蜡烛图与该第二蜡烛图的中值移位。可选地,可以对第一蜡烛图的中值与第二蜡烛图的中值之间的差值取绝对值,以保证中值移位为正数。示例性地,参见图21,第一蜡烛图的中值为7小时,第二蜡烛图的中值为14小时,则第一蜡烛图与该第二蜡烛图的中值移位为|7-14|=7小时,其中||为取绝对值的符号。
(1.2)计算第一蜡烛图与该第二蜡烛图的整体可见传播。
整体可见传播(英文:Overall visible spread):是指一个蜡烛图的起点与另一个蜡烛图的终点之间的差值。
在一种可能的实现中,可以获取第一蜡烛图的起点以及第二蜡烛图的终点,计算第一蜡烛图的起点与第二蜡烛图的终点之间的差值,该差值即为整体可见传播。可选地,可以对第一蜡烛图的中值与第二蜡烛图的中值之间的差值取绝对值,以保证整体可见传播为正数。示例性地,参见图21,第一蜡烛图的起点为2小时,第二蜡烛图的终点为19小时,则第一蜡烛图与该第二蜡烛图的整体可见传播为|2-19|=17小时,其中||为取绝对值的符号。
(1.3)根据该中值移位以及该整体可见传播,计算该中值移位评分。
在一种可能的实现中,可以计算中值移位与整体可见传播之间的比值,将该比值作为中值移位评分。示例性地,参见图21,第一蜡烛图与该第二蜡烛图的中值移位为7小时,第一蜡烛图与该第二蜡烛图的整体可见传播为17小时,第一蜡烛图与该第二蜡烛图的中值移位评分=7/17=0.41。
实现B、根据该第一蜡烛图与该第二蜡烛图之间的重合部分,计算该差异信息。
实现B可以包括下述(2.1)至(2.3):
(2.1)获取该第一蜡烛图与该第二蜡烛图的重合部分的长度。
重合部分是指第一蜡烛图与第二蜡烛图的重合起始点至重合结束点组成的部分,该重合起始点是指两个蜡烛图开始重合的位置,该重合结束点是指两个蜡烛图结束重合的位置。重合部分的长度为重合起始点与重合结束点的差值的绝对值。
示例性地,参见图22,第一蜡烛图与第二蜡烛图的重合起始点为9小时,第一蜡烛图与第二蜡烛图的重合结束点为13小时,则第一蜡烛图与该第二蜡烛图的重合部分为9小时至13小时组成的部分,重合部分的长度为13小时-9小时=4小时。
(2.2)获取该第一蜡烛图的起点与该第二蜡烛图的终点之间的整体可见传播。
实现二中的(2.2)与实现一中的(1.2)同理,在此不做赘述。
(2.3)根据该重合部分的长度以及该整体可见传播,计算该差异信息,该差异信息与该重合部分的长度正相关,该差异信息与该整体可见传播负相关。
在一种可能的实现中,可以计算整体可见传播与重合部分的长度之间的比值,将该比值作为中值移位评分。示例性地,参见图22,第一蜡烛图与该第二蜡烛图的重合部分的长度为4小时,第一蜡烛图与该第二蜡烛图的整体可见传播为17小时,第一蜡烛图与该第二蜡烛图的中值移位评分=4/17=0.235。
实现方式三、使用直方图来计算差异信息。
在一种可能的实现中,对于至少一个特征的每个特征,可以计算该特征对应的第一直方图与第二直方图之间的差异信息,作为该特征的差异信息。可选地,对于事务的任一特征名,可以确定该特征名的第一直方图以及该特征名的第二直方图,计算第一直方图以及第二直方图之间的差异信息,作为该特征名的每个特征的差异信息。举例来说,对于时间来说,可以计算图10所示的第一直方图以及图18所示的第二直方图之间的差异信息,作为时间段的差异信息。
关于第一直方图以及第二直方图的获取方式,在一种可能的实现中,可以在上述步骤701中,使用直方图来对特征进行次数统计,在停止统计时,即可得到第一直方图以及第二直方图。在另一种可能的实现中,也可以在上述步骤701中,使用直方图以外的任意方式来对特征进行次数统计,则在本步骤702中,可以根据步骤701的统计结果生成第一直方图以及第二直方图。例如,可以将CMS技术统计得到的每个特征的第一信息存入数组,使用从数组中创建直方图(英文:MakeHistHeaderForArray)函数,生成第一直方图;将CMS技术统计得到的每个特征的第二信息存入数组,使用MakeHistHeaderForArray函数,生成第二直方图。
关于第一直方图以及第二直方图之间的差异信息的获取方式,可选地,可以计算第一直方图与第二直方图之间的相似度,将与该相似度负相关的任一数据作为差异信息。其中,计算相似度的方式包括而不限于相关比较(英文:Correlation)算法、卡方比较(英文:Chi-Square)算法、十字交叉性(英文:Intersection)算法、巴氏距离(英文:Bhattacvharyya distance)算法等。在一种可能的实现中,可以使用跨平台计算机视觉库(英文:OpenCV)中的直方图比较(英文:compareHist)函数,计算第一直方图与第二直方图之间的相似度。其中,使用的compareHist函数包括而不限于CV-COMP-Correl函数、CV-COMP-ChiSqE函数、CV-COMP-Intersect函数等。另外,可选地,在计算第一直方图与第二直方图之间的相似度之前,可以对第一直方图以及第二直方图进行归一化。
实现方式四、使用曲线图来计算差异信息。
曲线图用于表示事务的执行过程中同一特征名的特征的出现次数的变化趋势。具体来说,曲线图的横轴可以表示同一特征名的每个特征。具体地,横轴的正方向可以表示特征的特征值从小到大,比如说,假设特征名为价格,则横轴的正方向可以表示价格从低到高,假设特征名为队列长度,则横轴的正方向可以表示队列长度从小到大,假设特征名为时间,则横轴的正方向可以表示时间从早到晚。曲线图的纵轴可以是出现次数。具体地,纵轴的正方向可以表示出现次数从小到大。
在一种可能的实现中,实现方式四可以通过下述步骤一至步骤三实现:
步骤一、根据该每个特征的该第一信息,生成至少一个第一曲线图。
该第一曲线图用于表示该事务的问题执行过程中同一特征名的特征的变化趋势。在一种可能的实现中,事务的每个特征名可以对应一个第一曲线图,该第一曲线图能够反映对应特征名的所有特征在问题执行过程中的出现次数。例如,可以为“价格为1元”、“价格为2元”、“价格为3元”等各种价格对应的特征,生成一个第一曲线图。
步骤二、根据该每个特征的该第二信息,生成至少一个第二曲线图。
该第二曲线图用于表示该事务的正常执行过程中同一特征名的特征的分布情况。在一种可能的实现中,事务的每个特征名可以对应一个第二曲线图,该第一曲线图能够反映对应特征名的所有特征在正常执行过程中的出现次数。
步骤三、计算该每个特征所属的特征名的第一曲线图与该每个特征所属的特征名的第二曲线图之间的差异信息。
关于第一曲线图以及第二曲线图之间的差异信息的获取方式,可选地,可以计算第一曲线图与第二曲线图之间的相似度,将于该相似度负相关的任一数据作为差异信息。其中,曲线图之间的相似度计算方法包括而不限于基于距离的相似度计算方法、基于相关系数的相似度计算方法、基于空间路径的相似度计算方法、基于误差平方曲线的相似度计算方法等。比如说,相似度可以是相对熵(英文:relative entropy,缩写:KL)散度、欧式距离、弗雷歇距离等。
在一种可能的实现中,可以计算第一曲线图与第二曲线图之间的KL散度(英文:Kullback–Leibler divergence,缩写:KLD),将KL散度作为差异信息。其中,该KL散度也称相对熵(英文:relative entropy)、信息散度(英文:information divergence)或信息增益(英文:information gain),
703、计算机设备根据事务的至少一个特征的差异信息,分析至少一个特征中是否存在事务的潜在原因特征。
潜在原因特征:用于指示事务的执行过程的结果的潜在原因。潜在原因特征与事务的执行过程的结果存在因果关系,潜在原因特征具有引起事务执行时出现问题或成功的概率。潜在原因特征可以称为事务的洞察(英文:insight)。可选地,潜在原因特征可以包括第一潜在原因特征以及第二潜在原因特征中的至少一项。
第一潜在原因特征:用于指示事务的问题执行过程的潜在原因。第一潜在原因特征与事务的问题执行过程存在因果关系,第一潜在原因特征具有引起事务执行时出现问题的概率。举例来说,假设事务为登录事务,第一潜在原因特征为“浏览器是aaa”,则可以称浏览器是aaa是导致登录事务出现问题的潜在原因。
第二潜在原因特征:用于指示事务的正常执行过程的潜在原因。第二潜在原因特征与事务的正常执行过程存在因果关系,第一潜在原因特征具有引起事务执行时成功的概率。
关于潜在原因特征的分析结果,如果至少一个特征中具有差异信息符合差异条件的特征,则可以将差异信息符合差异条件的特征作为潜在原因特征,从而分析出至少一个特征中存在事务的潜在原因特征。在一种可能的实现中,对于至少一个特征中的每个特征,可以判断该特征的差异信息是否符合差异条件,当该特征的差异信息符合差异条件时,则确定该特征为潜在原因特征,当该特征的差异信息不符合差异条件时,则确定该特征不是潜在原因特征。反之,如果至少一个特征中不具有差异信息符合差异条件的特征,则可以分析出至少一个特征中不存在事务的潜在原因特征。
差异条件用于指示特征的第一信息与特征的第二信息之间存在显著性差异。任一特征的差异信息如果符合差异条件,则该特征可以视为第一信息与第二信息存在显著性差异的特征,则该特征可以作为事务的潜在原因特征。当计算机设备得到至少一个特征的差异信息后,对于至少一个特征中的每个特征,计算机设备可以判断该特征的差异信息是否符合差异条件,当特征的差异信息是否符合差异条件时,则确定该特征为事务的潜在原因特征。
差异条件可以是任意一种能够校验两种信息存在显著性差异的条件,差异条件可以根据实验、经验、需求或配置操作确定。在一种可能的实现中,差异条件包括而不限于下述差异条件(1)至差异条件(5)中一项或多项的结合。
差异条件(1)差异信息大于差异信息阈值。
差异信息阈值可以根据实验、经验、需求或配置指令设置,本实施例对此不做限定。差异信息阈值可以在计算机设备上预先存储;差异信息阈值也可以在某一数据源中存储,计算机设备可以访问该数据源,读取该数据源存储的差异信息阈值。可选地,差异信息阈值可以为差异信息的类型匹配。
在一种可能的实现中,如果上述步骤702中,使用实现方式一的方式A,将计算出的似然比校验值作为差异信息,相应地,本差异条件提及的差异信息阈值可以指似然比校验值阈值。进一步地,如果上述步骤702中,将计算出的对数似然比校验值作为差异信息,相应地,差异信息阈值可以指对数似然比校验值阈值。示例性地,对数似然比校验值阈值可以为30。
在一种可能的实现中,如果上述步骤702中,使用实现方式一的方式C,从假设校验模型作为差异信息,相应地,本差异条件提及的差异信息阈值可以根据假设校验的显著性水平或置信区间确定。举例来说,该显著性水平可以是0.1、0.05、0.01等。例如,如果上述步骤702中,使用卡方值作为差异信息,相应地,本差异条件提及的差异信息阈值可以指卡方值临界值,可以以自由度以及显著性水平为索引,从卡方值临界值表中,获取自由度以及显著性水平对应的卡方值临界值。其中,该自由度可以等于(行数-1)*(列数-1),该行数是指向卡方校验模型输入的频数列联表的行数,该列数是指向卡方校验模型输入的频数列联表的列数,在本实施例中,频数列联表可以为2行2列,则自由度可以等于(2-1)*(2-1)=1。
在一种可能的实现中,如果上述步骤702中使用实现方式二,根据蜡烛图来计算差异信息,相应地,本差异条件提及的差异信息阈值可以根据蜡烛图的错开程度确定。例如,如果使用实现方式二的方式A,使用不同蜡烛图之间的中值移位评分来作为差异信息,相应地,本差异条件提及的差异信息阈值可以指中值移位评分阈值。示例性地,中值移位评分阈值可以为0.33。
在一种可能的实现中,如果上述步骤702中使用实现方式三,根据直方图来计算差异信息,相应地,本差异条件提及的差异信息阈值可以根据直方图的相似度确定。例如,如果使用实现方式二的方式A,将与不同直方图之间的相关度负相关的任一数值作为差异信息,相应地,本差异条件提及的差异信息阈值可以是与相关度阈值负相关的任一数值。例如,如果使用实现方式二的方式A,将不同直方图之间的巴氏距离作为差异信息,相应地,本差异条件提及的差异信息阈值可以是巴氏距离阈值。
在一种可能的实现中,如果上述步骤702中使用实现方式四,根据曲线图来计算差异信息,相应地,本差异条件提及的差异信息阈值可以根据直方图的相似度确定。例如,如果使用实现方式二的方式A,将与不同直方图之间的相关度负相关的任一数值作为差异信息,相应地,本差异条件提及的差异信息阈值可以是与相关度阈值负相关的任一数值。例如,如果使用实现方式二的方式A,将不同直方图之间的巴氏距离作为差异信息,相应地,本差异条件提及的差异信息阈值可以是巴氏距离阈值。
对于任一个特征来说,可以判断特征的差异信息是否大于差异信息阈值,当特征的差异信息大于差异信息阈值时,则该特征可以视为符合差异条件(1)的特征。
差异条件(2)差异信息在事务的至少一个特征的差异信息中排在前预设位数。
该预设位数可以是任意正整数。该预设位数可以根据实验、经验、需求或配置指令设置,本实施例对此不做限定。对于任一个特征来说,当特征的差异信息在至少一个特征的差异信息排在前预设位数时,则该特征可以视为符合差异条件(2)的特征。可选地,可以对事务的至少一个特征的差异信息按照从大到小的顺序进行排序,从排序结果中选择排在前预设位数的特征,作为符合差异条件(2)的特征。
假设预设位数为N,则差异信息排在前N位的特征符合差异条件(2)。在一个示例性场景中,假设特征名为浏览器,差异信息为中值移位评分,事务的浏览器的特征共计有5个,“浏览器是浏览器1”的中值移位评分是0.5,“浏览器是浏览器2”的中值移位评分是0.4,“浏览器是浏览器3”的中值移位评分是0.3,“浏览器是浏览器4”的中值移位评分是0.2,“浏览器是浏览器5”的中值移位评分是0.1。如果预设位数为3,则“浏览器是浏览器1”、“浏览器是浏览器2”、“浏览器是浏览器3”符合差异条件(2)。
可选地,可以对事务的至少一个特征按照特征名分组,同一组中的特征属于同一特征名,不同组中的特征所属的特征名不同。相应地,差异条件(2)可以为:差异信息在同一组的至少一个特征的差异信息中排在前预设位数。
差异条件(3)差异信息与至少一个其他特征的差异信息之间的偏差大于偏差阈值。
偏差阈值可以根据实验、经验、需求或配置指令设置,本实施例对此不做限定。偏差阈值可以在计算机设备上预先存储;偏差阈值也可以在某一数据源中存储,计算机设备可以访问该数据源,读取该数据源存储的偏差阈值。可选地,偏差阈值可以为差异信息的类型匹配。
可选地,对于任一个特征来说,可以计算特征的差异信息与每个其他特征的差异信息之间的偏差,得到至少一个偏差;可以计算至少一个偏差的平均值;判断平均值是否大于偏差阈值;当平均值大于偏差阈值时,则该特征可以视为符合差异条件(3)的特征。示例性地,假设事务的某一对象属性对应于N个特征,对于N个特征中的每个特征,可以计算该特征与(N-1)个其他特征之间的偏差,得到(N-1)个偏差;计算(N-1)个偏差的平均值,作为该特征的差异信息与其他特征的差异信息之间的偏差。
可选地,可以对事务的至少一个特征按照特征名分组,同一组中的特征属于同一特征名,不同组中的特征所属的特征名不同。相应地,差异条件(3)可以为:差异信息与同一组的至少一个其他特征的差异信息之间的偏差大于偏差阈值。
差异条件(4)差异信息是事务的至少一个特征的差异信息中最大的差异信息。
对于任一个特征来说,当特征的差异信息是至少一个特征的差异信息中最大的差异信息时,则该特征可以视为符合差异条件(4)的特征。可选地,可以从事务的至少一个特征中,选择最大的差异信息,以得到符合差异条件(4)的特征。
可选地,可以对事务的至少一个特征按照特征名分组,同一组中的特征属于同一特征名,不同组中的特征所属的特征名不同。相应地,差异条件(4)可以为:差异信息是同一组的所有特征中最大的差异信息。
差异条件(5)差异信息在事务的至少一个特征的差异信息中处于目标范围。
目标范围的一个端点是至少一次执行过程的差异信息中最大的差异信息,目标范围的另一个端点是至少一次执行过程的差异信息按照从大到小的顺序排序后的目标百分位数。目标百分位数的位置可以根据配置指令、经验、实验或需求配置,本实施例对此不做限定。例如,假设将目标百分位数的位置设置为1%,则目标范围为最大的差异信息至前1%的差异信息。
可选地,可以对事务的至少一个特征按照特征名分组,同一组中的特征属于同一特征名,不同组中的特征所属的特征名不同。相应地,差异条件(5)可以为:差异信息在同一组的所有特征中处于目标范围。
在一个示例性场景中,假设登录事务在某分钟内执行了1000次,目标百分位数的位置为1%,则目标百分位数为按照从大到小的顺序对1000个差异信息进行排序后的第10个差异信息,相应地,若事务的某次执行过程的差异信息处于第1个差异信息至第10个差异信息,则此次事务执行过程差异符合条件(5)。
可选地,上述差异条件(1)至差异条件(5)可以择一使用,也可以结合使用。
当上述差异条件(1)至差异条件(5)择一使用时,当特征符合所使用的差异条件时,可以将特征作为潜在原因特征。例如,假设使用上述差异条件(1),差异信息为中值移位评分,则当特征的中值移位评分大于中值移位评分阈值时,可以以将特征作为潜在原因特征。
当上述差异条件(1)至差异条件(5)结合使用时,不同差异条件可以以或的方式结合,也可以以且的方式结合。以差异条件(1)至差异条件(5)以或的方式结合为例,当任一特征符合差异条件(1)至差异条件(5)中的任意一项时,可以将该特征作为潜在原因特征;以差异条件(1)至差异条件(5)以且的方式结合为例,当任一特征同时符合差异条件(1)至差异条件(5)中两项或两项以上时,可以将该特征作为潜在原因特征。举例来说,假设差异条件(1)以及差异条件(2)以且的方式结合,当特征的差异信息大于差异信息阈值,且差异信息在事务的至少一个特征的差异信息中排在前预设位数时,可以将特征作为潜在原因特征。
在一个示例性应用场景中,假设要分析访问时间是否会对事务执行的快慢产生影响,可以将慢执行过程定义为问题执行过程,将不慢执行过程定义为正常执行过程,将访问时间作为特征的特征名;针对问题执行过程中访问时间的次数分布,生成了图19所示的蜡烛图;针对正常执行过程中访问时间的次数分布,生成了图20所示的蜡烛图;计算图19所示的蜡烛图以及图20所示的蜡烛图之间的中值移位评分,得到0.41,0.41大于阈值,因此可以确定访问时间是潜在原因特征,可以判定:“访问时间对事务执行的快慢是有影响的”。
而图19所示的蜡烛图中,蜡烛图的实体偏向于下影线一侧,可以看出问题执行过程的访问时间普遍分布在下午;图20所示的蜡烛图中,蜡烛图的实体偏向于上影线一侧,可以看出正常执行过程的访问时间普遍分布在上午,可以直观的认知到,访问时间与事务执行的快慢存在因果关系,可见通过计算机设备计算的潜在原因特征和直观的认知吻合,验证了计算机设备得到的潜在原因特征的正确性。
在另一个示例性应用场景中,假设要分析浏览器“aaa”是否会对事务执行的失败产生影响,可以将失败执行过程定义为问题执行过程,将成功执行过程定义为正常执行过程,将浏览器作为特征的特征名;针对问题执行过程中每种浏览器的出现次数,生成了图9所示的列表;针对正常执行过程中每种浏览器的出现次数,生成了图17所示的列表;根据图9所示的列表以及图17所示的列表,计算出对数似然比校验值为85.1,而85.1大于对数似然比校验值阈值30,因此可以确定“浏览器是aaa”是潜在原因特征,可以判定:“浏览器是aaa对事务执行的失败是有影响的”。而图9所示的列表中,“浏览器是aaa”在问题执行过程中出现了132次,而图17所示的列表中,“浏览器是aaa”在正常执行过程中只出现了10次,可以直观的认知到,“浏览器是aaa”与事务执行的失败存在因果关系,可见通过计算机设备计算的潜在原因特征和直观的认知吻合,验证了计算机设备得到的潜在原因特征的正确性。
可选地,可以在事务的不同执行环境中,实现不同的分析功能。
具体地,在事务的第一执行环境中,当任一特征的差异信息符合差异条件时,可以将该特征作为第一潜在原因特征。在事务的第二执行环境中,当任一特征的差异信息符合差异条件时,可以将该特征作为第二潜在原因特征。
第一执行环境是指同一时间段中,事务的正常执行过程多于事务的问题执行过程的执行环境。第一执行环境可以理解为问题较少的执行环境。关于第一执行环境的确定方式,在一种可能的实现方式中,可以统计至少一个特征中第一类特征的数量,如果第一类特征的数量超过目标数量,则确定当前处于第一执行环境。该第一类特征是指第一信息小于第二信息的特征,对于任一特征,可以判断该特征的第一信息是否小于第二信息,当该特征的第一信息小于第二信息时,将该特征作为第一类特征。该目标数量可以为预设阈值,也可以为至少一个特征的总数量与预设比例之间的乘积。
第二执行环境是指同一时间段中,事务的问题执行过程多于正常执行过程的执行环境。第二执行环境是指问题严重的执行环境。关于第一执行环境的确定方式,在一种可能的实现方式中,可以统计至少一个特征中第二类特征的数量,如果第二类特征的数量超过目标数量,则确定当前处于第一执行环境。该第二类特征是指第二信息小于第一信息的特征,对于任一特征,可以判断该特征的第二信息是否小于第一信息,当该特征的第二信息小于第一信息时,将该特征作为第二类特征。
可选地,确定潜在原因特征以后,可以实现下述附加功能一至附加功能四中的任一项或多项的组合:
附加功能一、可选地,如果确定出的多个潜在原因特征,可以对多个潜在原因特征进行去重。在一种可能的实现中,去重的功能可以通过下述步骤一至步骤二实现:
步骤一、如果事务具有多个潜在原因特征,则确定多个潜在原因特征的包含关系。
可选地,多个潜在原因特征可以包括:服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征中的至少两项。具体地,服务特征可以包含服务调用服务特征、函数特征、函数调用函数特征和参数特征,服务调用服务特征包含函数特征、函数调用函数特征和参数特征,函数特征包含函数调用函数特征和参数特征,函数调用函数特征包含参数特征。
在一种可能的实现中,可以获取多个潜在原因特征的级别,根据多个潜在原因特征的级别,确定多个潜在原因特征的包含关系。其中,潜在原因特征的级别用于指示潜在原因特征的包含关系,任一级别的潜在原因特征包含该级别之后的每个潜在原因特征。示例性地,参见下表11,在表11中,级别为1的服务特征包含级别为2的服务调用服务特征、级别为3的函数特征、级别为4的函数调用函数特征和级别为5的参数特征;级别为3的函数特征包含级别为4的函数调用函数特征和级别为5的参数特征。
表11
特征 | 实例 | 级别 |
服务特征 | 服务为服务a | 1 |
服务调用服务特征 | 服务c调用了服务d | 2 |
函数特征 | 函数为函数d | 3 |
函数调用函数特征 | 函数c调用了函数d | 4 |
参数特征 | 浏览器是浏览器aaa | 5 |
步骤二、根据包含关系,选择上位的潜在原因特征。
对于潜在原因特征A和潜在原因特征B来说,假设潜在原因特征A包含潜在原因特征B,则称潜在原因特征A和潜在原因特征B存在上下位关系,潜在原因特征A是上位的潜在原因特征,潜在原因特征B是下位的潜在原因特征。例如,假设得到了“服务c调用了服务d”、“函数为函数d”以及“函数c调用了函数d”,可以选择“服务c调用了服务d”。又如,假设得到了“函数c调用了函数d”以及“浏览器是浏览器aaa”,可以选择“函数c调用了函数d”。
结合上述举例,多个潜在原因特征具有的上下位关系可以依次如下:服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征。具体地,服务特征是服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征中最上位的潜在原因特征,其次是服务调用服务特征,而参数特征是最下位的潜在原因特征。
在一种可能的实现中,步骤二可以包括:根据多个潜在原因特征的级别,选择多个潜在原因特征中级别最前的潜在原因特征。例如,结合上表11,可以遍历多个潜在原因特征,当发现级别为1的潜在原因特征时,可以选择级别为1的潜在原因特征,停止遍历。当未发现级别为1的潜在原因特征时,可以选择级别为2的潜在原因特征。
在一个示例性应用场景中,假设服务A的函数1调用服务B的函数2,此时运行服务B的虚拟机X由于资源占用率过高,不响应了。那么,函数1对函数2的所有调用过程,都会是失败执行过程,则这些执行过程最终会被标记为问题执行过程。假设没有及时处理虚拟机X不响应的情况,导致虚拟机X持续不响应,那么,在一段时间中,虚拟机X相关的事务的所有的特征都是出现在问题执行过程要比正常执行过程多,那么会确定出很多潜在原因特征,例如:“服务是服务B”、“服务A调用了服务B”、“服务C调用了服务B”、“函数2”、“函数1调用了函数2”、“参数1是xx”、“参数1是yy”等,如此多的潜在原因特征会造成干扰,产生告警风暴,淹没问题的根因。使用洞察去重,可以选择“服务是服务B”,将“服务是服务B”识别为根因,而其他特征可以被屏蔽。
附加功能二、对潜在原因特征进行持久化存储。
例如,可以将潜在原因特征存入数据库。举例来说,该数据库可以是ElasticSearch。
附加功能三、显示潜在原因特征。其中,可以由计算机设备本端显示潜在原因特征,也可以由计算机设备将潜在原因特征发送至其他设备,由其他设备显示潜在原因特征。举例来说,当终端接收到问题原因查看指令时,可以向计算机设备发送问题原因请求,计算机设备可以将潜在原因特征发送至终端,终端可以显示潜在原因特征。
附加功能四、对潜在原因特征、事务的标识、执行过程的时间戳、问题执行过程的类型中的至少一项进行封装,得到事务分析信息。例如,假设分析注册事务时,将慢事务定义为问题执行过程,确定的潜在原因特征是“操作系统为linux”,可以对“操作系统为linux”、“注册”、“10:00”、“慢”这些信息进行封装,得到事务分析信息为:“操作系统为linux是导致10:00时注册速度慢的潜在原因”。又如,假设分析登录事务时,将失败事务定义为问题执行过程,确定的潜在原因特征是“浏览器是浏览器aaa”,可以对“浏览器是浏览器aaa”、“登录”、“18:00”、“失败”这些信息进行封装,得到事务分析信息为:“浏览器是浏览器aaa是导致18:00时登录失败的潜在原因”。可选地,可以将得到的事务分析信息存入数据库。可选地,可以将得到的事务分析信息发送至终端。可选地,可以显示事务分析信息。
需要说明的一点是,本实施例仅是以一个事务的分析流程为例进行描述。可选地,可以对每个事务分别执行上述流程,从而确定每个事务的潜在原因特征。例如,可以在步骤701中获取登录事务的特征,在步骤702中计算登录事务的每个特征的第一信息与第二信息之间的差异信息,在步骤703中确定登录事务的潜在原因特征。又如,可以在步骤701中获取支付事务的特征,在步骤702中计算支付事务的每个特征的第一信息与第二信息之间的差异信息,在步骤703中确定支付事务的潜在原因特征。以此类推,可选地,可以对应用的每个事务执行上述流程,从而分析出应用的每个事务的潜在原因特征。
在一种可能的实现中,可以获取应用的多个特征,对该多个特征按照事务进行分组,得到多个组,每个组中的特征属于同一事务,不同组中的特征所属的事务不同。如此,每个组可以视为一个事务对应的隔离环境,后续对每一个组中的特征分别执行上述步骤701至步骤703,从而将特征按照事务进行隔离。在一个示例性场景中,某游戏应用包括登录事务、注册事务、支付事务等10个事务,可以获取该游戏应用的所有特征,对该游戏应用的所有特征按照事务分组,得到10个组,第1个组包括登录事务的特征,第2个组包括注册事务的特征,依次类推,则后续通过对第1个组的特征执行上述步骤701至步骤703,可以确定登录事务的潜在原因特征,对通过第2个组的特征执行上述步骤701至步骤703,可以确定注册事务的潜在原因特征,依次类推。
关于对多个事务的特征按照事务进行分组,在一种可能的实现中,可以根据调用链的第一个节点的名称,对多个事务的调用链进行分组。对于任两个调用链,可以判断这两个调用链的第一个节点的名称是否相同,若这两个调用链的第一个节点的名称相同,则将两个调用链划分至一个组,则每个组中调用链的第一个节点的名称相同,因此每个组中的调用链对应于同一事务。
进一步地,可选地,可以对多个应用中每个应用的每个事务分别执行上述步骤701至步骤703,从而分析出多个应用的事务的潜在原因特征。在一个示例性场景中,可以为租户部署在云计算平台上的每个应用的每个事务分别执行上述步骤701至步骤703,从而分析出多个应用的事务的潜在原因特征。
可选地,在上述步骤701中,可以获取事务的全量的特征的第一信息以及第二信息,在上述步骤702中,计算全量的特征的第一信息以及第二信息之间的差异信息,在步骤703中从全量的特征中确定潜在原因特征。如此,由于事务的一次执行可以由成百上千次函数级调用,而每次函数调用都有大量的输入参数,这些函数的这些参数都有可能是和问题执行相关联的因素,通过从事务的全量的特征中确定潜在原因特征,可以避免人为筛选特征的工作量,同时可以避免漏检测,提供更多的信息量,能够实现对事务的全规模分析。
需要说明的另一点是,令计算机设备执行以实现图7所示的事务分析方法的手段可以通过软件实现,也可以通过硬件实现,本实施例对此不做限定。
通过软件实现的具体方式包括而不限于下述(1.1)至(1.3)。
(1.1)可选地,可以将上述事务分析的处理逻辑封装为应用程序,当任意具有处理能力以及存储能力的实体设备运行应用程序时,可以执行上述701至703的步骤。其中,该实体设备可以位于云环境、边缘环境或终端环境中。该实体设备可以是硬件(英文:hardware)设备,也可以是虚拟化(英文:virtualized)设备。硬件设备可以包括计算硬件、存储硬件和网络硬件。举例来说,计算硬件可以是服务器。存储硬件可以是磁盘。网络硬件可以是网卡、交换机、路由器等。虚拟化设备可以包括虚拟化计算设备、虚拟化存储设备和虚拟化网络设备。该虚拟化计算设备可以是虚拟机(英文:Virtual Machine,缩写:VM),也可以是容器,例如为Docker容器。该虚拟化存储设备可以是对象存储服务(英文:Object-Based StorageSystem,缩写:OBS),该虚拟化网络设备可以是虚拟网关、虚拟路由器等。
(1.2)可选地,可以使用容器化技术,根据上述事务分析方法的处理逻辑以及运行该处理逻辑所需的依赖信息,构建镜像,使得任一具有处理资源以及存储资源的硬件设备在运行该镜像时,可以启动容器,在容器中执行上述事务分析方法。作为一个示例,可以根据上述事务分析方法的处理逻辑以及运行该处理逻辑所需的依赖信息,构建Docker镜像,使得任一具有处理能力以及存储能力的实体设备在运行该镜像时,可以启动Docker容器,在Docker容器中执行上述事务分析方法。
(1.3)可选地,可以使用系统级的虚拟化技术,根据上述事务分析方法的处理逻辑、运行该处理逻辑所需的依赖信息、运行该处理逻辑所需的操作系统以及其他信息,构建虚拟机的镜像,当任意具有处理能力以及存储能力的实体设备在运行虚拟机的镜像时,可以启动虚拟机,在虚拟机中执行以实现上述事务分析方法。
通过硬件实现的具体方式包括而不限于下述(2.1)至(2.2)。
(2.1)可选地,可以将上述事务分析方法的处理逻辑写入可编程逻辑器件(programmable logic device,简称:PLD),当任意实体设备在安装并运行该PLD时,可以执行以实现上述XXX的方法。举例来说,该PLD包括而不限于复杂可编程逻辑器件(ComplexProgrammable Logic Device,缩写:CPLD)、现场可编程门阵列(Field ProgrammableGateArray,简称:FPGA)、可擦除的可编程逻辑器件(Erase Programmable LogicDevice,缩写:EPLD)等。
(2.2)可选地,可以将上述事务分析方法的处理逻辑嵌入至固定逻辑器件,当任意实体设备在安装并运行该固定逻辑器件时,可以执行以实现上述事务分析的方法。举例来说,该固定逻辑器件包括而不限于嵌入式系统等。
需要说明的另一点是,图7所示的事务分析方法仅是以由一个计算机设备执行为例进行描述,可选地,图7所示的事务分析方法也可以由计算机设备集群执行,该计算机设备集群包括多个计算机设备,不同计算机设备可以执行不同的步骤,从而分担执行事务分析方法的负载。其中,不同计算机设备可以部署在不同或相同的地点,可以部署在不同或相同的数据中心,可以部署在不同或相同的机房,可以部署在不同或相同的机架,可以部署在不同或相同的物理机,本实施例对执行该事务分析方法的计算机设备集群的形态不做限定。
本实施例提供的方法,提供了一种智能、自动化、高效的事务分析方法,通过特征在问题执行过程中出现的次数以及正常执行过程中出现的特征之间的差异,可以自动发现事务的潜在原因特征,无需人工进行大量的分析和测试工作,极大地缩短了分析事务耗费的时间,提高了事务分析的效率。通过潜在原因特征,能够确定与事务的问题执行过程存在因果关系的特征,从而定位到导致事务出现问题的特征,因此为性能诊断和错误定位提供了更多有价值的信息量,有助于缩短事务的问题闭环的周期,快速解决事务存在的问题。
图23是本申请实施例提供的一种事务分析方法的流程图,该方法的执行主体为计算机设备,如图23所示,包括以下步骤:
2301、计算机设备获取事务的至少一个执行记录。
可以获取事务的历史执行过程的执行记录,也可以获取事务的当前执行过程的执行记录。
历史执行过程的执行记录可以是任一历史时间段内的执行记录。例如,历史时间段可以是以当前时间点为结束点、时长为预设时长的时间段。举例来说,假设当前时间点为2018年12月15日23:01,则历史时间段可以为2018年12月15日23:00至2018年12月15日23:01。其中,该预设时长可以根据次数统计的需求设置,例如为1分钟,也可以根据用户的需求确定,本实施例对此不做限定。又如,历史时间段可以是事务分析指令中携带的时间段。其中,该事务分析指令用于指示计算机设备分析事务,可以由终端发送至计算机设备,可以由用户的输入操作触发。在一个示例性场景中,假设用户想要知道2018年12月12日12:00-13:00支付事务速度过慢的原因,可以输入12:00-13:00,则终端会生成携带有12:00-13:00的事务分析指令,发送至计算机设备。
执行记录用于记录事务的执行过程。例如,执行记录可以包括执行事务的节点的名称、执行事务的时间戳、事务的标识、状态码、执行事务的时长中的至少一项。其中,该执行事务的节点可以是应用、服务、微服务、进程、模块、函数等。可选地,事务的一次执行过程可以通过一个或多个节点执行一次或多次动作实现,相应地,执行记录可以记录一次动作。
执行记录包括而不限于以下(1)至(6)中任一种或多种的组合:
(1)执行记录可以是调用链的span。该span用于记录一次执行过程的一次调用动作,span的具体数据结构可以上表1所示。其中,一次执行过程对应一个调用链,一个调用链包括一个或多个span。
(2)执行记录可以是监控数据。该监控数据可以是时序数据,每个监控数据包括时间戳,时间戳可以用于记录生成监控数据的时间点。
(3)执行记录可以是接口(英文:XDR)数据。
XDR数据是指基于控制面的全量信令数据以及用户面的全量业务数据进行处理后,生成的供应用系统使用的信令以及业务的详细记录。
(4)执行记录可以为通信技术领域中接入网网元或核心网网元统计的任一数据,例如可以是话统数据、工参数据等。该话统数据是指记录通话质量的任一数据。该工参数据是指网元在运行过程中记录工作参数的任一数据。以事务为下载视频为例,执行记录可以为话单。
(5)执行记录可以为网络层数据或传输层数据。
例如,执行记录可以为时间段内对网络的测量报告,例如为终端反馈给接入网设备的无线网络信息,比如可以用于上报主服务小区的电平强度,信道质量,RB等信息。例如,执行记录可以为呼叫记录系统(Call History Record,缩写:CHR)、测量报告(MeasurementResult,缩写:MR)、接入网设备的配置文件等,该接入网设备可以包括演进型Node B(Evolved Node B,缩写:eNodeB)、无线访问接入点(Wireless Access Point,缩写:AP)等。
(6)执行记录可以为应用层数据。
例如,执行记录可以包括开放式系统互联参考模型(英文:Open SystemInterconnection;简称:OSI)中会话层、表示层、应用层对事务的影响因素,如交互式网络电视(IPTV)服务中的内容分辨率、编解码类型等。
关于执行记录的获取方式,在一种可能的实现中,可以从数据库中读取该至少一个执行记录。在另一种可能的实现中,每个节点可以在执行事务的过程中,生成执行记录,将执行记录发送至计算机设备,计算机设备可以接收每个节点发送的执行记录。
2302、计算机设备根据至少一个执行记录,从事务的至少一次执行过程中,确定问题执行过程。
可选地,计算机设备可以根据至少一个执行记录中的事务返回记录,确定问题执行过程。事务返回记录用于记录节点在执行事务后的返回结果。可选地,事务返回记录可以是事务的一次执行过程中最晚生成的执行记录。举例来说,事务返回记录可以是span0。关于span0的获取方式,可以从至少一个span中,选择父节点标识为空或父节点标识为预设标识的span,作为span0。其中,该预设标识可以为0。
可选地,问题执行过程的确定过程可以包括下述方式一至方式三中任一项或多项的组合:
方式一、根据事务的至少一次执行过程的执行时长,确定执行过程为慢执行过程。
可以根据事务的执行记录,获取事务的执行时长,判断执行时长是否符合第一预设条件,当执行时长符合第一预设条件,则确定执行过程为慢执行过程。可选地,关于执行时长的获取方式,对于任一次执行过程来说,可以从此次执行过程的事务返回记录中,获取执行时长。以执行记录为span为例,对于任一调用链来说,可以从span0中,获取cs以及cr,计算cs与cr之间的时间差,将该时间差作为执行时长。又如,可以从span0中获取duration,将duration作为执行时长。
可选地,方式一包括而不限于下述方式(1.1)至方式(1.4)中的任一项或多项的组合。
方式(1.1)判断执行时长是否大于执行时长阈值;当执行时长大于执行时长阈值时,确定执行过程为慢执行过程。
方式(1.2)当执行时长在事务的至少一次执行过程的执行时长中处于目标范围时,确定执行过程为慢执行过程。
在一种可能的实现中,可以根据至少一次执行过程的数量以及目标百分位数的位置,确定目标范围,可以对事务的至少一次执行过程按照执行时长进行排序,选择处于目标范围的执行过程,作为慢执行过程。在一个示例性场景中,假设登录事务在某分钟内执行了1000次,目标百分位数的位置为1%,则可以选取第1个执行时长至第10个执行时长对应的执行过程,作为慢执行过程。
方式(1.3)计算执行时长与事务的执行时长基线之间的偏差,当该偏差大于偏差阈值时,确定执行过程为慢执行过程。
在一种可能的实现中,可以确定执行过程的时间点,获取执行时长基线在该时间点的执行时长,计算执行时长基线在该时间点的执行时长以及执行过程的执行时长之间的时间差,将该时间差作为执行时长与事务的执行时长基线之间的偏差,判断该偏差是否大于偏差阈值时,当该偏差大于偏差阈值时,确定执行过程为慢执行过程。
方式(1.4)对至少一次执行过程按照执行时长从大到小的顺序进行排序;选取执行时长排在前预设位数的执行过程,作为慢执行过程。
需要说明的是,方式(1.1)至方式(1.4)可以择一使用,也可以结合使用。其中,方式(1.1)至方式(1.4)可以以或的方式结合,也可以以且的方式结合。
方式二、根据事务的至少一次执行过程的状态码,确定执行过程为失败执行过程。
可以根据事务的执行记录,获取状态码,判断状态码是否符合第二预设条件,当状态码符合第二预设条件,则确定执行过程为失败执行过程。可选地,对于任一次执行过程来说,可以从此次执行过程的事务返回记录中,获取状态码。以执行记录为span为例,对于任一调用链来说,可以从调用链的span0中获取Status Code,该Status Code即为状态码。
在一种可能的实现中,判断状态码是否符合第二预设条件可以包括:判断状态码是否属于该至少一个目标状态码。相应地,当状态码属于该至少一个目标状态码时,则确定执行过程为失败执行过程。
方式三、根据事务的至少一次执行过程的网络攻击发生标识,确定执行过程为失败执行过程。
可以判断事务的执行记录中是否包括网络攻击发生标识,当执行记录中包括网络攻击发生标识,则确定执行过程为失败执行过程。
需要说明的是,步骤2302提及的方式一、方式二以及方式三可以择一执行,也可以结合执行。其中,方式一、方式二以及方式三可以以或的方式结合,也可以以且的方式结合。
2303、计算机设备为问题执行过程中出现的每个特征添加第一标签。
标签(英文:label)用于标识特征所属的执行过程的类型。该执行过程的类型包括问题执行过程以及正常执行过程。标签可以是字符串、数字、字母或其他任意数据类型。具体地,标签包括第一标签以及第二标签,第一标签与第二标签不同,第一标签用于标识特征在问题执行过程中出现,第二标签用于标识特征在正常执行过程中出现。例如,第一标签可以为“bad”,第二标签可以为“good”;又如,第一标签可以为“0”,第二标签可以为“1”;又如,第一标签可以为“N”,第二标签可以为“Y”。
通过为每个特征添加标签,可以区分问题执行过程中出现的特征以及正常执行过程中出现的特征。具体地,对于任一个特征,当识别该特征携带有第一标签时,即可确定该特征是问题执行过程中出现的特征,当识别该特征携带有第二标签时,即可确定该特征是问题执行过程中出现的特征。
关于第一标签的添加过程,在一种可能的实现中,可以确定问题执行过程的每个执行记录,提取每个执行记录的每个特征,为提取出的每个特征添加第一标签。例如,可以确定问题执行过程的每个调用链,提取调用链的每个span的每个特征,为每个span的每个特征添加第一标签。其中,可以提取问题执行过程的每个执行记录中的每个键值对,将每个键值对作为问题执行过程中出现的每个特征。
2304、计算机设备对事务的添加了第一标签的特征的出现次数进行统计,得到每个特征的第一信息。
在一种可能的实现中,可以将添加了第一标签的每个特征存入第一存储桶中,对第一存储桶中每个特征的数量进行统计,得到每个特征的第一信息。其中,该第一存储桶用于缓存事务的添加了第一标签的特征。该第一存储桶可以是逻辑上的任意存储结构,例如,第一存储桶可以是一个列表,又如可以是CMS的结构,再如可以是布隆过滤器。
可选地,可以每隔统计周期,对第一标签的特征的出现次数进行统计,得到每个特征的第一信息,根据该第一信息执行下述步骤2305至步骤2306,将得到的潜在原因特征作为该统计周期对应的潜在原因特征。如此,由于第一信息具有时效性,可以反映最近的一个统计周期的事务的执行过程的规律,可以保证得到的潜在原因特征的时效性。
可选地,可以实现计数聚合的功能。具体来讲,可以聚合多个统计周期的第一信息,通过聚合了的第一信息来确定潜在原因特征,如此,可以提高确定潜在原因特征所需的数据量,提高精确性。在一种可能的实现中,对第一信息计数聚合的功能可以包括下述步骤一至步骤三。
步骤一、当到达第一时间周期时,获取该第一信息。
在一种可能的实现中,在任一个第一时间周期中,当第一时间周期开始时,可以对第一存储桶中每个特征的数量开始进行统计,当第一时间周期结束时,可以对第一存储桶中每个特征的数量结束进行统计,将每个特征的统计结果作为每个特征的第一信息。其中,该第一时间周期可以根据实验、经验、需求或配置指令确定,举例来说,该第一时间周期的跨度可以为1分钟。
步骤二、对获取到的第一时间周期的第一信息进行缓存。
步骤三、当到达第二时间周期时,对已缓存的多个第一时间周期的第一信息进行聚合。
第二时间周期大于该第一时间周期。可选地,第二时间周期可以包括多个第一时间周期。可选地,第二时间周期的起始点可以与其包括的多个第一时间周期中最早的第一时间周期的起始点重叠,第二时间周期的结束点可以与其包括的多个第一时间周期中最晚的第一时间周期的结束点重叠。
以数学的方式表述,在一种可能的实现中,假设一个第二时间周期的跨度等于n个第一时间周期的跨度,在一个第二时间周期内,每当从第i个时间周期开始,到达第(i+1)个第一时间周期时,可以对第i个时间周期至第(i+1)个第一时间周期中,特征在问题执行过程中的出现次数进行统计,得到第i个第一时间周期的第一信息,对第i个第一时间周期的第一信息进行缓存。当到达第二时间周期时,会缓存n个第一信息,则可以对第n个第一信息进行聚合,将聚合结果作为一个第二时间周期的第一信息。
在一个可能的实施例中,假设第一时间周期的跨度为1分钟,第二时间周期的跨度为10分钟,参见图24,其示出了计数聚合的示意图。当启动计时后,到达第1分钟后,可以对第0分钟至第1分钟的特征在问题执行过程的出现次数进行计数,得到第1分钟的第一信息,缓存该第1分钟的第一信息;当到达第2分钟后,可以对第1分钟至第2分钟的特征在问题执行过程的出现次数进行计数,得到第2分钟的第一信息,缓存该第2分钟的第一信息;依次类推,当到达第10分钟时,可以对第1分钟的第一信息、第2分钟的第一信息、第3分钟的第一信息至第10分钟的第一信息进行聚合。
关于对第一信息进行聚合的方式,可选地,对第一信息进行聚合的方式包括而不限于下述聚合方式一至聚合方式二:
聚合方式一、对当前的第一时间周期的第一信息与上一个第二时间周期中目标第一时间周期以外的每个第一时间周期的第一信息相加,将和值作为聚合后的第一信息。
上一个第二时间周期中目标第一时间周期以外的每个第一时间周期,可以是上一个第二时间周期中第2个第一时间周期、上一个第二时间周期中第3个第一时间周期至上一个第二时间周期中最后一个第一时间周期。假设一个第二时间周期的跨度等于n个第一时间周期的跨度,则上一个第二时间周期中目标第一时间周期以外的每个第一时间周期为(n-1)个第一时间周期,那么通过对当前的第一时间周期的第一信息与上一个第二时间周期中目标第一时间周期以外的每个第一时间周期的第一信息相加,可以执行(n-1)次加法操作,得到聚合后的第一信息。其中n为正整数。
例如,假设当前所处的第一时间周期是第11分钟,那么上一个第二时间周期是第1分钟至第10分钟,目标第一时间周期是第1分钟,上一个第二时间周期中目标第一时间周期以外的每个第一时间周期分别是第2分钟、第3分钟、第4分钟至第10分钟。假设第11分钟内,特征的第一信息是11次,而第1分钟至第10分钟内特征的第一信息依次是:1、2、3、4、5、6、7、8、9和10,则可以对第11分钟的第一信息与第2分钟、第3分钟、第4分钟至第10分钟的第一信息相加,则聚合后的第一信息为11+2+3+4+5+6+7+8+9+10=65。
聚合方式二、采用环形计数(英文:shift ring)技术进行聚合。
具体地,可以缓存每个第二时间周期的聚合计数,通过前一个第二时间周期的聚合计数以及当前的第一时间周期的次数,计算后一个第二时间周期的聚合计数,该前一个第二时间周期以及后一个第二时间周期相隔一个第一时间周期。
举例来说,假设第二时间周期的跨度为10分钟,可以先后缓存第1分钟至第10分钟的聚合计数、第2分钟至第11分钟的聚合计数、第3分钟至第12分钟的聚合计数,依次类推。假设当前位于第11分钟,可以通过第1分钟至第10分钟的聚合计数以及第11分钟的计数,计算第2分钟至第11分钟的计数。
具体来讲,聚合方式二可以通过下述步骤一至步骤二实现:
步骤一、对当前的第一时间周期的第一信息与第一聚合计数相加,得到第一和值。
第一聚合计数为上一个第二时间周期中所有第一信息的总和。该上一个第二时间周期与当前的第二时间周期相隔一个第一时间周期。例如,假设第一时间周期的跨度为1分钟,第二时间周期的跨度为10分钟,如果当前所处的第一时间周期是第11分钟,则当前的第二时间周期是第11分钟至第20分钟,上一个第二时间周期是第1分钟到第10分钟。第一聚合计数为第1分钟到第10分钟的第一信息的总和。又如,假设当前所处的第一时间周期是第12分钟,则当前的第二时间周期是第12分钟至第21分钟,上一个第二时间周期是第2分钟到第11分钟。第一聚合计数为第2分钟到第11分钟的第一信息的总和。
步骤二、对第一和值与目标第一时间周期的第一信息相减,将差值作为聚合后的第一信息。
目标第一时间周期与当前的第一时间周期相隔一个第二时间周期,该目标第一时间周期可以是上一个第二时间周期中的第一个第一时间周期。例如,假设第一时间周期的跨度为1分钟,第二时间周期的跨度为10分钟,如果当前所处的第一时间周期是第11分钟,则当前所处的第二时间周期是第11分钟至第20分钟,上一个第二时间周期是第1分钟至第10分钟,目标第一时间周期是第1分钟。如果当前所处的第一时间周期是第12分钟,则当前所处的第二时间周期是第12分钟至第21分钟,上一个第二时间周期是第2分钟至第11分钟,目标第一时间周期是第2分钟。
举例来说,假设当前处于第11分钟,第11分钟的第一信息是11次,而第1分钟至第10分钟,某个特征在问题执行过程中的出现次数依次是:1、2、3、4、5、6、7、8、9至10,则第一聚合计数是1+2+3+4+5+6+7+8+9+10=55,第一和值=55+11=66,聚合后的第一信息=66-1=65。
可选地,当得到聚合后的第一信息后,可以将第一聚合计数更新为该聚合后的第一信息,例如,可以将55更新为65。那么,当到达下一个第一时间周期时,会将该聚合后的第一信息,作为下一个第一时间周期聚合计数时使用的第一聚合计数,通过上述步骤一至步骤二,得到下一个第一时间周期对应的聚合后的第一信息。
可选地,可以维护计数聚合器(英文:sketch aggregator),通过该计数聚合器,执行上述步骤一至步骤二。示例性地,参见图24,该计数聚合器可以视为环形计数器,该环形计数器包括多个计数单元,每个计数单元用于缓存一个第一时间周期的计数,该多个计数单元的数量等于一个第二时间周期中包含的第一时间周期的数量。例如,假设第二时间周期的跨度为10分钟,第一时间周期的跨度为1分钟,则计数聚合器可以包括10个计数单元,计数单元1缓存第1分钟的计数,计数单元2缓存第2分钟的计数,以此类推,使得计数聚合器可以缓存第1分钟至第10分钟的计数的总和;每当到达一个第一时间周期,该计数聚合器中的每个计数单元可以后移一位,之前存储第i个第一时间周期的计数单元进行后移后,会存储第(i+1)个第一时间周期的计数。例如,当到达第11分钟后,计数单元1缓存第2分钟的计数,计数单元2缓存第3分钟的计数,以此类推,使得计数聚合器可以缓存第2分钟至第11分钟的计数的总和。
聚合方式二达到的效果至少可以包括:一方面,每当到达任一第一时间周期时,均可以计算出最新的第二时间周期的聚合计数,保证后续发现潜在原因特征时,使用的数据具有高时效性。例如,每当到达1分钟时,均可以计算出前10分钟的聚合计数。另一方面,每当到达任一第一时间周期时,通过一次减法操作以及一次加法操作,即可得到聚合计数,提高了效率,优化了性能。例如,当接收到第11分钟的计数时,通过对第11分钟的计数与聚合计数相加,然后再减去第一分钟的计数,则通过两步操作,即可计算出第2分钟至第11分钟的聚合计数。
2305、计算机设备根据至少一个执行记录,从事务的至少一次执行过程中,确定正常执行过程。
可选地,计算机设备可以根据至少一个执行记录中的事务返回记录,确定正常执行过程。具体地,确定执行过程为正常执行过程的过程可以包括下述方式一至方式三中任一项或多项的组合:
方式一、根据事务返回记录中的执行时长,确定执行过程为不慢执行过程,不慢执行过程的执行时长不符合第一预设条件。
可以从事务返回记录中,获取执行时长,判断执行时长是否符合第一预设条件,当执行时长不符合第一预设条件,则确定执行过程为不慢执行过程。
可选地,方式一包括而不限于下述方式(1.1)至方式(1.4)中的任一项或多项的组合。
方式(1.1)判断执行时长是否大于执行时长阈值;当执行时长不大于执行时长阈值时,确定执行过程为不慢执行过程。
方式(1.2)当执行时长在事务的至少一次执行过程的执行时长中不处于目标范围时,确定执行过程为不慢执行过程。
方式(1.3)计算执行时长与事务的执行时长基线之间的偏差,当该偏差不大于偏差阈值时,确定执行过程为不慢执行过程。
方式(1.4)对至少一次执行过程按照执行时长从小到大的顺序进行排序;选取执行时长排在前预设位数的执行过程,作为不慢执行过程。
需要说明的是,方式(1.1)至方式(1.4)可以择一使用,也可以结合使用。其中,方式(1.1)至方式(1.4)可以以或的方式结合,也可以以且的方式结合。
方式二、根据事务返回记录中的状态码,确定执行过程为成功执行过程。
可以从事务返回记录中,获取状态码,判断状态码是否符合第二预设条件,当状态码不符合第二预设条件,则确定执行过程为成功执行过程。
在一种可能的实现中,判断状态码是否符合第二预设条件可以为:判断状态码是否属于该至少一个目标状态码。相应地,当状态码不属于该至少一个目标状态码时,则确定执行过程为成功执行过程。
方式三、根据事务的至少一次执行过程的网络攻击未发生标识,确定执行过程为成功执行过程。
可以判断事务的执行记录中是否包括网络攻击未发生标识,当执行记录中包括网络攻击未发生标识,则确定执行过程为成功执行过程。
需要说明的是,步骤2305提及的方式一、方式二以及方式三可以择一执行,也可以结合执行。其中,方式一、方式二以及方式三可以以或的方式结合,也可以以且的方式结合。
2306、计算机设备为正常执行过程中出现的每个特征添加第二标签。
关于第二标签的添加过程,在一种可能的实现中,可以确定正常执行过程的每个执行记录,提取每个执行记录的每个特征,为提取出的每个特征添加第二标签。例如,可以确定正常执行过程的每个调用链,提取调用链的每个span的每个特征,为每个span的每个特征添加第二标签。其中,可以提取正常执行过程的每个执行记录中的每个键值对,将每个键值对,作为正常执行过程中出现的每个特征。
可选地,可以为同一次执行过程中出现的每个特征添加相同的标签。具体来讲,在任一时间段内,事务可以被执行一次或多次。如果某次执行过程为问题执行过程,可以为此次执行过程中出现的每个特征均添加第一标签;如果某次执行过程为成功执行过程,可以为此次执行过程中出现的每个特征均添加第二标签。在一种可能的实现中,每当接收该事务的任一执行记录时,可以判断该执行记录是否为事务返回记录,当该执行记录为事务返回记录时,根据执行记录,为执行记录以及至少一个相关执行记录添加该第一标签或者该第二标签。其中,该至少一个相关执行记录与执行记录属于事务的同一次执行过程。举例来说,假设一个调用链包括span0、span1、span2至spanN,该事务返回记录可以是span0,该至少一个相关执行记录可以是span1、span2至spanN。示例性地,假设根据执行记录的执行时长,确定执行过程为慢执行过程,则为执行记录以及至少一个相关执行记录添加第一标签。又如,假设根据执行记录的状态码,确定执行过程为成功执行过程,则为执行记录以及至少一个相关执行记录添加第二标签。
可选地,可以对历史时间段中出现的事务的多个特征按照执行过程进行分组,将属于同一次执行过程的特征划分至同一组中,使得同一组中的特征所属的执行过程相同,不同组中的特征所属的执行过程不同。在添加标签时,可以以组为单位,为同一组中的每个特征添加相同的标签。示例性地,可以通过调用链来确定不同特征是否属于同一次执行过程。具体地,可以将一个调用链的每个span中的每个特征作为一次执行过程中的特征。可选地,可以将事务在任一时间段中出现的每个特征按照调用链分组,同一个组中的每个特征属于一个调用链,可以为同一组中的每个特征添加相同的标签。
可选地,对于任一次执行过程来说,可以对该执行过程中每个执行记录中的特征进行缓存,直到接收到该执行过程的事务返回记录。具体来讲,当接收到任一次执行过程的任一个执行记录时,可以判断该执行记录是否为事务返回记录,当该执行记录不为事务返回记录,则提取该执行记录中的每个特征,对该每个特征进行缓存;当该执行记录为事务返回记录时,则根据该事务返回记录,对该事务返回记录对应的执行过程中的每个执行记录添加标签。
可选地,可以为事务的每一次执行过程分配一个缓存空间。对于任一次执行过程来说,当尚未接收到此次执行过程的事务返回记录时,可以使用该缓存空间,缓存此次执行过程中出现的每个特征。当接收到对应的执行过程的事务返回记录后,可以为此次执行过程出现的每个特征添加标签,存入存储桶,并释放该缓存空间。
可选地,可以为事务的多个调用链分配共享缓存空间,该共享缓存空间用于存储多个调用链中的特征,不同调用链的特征可以通过不同的链路标识(trace id)区分。
可选地,一次执行过程可以是一个调用链,执行记录可以是调用链中的span,事务返回记录可以是span0。相应地,上述特征缓存过程可以是:对于任一个调用链,可以对调用链中的每个span中的特征进行缓存,直到接收到span0。具体来讲,每当接收到任一个span,可以判断span是否为span0,当该span不为span0,则对该span中的特征进行缓存,当该span为span0,则根据该span0,对该span0所属的调用链中的每个span中的特征添加标签。其中,该span0所属的调用链可以是span0的链路标识对应的调用链。
可选地,可以对缓存的每个执行记录添加第三标签,该第三标签用于标识特征所属的执行过程的类型未知。第三标签可以是字符串、数字、字母或其他任意数据类型。举例来说,第三标签可以为“unknown(未知)”。
当接收到执行过程的事务返回记录时,可以根据事务返回记录,对执行记录的第三标签进行更新。具体地,如果根据事务返回记录,确定执行过程为问题执行过程,则将缓存的执行记录的标签从第三标签更新为第一标签,如果根据事务返回记录,确定执行过程为问题执行过程,则将缓存的执行记录的标签从第三标签更新为第二标签。
在一个示例性场景中,参见图25,图25为特征缓存的示意图,图25中的表用于表示缓存了特征的存储结构。表中的每一行存储调用链中的一个span中的特征;参见图25中的第一个图,假设首先接收到了span3,提取span3中特征“参数是x”,由于确定span3不是span0,则为“参数是x”添加标签“未知”,将添加了标签的“参数是x”写入表中的第一行,从而对添加了标签的“参数是x”进行缓存。之后,接收到span2以及span4,同理地,由于确定span2以及span4不是span0,则为span2中的“参数是y”添加标签“未知”,为span4中的“参数是z”添加标签“未知”,将添加了标签“未知”的“参数是y”以及“参数是z”分别写入表的第2行以及第3行。
当接收到span 0时,假设从span 0提取特征“参数是w1”,并且根据span0的调用时长(duration),确定调用链描述的执行过程为不慢执行过程,则将“参数是x”、“参数是y”以及“参数是z”的标签均从“未知”更新为“好”,并为“参数是w1”添加标签“好”,将添加了标签“好”的四个参数从列表移出,存入第一存储桶中。
在另一个示例性场景中,参见图26,图26为特征缓存的示意图,假设当接收到span0时,假设从span 0提取特征“参数是w2”,并且根据span0的调用时长(duration),确定调用链描述的执行过程为慢执行过程,则将“参数是x”、“参数是y”以及“参数是z”的标签均从“未知”更新为“不好”,并为“参数是w2”添加标签“不好”,将添加了标签“不好”的四个参数从列表移出,存入第二存储桶中。
可选地,本实施例可以应用在实时分析的场景中,也可以应用在批量分析的场景中。
应用在实时分析的场景中,在一种可能的实现中,可以在事务的执行过程中,接收事务的本次执行过程的每个执行记录,从本次执行过程的每个执行记录中获取特征,对获取到的每个特征进行缓存,直到接收到本次执行过程的事务返回记录。也即是,可以在事务尚未执行结束,事务的执行结果未知时,就缓存事务的每个执行记录。
在一个示例性场景中,假设调用链中包括span0、span1、span2和span3,span0分别顺序调用了span1,span2和span3。当span1执行结束,获取到了span1,而span2和span3可能还在执行,所以尚未获取到span0,也就无法根据span0判断此次执行过程是否为问题执行过程。因此可以将span1、span2和span3中的特征缓存起来,直到span0的调用全部执行完毕,对缓存的span0、span1、span2和span3均添加标签。
应用在批量分析的场景中,在一种可能的实现中,可以从数据库中,读取事务的任一次历史执行过程的每个执行记录,从历史执行过程的每个执行记录中获取特征,以便根据历史执行过程的每个执行记录,来分析事务的此次历史执行过程的潜在原因特征。可选地,数据库中任一次历史执行过程的多个执行记录可以和对应的标签存储。如此,当需要分析任一次历史执行过程时,可以读取该历史执行过程的多个执行记录以及该历史执行过程的标签,根据该标签确定历史执行过程是正常执行过程或者问题执行过程。可选地,也可以读取该历史执行过程的多个执行记录,根据该多个执行记录中的事务返回记录,确定历史执行过程是正常执行过程或者问题执行过程。
2307、计算机设备对事务的添加了第二标签的特征的出现次数进行统计,得到每个特征的第二信息。
在一种可能的实现中,可以将添加了第二标签的每个特征存入第二存储桶中,对第二存储桶中每个特征的数量进行统计,得到每个特征的第二信息。其中,该第二存储桶用于缓存事务的添加了第二标签的特征,该第二存储桶可以是是逻辑上的任意存储结构。
可选地,可以每隔统计周期,对第二标签的特征的出现次数进行统计,得到每个特征的第二信息,根据该第二信息执行下述步骤2308至步骤2309,将得到的潜在原因特征作为该统计周期对应的潜在原因特征。
可选地,可以实现计数聚合的功能。具体来讲,可以聚合多个统计周期的第二信息,通过聚合了的第二信息来确定潜在原因特征,如此,可以提高确定潜在原因特征所需的数据量,提高精确性。在一种可能的实现中,对第二信息计数聚合的功能可以包括下述步骤一至步骤三。
步骤一、当到达第一时间周期时,获取第二信息。
步骤二、对获取到的第一时间周期的第二信息进行缓存。
步骤三、当到达第二时间周期时,对已缓存的多个第一时间周期的第二信息进行聚合。
可选地,对第二信息进行计数聚合的方式包括而不限于下述聚合方式一至聚合方式二:
聚合方式一、采用环形计数技术进行聚合。
具体来讲,聚合方式一可以通过下述步骤一至步骤二实现:
步骤一、对当前的第一时间周期的第二信息与第二聚合次数相加,得到第二和值,第二聚合次数为当前的第二时间周期的上一个第二时间周期中所有第二信息的总和。
步骤二、对第二和值与目标第一时间周期的第二信息相减,将差值作为聚合后的第二信息。
聚合方式二、对当前的第一时间周期的第一信息与上一个第二时间周期中目标第一时间周期以外的每个第一时间周期的第一信息相加,将和值作为聚合后的第一信息。
对第二信息计数聚合的过程与上述对第一信息计数聚合的过程同理,在此不做赘述。
需要说明的是,本实施例对步骤2302至步骤2304、步骤2305至步骤2307不做时序上的限定。例如,可以先执行步骤2302至步骤2304,再执行步骤2305至步骤2307;也可以先执行步骤2305至步骤2307,再执行步骤2302至步骤2304;还可以并行执行步骤2305至步骤2307,再执行步骤2302至步骤2304。
2308、计算机设备计算至少一个特征中的每个特征的第一信息与第二信息之间的差异信息。
步骤2308与上述步骤702同理,在此不做赘述。
可选地,如果上述步骤2304以及步骤2307进行了次数聚合,则可以获取聚合后的第一信息与聚合后的第二信息之间的差异信息。
2309、计算机设备根据事务的至少一个特征的差异信息,分析至少一个特征中是否存在事务的潜在原因特征,潜在原因特征的差异信息符合差异条件。
步骤2309与上述步骤703同理,在此不做赘述。
2310、计算机设备根据多个潜在原因特征的包含关系,选择上位的潜在原因特征。
步骤2310与上述步骤703同理,在此不做赘述。
本实施例提供的方法,根据事务在一段时间的执行记录,对事务在这段时间的每次执行过程,区分为问题执行过程以及正常执行过程,为两种执行过程中出现的特征分别进行次数统计,从而得到事务的每个特征在问题执行过程中出现的次数以及在正常执行过程中的出现次数,进而通过两种出现次数来发现事务的潜在原因特征,可以自动发现事务的潜在原因特征,无需人工进行大量的分析和测试工作,极大地缩短了分析事务耗费的时间,提高了事务分析的效率。
在一个可能的实施例中,可以将潜在原因特征称为事务洞察,上述各个方法实施例中的步骤可以由事务洞察发现系统中的不同模块交互实现。
图27是本申请实施例提供的一种事务洞察发现系统的架构图,该事务洞察发现系统可以执行下述以下步骤:
步骤一、通过埋点技术,采集应用的每个事务在执行的实时数据,例如每次函数调用的输入参数以及输出参数。
步骤二、将采集的数据发送到分布式消息队列。
步骤三、从分布式消息队列中读取数据,向特征提取模块发送数据流。
步骤四、如图27中的①,特征提取模块从数据流中提取特征,生成键值对。
步骤五、如图27中的②,缓存管理模块对生成的键值对进行缓存。
步骤六、如图27中的③,计数管理模块按每1分钟为粒度,对每个键值对的出现次数进行统计。
步骤七、如图27中的④,计数聚合模块按照每10分钟为粒度,对10个1分钟的计数结果进行聚合;
步骤八、如图27中的⑤,洞察发现模块基于每10分钟的统计结果,判定是否存在潜在原因特征,即是否有导致事务出现问题的事务洞察。
步骤九、洞察去重,以去除相同或相似的洞察。
步骤十、将事务洞察存入数据库;
步骤十一、当前端发送洞察信息查看指令时,读取数据库,将事务洞察发送至终端,终端在图形用户界面中显示事务洞察。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
图28是本申请实施例提供的一种事务分析装置的结构示意图,如图28所示,该装置包括:
获取模块2801,用于执行步骤701,或用于执行执行步骤2301至步骤2307;
计算模块2802,用于执行步骤702或步骤2308;
分析模块2803,用于执行步骤703或步骤2309。
在一种可能的实现中,该计算模块,用于执行步骤702中的实现方式一、实现方式二、实现方式三中的任一项或多项的组合:
在一种可能的实现中,该获取模块,用于执行上述第一信息的统计过程和/或上述第二信息的统计过程。
在一种可能的实现中,该装置还包括:确定模块,用于:确定该事务的慢执行过程;或者,确定该事务的失败执行过程;或者,确定该事务的发生网络攻击的执行过程;或者,确定该事务的不慢执行过程;或者,确定该事务的成功执行过程;或者,确定该事务的未发生网络攻击的执行过程。
在一种可能的实现中,该装置还包括:
接收模块,用于接收步骤2301;
添加模块,用于执行步骤2303。
在一种可能的实现中,该装置还包括:
确定模块,用于执行上述步骤703中附加功能一中的步骤一;
选择模块,用于执行上述步骤703中附加功能一中的步骤二;。
在一种可能的实现中,该获取模块,用于执行上述步骤2304中计数聚合的功能中的步骤一;
相应地,该装置还包括:
缓存模块,用于执行上述步骤2304中计数聚合的功能中的步骤二;
聚合模块,用于执行上述步骤2304中计数聚合的功能中的步骤三;
相应地,该获取模块,用于:
获取聚合后的第一信息与聚合后的第二信息之间的差异信息。
在一种可能的实现中,该聚合模块,用于执行上述步骤2304中计数聚合的功能中的聚合方式一至聚合方式二中的任一项或多项:
需要说明的一点是,图28实施例提供的事务分析在分析事务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的事务分析装置与事务分析方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
需要说明的另一点是,图28实施例中的各个模块具体可以是软件中执行相应功能的软件模块,即,“模块”可以是一组计算机程序构成的功能模块,该计算机程序可以是源程序或目标程序,该计算机程序可以通过任意编程语言实现。通过上述各个模块,计算机设备可以基于处理器加存储器的硬件来实现事务分析的功能,也即是,可以通过计算机设备的处理器,运行存储在计算机设备的存储器中的软件代码,来执行相应的软件来实现事务分析的功能。
需要说明的另一点是,图28仅是以多个功能模块处于同一装置内进行举例说明。在其它可能的实施方式中,事务分析装置也可以由多个分置的功能模块所组成,该多个分置的功能模块可以位于不同的设备上,该多个分置的功能模块用于在逻辑上完成本发明实施例所需的计算处理功能。
在一个示例性实施例中,本申请还提供了一种包含指令的计算机程序产品,当其在计算机设备上运行时,使得该计算机设备能够实现上述实施例中事务分析方法所执行的操作。
在一个示例性实施例中,本申请还提供了一种芯片,所述芯片包括处理器和/或程序指令,当所述芯片运行时,实现上述实施例中事务分析方法所执行的操作。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD)、或者半导体介质(例如固态硬盘)等。
本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请中术语“多个”的含义是指两个或两个以上,例如,多个数据包是指两个或两个以上的数据包。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,本领域技术人员可以理解,“第一”“第二”等字样不对数量和执行顺序进行限定。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种事务分析方法,其特征在于,所述方法包括:
获取事务的至少一个特征中的每个特征的第一信息、第二信息、第三信息和第四信息,所述第一信息用于指示所述特征在所述事务的问题执行过程中出现的次数,所述第二信息用于指示所述特征在所述事务的正常执行过程中出现的次数,所述第三信息用于指示所述事务的所述特征以外的至少一个其他特征的第一信息的总和,所述其他特征的特征名与所述特征的特征名是相同的,所述其他特征的特征值与所述特征的特征值不同,所述第四信息用于指示所述至少一个其他特征的第二信息的总和;
根据所述每个特征的所述第一信息、所述每个特征的所述第二信息、所述每个特征的所述第三信息以及所述每个特征的所述第四信息,计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息;
根据所述事务的所述至少一个特征的差异信息,分析所述至少一个特征中是否存在所述事务的潜在原因特征,所述潜在原因特征的差异信息符合差异条件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述每个特征的所述第一信息、所述每个特征的所述第二信息、所述每个特征的所述第三信息以及所述每个特征的所述第四信息,计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息,包括:
对于所述至少一个特征中的任一特征,将所述特征的第一信息、所述特征的第二信息、所述特征的第三信息以及所述特征的第四信息输入似然比校验模型,输出所述特征的所述差异信息;或者,
对于所述至少一个特征中的任一特征,将所述特征的第一信息、所述特征的第二信息、所述特征的第三信息以及所述特征的第四信息输入假设校验模型,从所述假设校验模型中,获取所述特征的差异信息。
3.根据权利要求1所述的方法,其特征在于,所述计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息,包括:
根据所述每个特征的所述第一信息,生成至少一个第一蜡烛图,所述第一蜡烛图用于表示所述事务的问题执行过程中同一特征名的特征的分布情况;根据所述每个特征的所述第二信息,生成至少一个第二蜡烛图,所述第二蜡烛图用于表示所述事务的正常执行过程中同一特征名的特征的分布情况;计算所述每个特征所属的特征名的第一蜡烛图与所述每个特征所属的特征名的第二蜡烛图之间的差异信息;或者,
计算第一直方图与第二直方图之间的差异信息,所述第一直方图用于表示同一特征名的每个特征的第一信息的分布情况,所述第二直方图用于表示同一特征名的每个特征的第二信息的分布情况;或者,
根据所述每个特征的所述第一信息,生成至少一个第一曲线图,所述第一曲线图用于表示所述事务的问题执行过程中同一特征名的特征的变化趋势;根据所述每个特征的所述第二信息,生成至少一个第二曲线图,所述第二曲线图用于表示所述事务的正常执行过程中同一特征名的特征的分布情况;计算所述每个特征所属的特征名的第一曲线图与所述每个特征所属的特征名的第二曲线图之间的差异信息。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述差异信息符合差异条件,包括:
所述差异信息大于差异信息阈值;或者,
所述差异信息在所述事务的至少一个特征的差异信息中排在前预设位数;或者,
所述差异信息与至少一个其他特征的差异信息之间的偏差大于偏差阈值;或者,
所述差异信息是所述事务的至少一个特征的差异信息中最大的差异信息;或者,
所述差异信息在所述事务的至少一个特征的差异信息中处于目标范围,所述目标范围的一个端点是所述事务的至少一个特征的差异信息中最大的差异信息,所述目标范围的另一个端点是所述事务的至少一个特征的差异信息按照从大到小的顺序排序后的目标百分位数。
5.根据权利要求1所述的方法,其特征在于,所述获取事务的至少一个特征中的每个特征的第一信息、第二信息、第三信息和第四信息,包括:
对于所述至少一个特征中的任一特征,使用多个不同的哈希函数,对所述特征进行哈希运算,得到多个不同的哈希值;根据多个不同的哈希值,在多个不同的第一数组中获取多个第一位置;对所述多个第一位置存储的次数进行递增;当符合停止统计条件时,选取所述多个第一位置存储的次数的最小值,作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,对第一直方图中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第一直方图作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,遍历第一计数信息;当在所述第一计数信息中遍历到所述特征时,对所述第一计数信息中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第一计数信息中所述特征对应的次数作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,使用哈希函数,对所述特征进行哈希运算,得到哈希值;根据所述哈希值,在第二数组中获取第二位置;对所述第二位置存储的次数进行递增;当符合停止统计条件时,获取所述第二位置存储的次数,作为所述特征的第一信息;或者,
对于所述至少一个特征中的任一特征,使用多个不同的哈希函数,对所述特征进行哈希运算,得到多个不同的哈希值;根据多个哈希值,在多个不同的第三数组中获取多个第三位置;对所述多个第三位置存储的次数进行递增;当符合停止统计条件时,选取所述多个第三位置存储的次数的最小值,作为所述特征的第二信息;或者,
对于所述至少一个特征中的任一特征,对第二直方图中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第二直方图作为所述特征的第二信息;或者,
对于所述至少一个特征中的任一特征,遍历第二计数信息;当在所述第二计数信息中遍历到所述特征时,对所述第二计数信息中所述特征对应的次数进行递增;当符合停止统计条件时,将所述第二计数信息中所述特征对应的次数作为所述特征的第二信息,或者,
对于所述至少一个特征中的任一特征,使用哈希函数,对所述特征进行哈希运算,得到哈希值;根据所述哈希值,在第四数组中获取第四位置;对所述第四位置存储的次数进行递增;当符合停止统计条件时,获取所述第四位置存储的次数,作为所述特征的第二信息。
6.根据权利要求1所述的方法,其特征在于,所述问题执行过程包括慢执行过程、失败执行过程、发生网络攻击的执行过程中的至少一项,所述正常执行过程包括不慢执行过程、成功执行过程、未发生网络攻击的执行过程中的至少一项;
相应地,所述获取事务的至少一个特征中的每个特征的第一信息、第二信息、第三信息和第四信息之前,所述方法还包括:
根据所述事务的至少一次执行过程的执行时长,从所述至少一次执行过程中,确定所述事务的慢执行过程;或者,
根据所述事务的至少一次执行过程的状态码,从所述至少一次执行过程中,确定所述事务的失败执行过程;或者,
根据所述事务的至少一次执行过程的执行记录,从所述至少一次执行过程中,确定所述事务的发生网络攻击的执行过程;或者,
根据所述事务的至少一次执行过程的执行时长,从所述至少一次执行过程中,确定所述事务的不慢执行过程;或者,
根据所述事务的至少一次执行过程的状态码,从所述至少一次执行过程中,确定所述事务的成功执行过程;或者,
根据所述事务的至少一次执行过程的执行记录,从所述至少一次执行过程中,确定所述事务的未发生网络攻击的执行过程。
7.根据权利要求1所述的方法,其特征在于,所述获取事务的至少一个特征中的每个特征的第一信息、第二信息、第三信息和第四信息,包括:
对所述事务的添加了第一标签的特征的出现次数进行统计,得到所述第一信息,所述第一标签用于标识所述问题执行过程;
对所述事务的添加了第二标签的特征的出现次数进行统计,得到所述第二信息,所述第二标签用于标识所述正常执行过程。
8.根据权利要求7所述的方法,其特征在于,所述获取事务的至少一个特征中的每个特征的第一信息、第二信息、第三信息和第四信息之前,所述方法还包括:
接收所述事务的任一执行记录;
当所述执行记录为事务返回记录时,根据所述执行记录,为所述执行记录以及至少一个相关执行记录添加所述第一标签或者所述第二标签,所述至少一个相关执行记录与所述执行记录属于所述事务的同一次执行过程。
9.根据权利要求1所述的方法,其特征在于,所述根据所述事务的所述至少一个特征的差异信息,分析所述至少一个特征中是否存在所述事务的潜在原因特征之后,所述方法还包括:
如果所述事务具有多个潜在原因特征,则确定所述多个潜在原因特征的包含关系;
根据所述包含关系,选择上位的潜在原因特征。
10.根据权利要求9所述的方法,其特征在于,所述多个潜在原因特征包括:服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征中的至少两项;
所述多个潜在原因特征具有的上下位关系依次如下:服务特征、服务调用服务特征、函数特征、函数调用函数特征和参数特征。
11.根据权利要求1所述的方法,其特征在于,所述获取事务的至少一个特征中的每个特征的第一信息、第二信息、第三信息和第四信息,包括:
当到达第一时间周期时,获取所述第一信息以及所述第二信息;
相应地,所述计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息之前,所述方法还包括:
对获取到的第一时间周期的第一信息进行缓存,对获取到的第一时间周期的第二信息进行缓存;
当到达第二时间周期时,对已缓存的多个第一时间周期的第一信息进行聚合,对已缓存的多个第一时间周期的第二信息进行聚合,所述第二时间周期大于所述第一时间周期;
相应地,所述计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息,包括:
获取聚合后的第一信息与聚合后的第二信息之间的差异信息。
12.根据权利要求11所述的方法,其特征在于,所述对已缓存的多个第一时间周期的第一信息进行聚合,包括:
对当前的第一时间周期的第一信息与第一聚合次数相加,得到第一和值,所述第一聚合次数为上一个第二时间周期中所有第一信息的总和,所述上一个第二时间周期与当前的第二时间周期相隔一个第一时间周期;对所述第一和值与目标第一时间周期的第一信息相减,将差值作为聚合后的第一信息,所述目标第一时间周期与所述当前的第一时间周期相隔一个第二时间周期;或者,
对当前的第一时间周期的第一信息与上一个第二时间周期中目标第一时间周期以外的每个第一时间周期的第一信息相加,将和值作为聚合后的第一信息;
相应地,所述对已缓存的多个第一时间周期的第二信息进行聚合,包括:
对当前的第一时间周期的第二信息与第二聚合次数相加,得到第二和值,所述第二聚合次数为上一个第二时间周期中所有第二信息的总和;对所述第二和值与目标第一时间周期的第二信息相减,将差值作为聚合后的第二信息;或者,
对当前的第一时间周期的第二信息与当前的第二时间周期的上一个第二时间周期中目标第一时间周期以外的每个第一时间周期的第二信息相加,将和值作为聚合后的第二信息。
13.一种事务分析装置,其特征在于,所述装置包括:
获取模块,用于获取事务的至少一个特征中的每个特征的第一信息、第二信息、第三信息和第四信息,所述第一信息用于指示所述特征在所述事务的问题执行过程中出现的次数,所述第二信息用于指示所述特征在所述事务的正常执行过程中出现的次数,所述第三信息用于指示所述事务的所述特征以外的至少一个其他特征的第一信息的总和,所述其他特征的特征名与所述特征的特征名是相同的,所述其他特征的特征值与所述特征的特征值不同,所述第四信息用于指示所述至少一个其他特征的第二信息的总和;
计算模块,用于根据所述每个特征的所述第一信息、所述每个特征的所述第二信息、所述每个特征的所述第三信息以及所述每个特征的所述第四信息,计算所述至少一个特征中的每个特征的所述第一信息与所述第二信息之间的差异信息;
分析模块,用于根据所述事务的所述至少一个特征的差异信息,分析所述至少一个特征中的所述事务的潜在原因特征,所述潜在原因特征的差异信息符合差异条件。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;所述处理器执行所述存储器存储的指令,使得所述计算机设备执行权利要求1至权利要求12任一项所述的事务分析方法所执行的操作。
15.一种计算机可读存储介质,其特征在于,所述存储介质中存储有指令,计算机设备执行所述指令以实现如权利要求1至权利要求12任一项所述的事务分析方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811604315.1A CN109684052B (zh) | 2018-12-26 | 2018-12-26 | 事务分析方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811604315.1A CN109684052B (zh) | 2018-12-26 | 2018-12-26 | 事务分析方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109684052A CN109684052A (zh) | 2019-04-26 |
CN109684052B true CN109684052B (zh) | 2021-04-09 |
Family
ID=66189841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811604315.1A Active CN109684052B (zh) | 2018-12-26 | 2018-12-26 | 事务分析方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109684052B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112733083B (zh) * | 2019-10-28 | 2023-08-18 | 中国移动通信集团湖南有限公司 | 一种数据校验方法、系统及装置 |
CN110852802A (zh) * | 2019-11-08 | 2020-02-28 | 咪咕文化科技有限公司 | 异常行为的识别方法、通信设备及计算机可读存储介质 |
CN113452607B (zh) * | 2020-03-24 | 2024-09-10 | 华为云计算技术有限公司 | 分布式链路采集的方法、装置、计算设备和存储介质 |
CN111629074B (zh) * | 2020-07-29 | 2020-10-30 | 武汉思普崚技术有限公司 | 一种网关设备的会话排序方法及装置 |
CN112257285B (zh) * | 2020-10-30 | 2021-12-31 | 中国民航大学 | 用于大规模分布式仿真的轻量化dds自动发现方法 |
CN112597201A (zh) * | 2020-12-25 | 2021-04-02 | 中国农业银行股份有限公司 | 元素的计数方法、装置、可读介质以及设备 |
CN113704186B (zh) * | 2021-11-01 | 2022-02-08 | 云账户技术(天津)有限公司 | 告警事件生成方法、装置、电子设备和可读存储介质 |
CN115550139B (zh) * | 2022-09-19 | 2024-02-02 | 中国电信股份有限公司 | 故障根因定位方法、装置、系统、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013042182A1 (ja) * | 2011-09-20 | 2013-03-28 | 株式会社日立製作所 | リスク判定方法及びリスク判定サーバ |
CN105573824A (zh) * | 2014-10-10 | 2016-05-11 | 腾讯科技(深圳)有限公司 | 分布式计算系统的监控方法及系统 |
CN105912384A (zh) * | 2016-04-01 | 2016-08-31 | 广东凯通软件开发有限公司 | 流程引擎事务处理方法及装置 |
CN107229510A (zh) * | 2017-06-30 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种分布式系统事务管理方法及装置 |
CN108733457A (zh) * | 2018-04-12 | 2018-11-02 | 阿里巴巴集团控股有限公司 | 分布式事务的实现方法和装置 |
-
2018
- 2018-12-26 CN CN201811604315.1A patent/CN109684052B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013042182A1 (ja) * | 2011-09-20 | 2013-03-28 | 株式会社日立製作所 | リスク判定方法及びリスク判定サーバ |
CN105573824A (zh) * | 2014-10-10 | 2016-05-11 | 腾讯科技(深圳)有限公司 | 分布式计算系统的监控方法及系统 |
CN105912384A (zh) * | 2016-04-01 | 2016-08-31 | 广东凯通软件开发有限公司 | 流程引擎事务处理方法及装置 |
CN107229510A (zh) * | 2017-06-30 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种分布式系统事务管理方法及装置 |
CN108733457A (zh) * | 2018-04-12 | 2018-11-02 | 阿里巴巴集团控股有限公司 | 分布式事务的实现方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109684052A (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684052B (zh) | 事务分析方法、装置、设备及存储介质 | |
US10560465B2 (en) | Real time anomaly detection for data streams | |
US20200372039A1 (en) | Data processing method, apparatus, and system | |
CN111092852B (zh) | 基于大数据的网络安全监控方法、装置、设备及存储介质 | |
CN108471429B (zh) | 一种网络攻击告警方法及系统 | |
US11775501B2 (en) | Trace and span sampling and analysis for instrumented software | |
CN109587008B (zh) | 检测异常流量数据的方法、装置及存储介质 | |
US20150170070A1 (en) | Method, apparatus, and system for monitoring website | |
CN106815125A (zh) | 一种日志审计方法及平台 | |
US11663219B1 (en) | Determining a set of parameter values for a processing pipeline | |
US11042525B2 (en) | Extracting and labeling custom information from log messages | |
US11188443B2 (en) | Method, apparatus and system for processing log data | |
US10291493B1 (en) | System and method for determining relevant computer performance events | |
CN111740868A (zh) | 告警数据的处理方法和装置及存储介质 | |
CN112134719A (zh) | 一种分析基站安全日志的方法和系统 | |
CN111258798A (zh) | 监控数据的故障定位方法、装置、计算机设备及存储介质 | |
CN111800292A (zh) | 基于历史流量的预警方法、装置、计算机设备及存储介质 | |
CN115344455A (zh) | 日志处理方法、装置、电子设备及存储介质 | |
CN114356712A (zh) | 数据处理方法、装置、设备、可读存储介质及程序产品 | |
CN110225009A (zh) | 一种基于通信行为画像的代理使用者检测方法 | |
CN112769755A (zh) | 一种面向威胁检测的dns日志统计特征抽取方法 | |
US20230344840A1 (en) | Method, apparatus, system, and non-transitory computer readable medium for identifying and prioritizing network security events | |
CN113746790A (zh) | 一种异常流量管理方法、电子设备及存储介质 | |
WO2023093527A1 (zh) | 告警关联规则生成方法、装置、电子设备和存储介质 | |
CN110633191A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220211 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |