CN115913710A - 异常检测方法、装置、设备及存储介质 - Google Patents
异常检测方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115913710A CN115913710A CN202211430261.8A CN202211430261A CN115913710A CN 115913710 A CN115913710 A CN 115913710A CN 202211430261 A CN202211430261 A CN 202211430261A CN 115913710 A CN115913710 A CN 115913710A
- Authority
- CN
- China
- Prior art keywords
- rule
- target
- log sequence
- data
- rule set
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本公开提供了一种异常检测方法、装置、设备及存储介质,可以应用于大数据技术领域和金融技术领域。该方法包括:获取目标设备的待测日志序列和历史日志序列,其中,待测日志序列表征目标设备的当前运行状态信息,历史日志序列表征目标设备的历史运行状态信息;利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集,其中,目标规则集表征目标设备在异常运行状态下的运行规则信息;利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集;根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果。
Description
技术领域
本公开涉及大数据技术领域和金融技术领域,尤其涉及一种异常检测方法、装置、设备、介质和程序产品。
背景技术
随着信息技术的不断发展,网络的规模和复杂度在不断提高,网络攻击的手段也多种多样,如拒绝服务攻击、漏洞攻击、木马攻击等等。传统的对于系统异常检测的方法一般是基于分析网络应用产生的日志,依靠关键字搜索来识别典型的攻击模式,及时发现系统存在的潜在风险。但是,随着大数据时代的来临,面对系统数据的数量、维度的不断增长,传统的基于数理统计的异常检测方法存在检测准确率低和检测效率低的问题。
发明内容
鉴于上述问题,本公开提供了一种异常检测方法、装置、设备、介质和程序产品。
根据本公开的一个方面,提供了一种异常检测方法,包括:
获取目标设备的待测日志序列和历史日志序列,其中,待测日志序列表征目标设备的当前运行状态信息,历史日志序列表征目标设备的历史运行状态信息;
利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集,其中,目标规则集表征目标设备在目标运行状态下的运行规则信息;
利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集;
根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果。
根据本公开的实施例,利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集,包括:
利用哈希存储对待测日志序列进行去重处理,得到压缩后的待测日志序列的事务集,其中,事务集中包括m个事务;
根据第n个事务在事务集中出现的频率,确定第n个事务的权重,其中,1≤n≤m,且n、m均为正整数;
根据待测日志序列的项集与事务集的关联关系和每一个事务的权重,确定待测日志序列的项集的项目支持度;
根据项目支持度,确定待测日志序列的频繁集;
根据频繁集,生成待测数据规则集。
根据本公开的实施例,根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果,包括:
根据待测数据规则集和目标规则集,计算待测数据规则集与目标规则集的第一相似度;
根据第一相似度,生成待测日志序列的异常检测结果。
根据本公开的实施例,根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果,包括:
根据待测数据规则集和目标规则集,计算待测数据规则集与目标规则集的第一相似度;
根据第一相似度,生成待测日志序列的异常检测结果。
根据本公开的实施例,根据待测数据规则集和目标规则集,计算待测数据规则集与目标规则集的第一相似度,包括:
针对待测数据规则集中的第i个规则和目标规则集的第j个规则,计算第i个规则和第j个规则的第二相似度,其中,第i个规则和第j个规则存在关联关系;
根据多个第二相似度、待测数据规则集中的规则数和目标规则集中的规则数,确定第一相似度;其中,1≤i≤M,1≤j≤N,M表征待测数据规则集中的规则数,N表征目标规则集中的规则数。
根据本公开的实施例,针对待测数据规则集中的第i个规则和目标规则集的第j个规则,计算第i个规则和第j个规则的第二相似度,包括:
根据第i个规则的支持度和置信度,以及第j个规则的支持度和置信度,计算第二相似度。
根据本公开的实施例,利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集,包括:
对历史日志序列进行预处理,提取日志特征数据集;
利用聚类算法对日志特征数据集进行聚类分析,得到正常特征数据集和异常特征数据集;
利用关联规则挖掘算法对目标特征数据集进行处理,得到目标规则集,其中,目标特征数据集包括正常特征数据集或异常特征数据集。
根据本公开的实施例,对历史日志序列进行预处理,提取日志特征数据集,包括:
解析历史日志序列,得到多个目标日志信息;
针对每一个目标日志信息,利用逆文档频率算法,通过计算目标日志信息在历史日志序列中的频率,确定目标日志信息的权重;
根据多个目标日志信息的权重,生成日志特征数据集。
本公开的另一个方面提供了一种异常检测装置,包括:获取模块、分析模块、处理模块和生成模块。其中,获取模块,用于获取目标设备的待测日志序列和历史日志序列,其中,所述待测日志序列表征所述目标设备的当前运行状态信息,所述历史日志序列表征所述目标设备的历史运行状态信息。分析模块,用于利用聚类算法和关联规则挖掘算法对所述历史日志序列进行关联分析得到目标规则集,其中,所述目标规则集表征所述目标设备在异常运行状态下的运行规则信息。处理模块,用于利用所述关联规则挖掘算法对所述待测日志序列进行处理,得到待测数据规则集。生成模块,用于根据所述待测数据规则集和所述目标规则集,生成所述待测日志序列的异常检测结果。
根据本公开的实施例,处理模块包括去重单元、第一确定单元、第二确定单元、第三确定单元和第一生成单元。其中,去重单元,用于利用哈希存储对待测日志序列进行去重处理,得到压缩后的待测日志序列的事务集,其中,事务集中包括m个事务。第一确定单元,用于根据第n个事务在事务集中出现的频率,确定第n个事务的权重,其中,1≤n≤m,且n、m均为正整数。第二确定单元,用于根据待测日志序列的项集与事务集的关联关系和每一个事务的权重,确定待测日志序列的项集的项目支持度。第三确定单元,用于根据项目支持度,确定待测日志序列的频繁集。第一生成单元,用于根据频繁集,生成待测数据规则集。
根据本公开的实施例,生成模块包括第一计算单元和第二生成单元。其中,第一计算单元,用于根据待测数据规则集和目标规则集,计算待测数据规则集与目标规则集的第一相似度。第二生成单元,用于根据第一相似度,生成待测日志序列的异常检测结果。
根据本公开的实施例,第一计算单元包括第一计算子单元和第一确定子单元。其中,第一计算子单元,用于针对待测数据规则集中的第i个规则和目标规则集的第j个规则,计算第i个规则和第j个规则的第二相似度,其中,第i个规则和第j个规则存在关联关系。第一确定子单元,用于根据多个第二相似度、待测数据规则集中的规则数和目标规则集中的规则数,确定第一相似度;其中,1≤i≤M,1≤j≤N,M表征待测数据规则集中的规则数,N表征目标规则集中的规则数。
根据本公开的实施例,第一计算子单元包括计算子模块。其中,计算子模块,用于根据第i个规则的支持度和置信度,以及第j个规则的支持度和置信度,计算第二相似度。
根据本公开的实施例,分析模块包括提取单元、分析单元和处理单元。其中,提取单元,用于对历史日志序列进行预处理,提取日志特征数据集。分析单元,用于利用聚类算法对日志特征数据集进行聚类分析,得到正常特征数据集和异常特征数据集。处理单元,用于利用关联规则挖掘算法对目标特征数据集进行处理,得到目标规则集,其中,目标特征数据集包括正常特征数据集或异常特征数据集。
根据本公开的实施例,提取单元包括解析子单元、第二确定子单元和生成子单元。其中,解析子单元,用于解析历史日志序列,得到多个目标日志信息。第二确定子单元,用于针对每一个目标日志信息,利用逆文档频率算法,通过计算目标日志信息在历史日志序列中的频率,确定目标日志信息的权重。生成子单元,用于根据多个目标日志信息的权重,生成日志特征数据集。
本公开的另一个方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述方法。
本公开的另一个方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述方法。
本公开的另一个方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法。
根据本公开提供的异常检测方法、装置、设备、介质和程序产品,通过获取目标设备的待测日志序列和历史日志序列,利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集,利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集,根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果。由于是利用聚类算法和关联规则挖掘算法从海量的历史日志序列中挖掘得到目标设备在异常运行状态下的规则集,至少部分的解决了传统的依靠关键字搜索的方法检测准确率及检测效率较低的问题,实现了准确、高效检测对目标设备的异常运行状态的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的异常检测方法、装置、设备、介质和程序产品的示例性系统架构图;
图2示意性示出了根据本公开实施例的异常检测方法的流程图;
图3示意性示出了根据本公开实施例的利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集的方法流程图;
图4示意性示出了根据本公开实施例的计算待测数据规则集与目标规则集的第一相似度的流程图;
图5示意性示出了根据本公开实施例的利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集的流程图;
图6示意性示出了根据本公开实施例的异常检测装置的结构框图;以及
图7示意性示出了根据本公开实施例的适于实现异常检测方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
在本公开的技术方案中,所涉及的数据(如包括但不限于用户个人信息)的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
由于金融技术领域对网络安全的特殊需求,及时发现潜在的安全问题十分必要,可以有助于相关人员及时发现和解决目标设备或系统的故障或是否存在网络攻击,从而确定目标设备或系统的安全稳定运行。
相关技术中一般是基于对网络应用产生的日志进行关键字搜索,根据关键字与典型的网络攻击规则进行匹配以识别典型的网络攻击模式。但是随着数据量的增多、数据维度的增长,网络攻击的模式也随时趋于复杂化,传统的异常检测模式较难准确识别出一些新型的网络攻击模式。
有鉴于此,本公开的实施例提供了一种异常检测方法,包括:获取目标设备的待测日志序列和历史日志序列,其中,待测日志序列表征目标设备的当前运行状态信息,历史日志序列表征目标设备的历史运行状态信息;利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集,其中,目标规则集表征目标设备在目标运行状态下的运行规则信息;利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集;根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果。
图1示意性示出了根据本公开实施例的异常检测方法的示例性系统架构图。
如图1所示,根据该实施例的示例性系统架构100可以包括异常检测模型的构建阶段和异常检测模型的应用阶段。
在异常检测模型的构建阶段,可以首先获取目标设备在预设周期内的历史日志序列,然后对历史日志序列进行预处理操作,例如:可以包括数据清洗以及归一化等操作。通过对历史日志序列进行特征提取,将非结构化的日志解析为一组事件模板,并将其编码为数字特征向量。通过对历史日志序列的数字特征向量进行聚类分析处理,得到正常特征数据集和异常特征数据集。并通过对正常特征数据集进行数据哈希处理、关联规则挖掘生成候选频繁集,并对候选频繁集基于事务加权进行支持度计算、剪枝等操作,得到表征目标设备在目标运行状态下的运行规则信息的目标规则集,并将目标规则集入库存储在规则库中。
在异常检测模型的应用阶段,针对目标设备的待测日志序列,对待测日志序列进行与历史日志序列相同的预处理操作、特征提取操作以及关联规则挖掘操作,得到待测数据规则集。通过待测数据规则集与规则库中的目标规则集进行模式匹配,如果不能够匹配,则表示该待测日志序列正常,可以作为动态优化训练异常检测模型的样本数据。如果能够匹配,则表示该待测日志序列异常,可以输出异常检测结果,也可以进行预警。
以下将基于图1描述的场景,通过图2~图4对公开实施例的异常检测方法进行详细描述。
图2示意性示出了根据本公开实施例的异常检测方法的流程图。
如图2所示,该实施例的异常检测方法包括操作S210~操作S240。
在操作S210,获取目标设备的待测日志序列和历史日志序列,其中,待测日志序列表征目标设备的当前运行状态信息,历史日志序列表征目标设备的历史运行状态信息。
根据本公开的实施例,目标设备可以是能够为用户提供电话交易服务的设备。目标设备的当前运行状态信息和历史运行状态信息均可以包括密码错误状态信息、输入错误状态信息、次数超限状态信息等等。
在操作S220,利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集,其中,目标规则集表征目标设备在目标运行状态下的运行规则信息。
在操作S230,利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集。
根据本公开的实施例,目标运行状态可以包括正常运行状态或异常运行状态。可以利用凝聚性层次聚类算法对历史日志序列进行聚类,得到目标设备在正常运行状态下的数据集和目标设备在异常运行状态下的数据集。再利用关联规则挖掘算法对异常运行状态下的数据集进行关联规则挖掘,得到目标规则集。
根据本公开的实施例,可以利用关联规则挖掘算法对待测日志序列进行处理的过程,得到待测数据规则集。
在操作S240,根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果。
根据本公开额实施例,可以利用待测数据规则集和目标规则集的相似度,确定待测日志序列是否异常。例如:待测数据规则集与目标规则集的相似度超过预设阈值,表示目标设备当前的运行状态与目标设备异常运行状态的相似度较高,可以确定此时,目标设备处于异常运行状态,从而生成的异常检测结果可以为设备异常。
根据本公开的实施例,通过获取目标设备的待测日志序列和历史日志序列,利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集,利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集,根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果。由于是利用聚类算法和关联规则挖掘算法从海量的历史日志序列中挖掘得到目标设备在异常运行状态下的规则集,至少部分的解决了传统的依靠关键字搜索的方法检测准确率及检测效率较低的问题,实现了准确、高效检测对目标设备的异常运行状态的技术效果。
图3示意性示出了根据本公开实施例的利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集的方法流程图。
如图3所示,该实施例包括操作S310~S350。
在操作S310,利用哈希存储对待测日志序列进行去重处理,得到压缩后的待测日志序列的事务集,其中,事务集中包括m个事务;
在操作S320,根据第n个事务在事务集中出现的频率,确定第n个事务的权重,其中,1≤n≤m,且n、m均为正整数;
在操作S330,根据待测日志序列的项集与事务集的关联关系和每一个事务的权重,确定待测日志序列的项集的项目支持度;
在操作S340,根据项目支持度,确定待测日志序列的频繁集;
在操作S350,根据频繁集,生成待测数据规则集。
根据本公开的实施例,可以将待测日志序列转化为字符串,然后利用哈希函数对字符串进行计算,例如:去字符串中的每个字符的值左移5位进行累计相加,得到该字符串的哈希值。
根据本公开的实施例,可以通过设置最小支持度阈值,利用哈希存储(HashSet)的去重特性存储待测日志序列的项集、事务集以及项集到事务集的映射。对于事务集中的重复出现的事务,可以根据该事务出现的次数,确定该事务的权重。
根据本公开的实施例,待测日志序列的项集与事务集的关联关系可以为项集到事务集的映射。可以根据项集到事务集的映射、每个事务的权重,确定项集的项目支持度。在该步骤中,对事务集中每个事务的权重累加可以快速获得支持度计数频繁集,进而生成待测数据规则集。
根据本公开的实施例,可以通过迭代计算n项集对应的事务集,对组成该n项集的n-1项集对应的事务集进行交集操作,不需要对原始数据集进行操作即可生成集合视图。通过集合视图可以快速获取交集是否为空、交集大小是否符合要求等信息。若符合要求,再遍历集合视图,这样可以过滤掉大部分取交集的耗时操作,提升数据处理效率。由于事务集是采用哈希存储得到的,两个集合取交集时只需遍历其中一个集合,然后通过哈希映射判断是否存在在另一个结合中,保证取交集的遍历操作能在预设时间复杂度内完成。而且,集合视图仅涉及逻辑运算,对内存占用率也较低。
根据本公开的实施例,利用哈希存储的去重特征,在一定程度上压缩了事务集,在计算项目支持度时只需计算项集对应的事务的权重,从而减少了扫描原始数据的次数,提高了异常检测的效率。
根据本公开的实施例,根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果,包括:
根据待测数据规则集和目标规则集,计算待测数据规则集与目标规则集的第一相似度;
根据第一相似度,生成待测日志序列的异常检测结果。
根据本公开的实施例,例如:待测数据规则集可以为Q,目标规则数据集可以为Qabnormal,通过计算待测数据规则集与目标规则集的第一相似度0.22。可以设定相似度阈值为0.3,此时第一相似度0.22小于相似度阈值,可以确定该待测数据规则集与表征目标设备在目标运行状态下的运行规则信息的目标规则集的相似度较低,因此,待测日志序列的异常检测结果为目标设备当前处于正常运行状态。
图4示意性示出了根据本公开实施例的计算待测数据规则集与目标规则集的第一相似度的流程图。
如图4所示,该实施例包括操作S410~S420。
在操作S410,针对待测数据规则集中的第i个规则和目标规则集的第j个规则,计算第i个规则和第j个规则的第二相似度,其中,第i个规则和第j个规则存在关联关系;
在操作S420,根据多个第二相似度、待测数据规则集中的规则数和目标规则集中的规则数,确定第一相似度;其中,1≤i≤M,1≤j≤N,M表征待测数据规则集中的规则数,N表征目标规则集中的规则数。
根据本公开的实施例,针对待测数据规则集中的第i个规则和目标规则集的第j个规则,计算第i个规则和第j个规则的第二相似度,包括:根据第i个规则的支持度和置信度,以及第j个规则的支持度和置信度,计算第二相似度。
例如:待测数据规则集中的第i个规则可以为R1:X1=>Y1,目标规则集中的第j个规则可以为R2:X2=>Y2。在待测数据规则集中规则R1的支持度为s1、置信度为c1。在目标规则集中规则R2的支持度为s2、置信度为c2。可以按照式(1)计算第二相似度:
其中,Similarity(R1,R2)表示第二相似度;X1、Y1表示规则R1涉及的日志信息;X2、Y2表示规则R2涉及的日志信息;s1表示规则R1的支持度;c1表示规则R1的置信度;s2表示规则R2的支持度;c2表示规则R2的置信度。
根据本公开的实施例,可以按照式(2)计算第一相似度:
其中,Similarity(Q1,Q2)表示第一相似度;Q1表示待测数据规则集;Q2表示目标规则集;μ表示规则相似度参数。
例如:待测数据规则集Q可以表示如下:
目标设备在正常运行状态下的正常运行规则集Qnormal与目标设备在异常运行状态下的异常运行规则集Qabnormal如下表所示:
根据本公开的实施例,例如:相似度阈值可以设定为0.3,此时,待测数据规则集与正常运行规则集Qnonmal的相似度大于0.3,则表示当前目标设备运行正常。
根据本公开的实施例,通过待测数据规则集和目标规则集的相似度,可以确定目标设备当前运行状态与目标规则集中的目标运行状态的背离程度,从而确定目标设备的异常检测结果,实现了从宏观统计特征的角度识别目标设备的异常状态,提高了异常检测的准确度。
图5示意性示出了根据本公开实施例的利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集的流程图。
如图5所示,该实施例包括操作S510~S530。
在操作S510,对历史日志序列进行预处理,提取日志特征数据集。
根据本公开的实施例,在电话交易服务场景中,由于不同的交易环节的安全等级不同,可以采用不同的方式采集历史日志序列。对于安全等级较高的交易环节,例如:验密环节、转账环节、信息查询环节等等,可以采用实时采集目标设备生成的日志数据文件。对于安全等级较低的交易环节,例如:语音报读环节、按键操作环节等等,可以将目标设备生成的日志数据文件存储Kafka消息队列做离线采集。
在本公开的实施例中,可以采用HDFS分布式文件系统作为日志存储平台,采用Flume工具作为日志采集工具。在Flume工具中,每个工作单元Agent包含数据源输入端组件Source、输出端组件Sink以及传输组件Channel。数据源输入端组件用于接收外部系统发送过来的数据,包括日志、流量或图像等。输出端组件用于发送Flume收集到的数据到支持输出到文件、HDFS和Kafka等目的地。传输组件用于接收从Source发送过来的数据,并将其传输到Sink组件。
根据本公开的实施例,对历史日志序列进行预处理,提取日志特征数据集,包括:
解析历史日志序列,得到多个目标日志信息;
针对每一个目标日志信息,利用逆文档频率算法,通过计算目标日志信息在历史日志序列中的频率,确定目标日志信息的权重;
根据多个目标日志信息的权重,生成日志特征数据集。
根据本公开的实施例,由于日志数据属于无结构或半结构化数据,其中包含事件发生的时间和具体内容,具体内容描述了系统执行的具体动作,通常由固定部分和变量部分组成。固定部分一般是开发人员在源代码中预定义好的,变量部分通常是动态生成的一些参数,如端口号、IP地址等。
在本公开的实施例中,可以使用会话机制将原始日志数据分割成多组日志序列,会话窗口基于标识符对数据进行分组。标识符可以采用用户账号+交易码+交易日期作为标识符对原始日志数据进行分割,得到日志序列。
根据本公开的实施例,日志解析的方法主要分为两大类,基于聚类的方法和基于启发式的方法,在本公开的实施例中,可以使用基于启发式的IPLoM算法,将原始历史日志序列解析为目标日志信息。
根据本公开的实施例,针对每一个目标日志信息,生成一个事件计数向量,表示每个事件的发生次数。例如某个日志序列S对应的事件计数向量为[3,0,2,1,2],则表示在该序列中,事件1发生了3次,事件3发生了2次,所有日志序列的事件计数向量即可形成事件计数矩阵。
根据本公开的实施例,可以通过逆文档频率来计算不同日志事件的权重。IDF通常用作信息检索中的术语加权技术,可以评估一个术语对于某个文档的重要程度。在本文中,将每个日志事件视为一个术语,并将每个日志序列视为一个文档。基于此,如果一个日志事件频繁出现在多个日志序列中,则其在检测中具有较低的权重,可以通过式(4)由事件计数矩阵得到事件权重矩阵,即日志特征数据集。
IDF(t)=log(N/nt), (4)
其中,IDF(t)表示事件t的逆文档频率;N表示日志序列的总数,nt表示事件t出现的序列数。
根据本公开的实施例,由于在电话交易服务场景中,不同的日志事件对于异常检测重要程度不同,利用逆文档频率算法从海量的历史日志序列中提取日志特征数据集,可以有效提高日志特征提取的效率。
在操作S520,利用聚类算法对日志特征数据集进行聚类分析,得到正常特征数据集和异常特征数据集。
根据本公开的实施例,可以将每个日志序列视为一个类簇,通过按照式(5)计算两个类簇之间的欧式距离,将距离相近的两个类簇进行合并。
其中,SiEk表示第i个历史日志序列中的第k个事件;Si表示第i个历史日志序列;Sj表示第j个历史日志序列;SjEk表示第j个历史日志序列中的第k个事件。
根据本公开的实施例,可以通过建立聚类模型,对日志特征数据集进行聚类分析。在聚类模型的构建阶段,初始时,会将每个日志序列视为一个类簇,计算两个类簇之间的距离,将距离相近的两个类簇进行合并。为了确定应该合并哪些簇,应该定义簇之间的距离度量。本文采用两个簇之间所有元素对的最大距离作为簇间的距离度量,即簇距离度量取决于每个簇中日志序列之间的最大距离。定义距离阈值θ为聚类的结束条件,当簇之间的最大距离超过距离阈值时,结束聚类。可以将日志特征数据集分为正常特征数据集和异常特征数据集。
根据本公开的实施例,还可以对异常特征数据集做进一步划分,例如:系统自身异常、操作异常、交易接口调用异常等等。对异常特征数据集的进一步划分,可以结合专家的人工打分结果对聚类模型进行训练。
在操作S530,利用关联规则挖掘算法对目标特征数据集进行处理,得到目标规则集,其中,目标特征数据集包括正常特征数据集或异常特征数据集。
根据本公开的实施例,利用关联规则挖掘算法对异常特征数据集的处理方式与利用关联规则挖掘算法对待测日志序列的处理方式类似,在此不做赘述。
根据本公开的实施例,由于异常特征数据集的数据处理量较大,可以利用MapReduce编程四城,开启多个线程,并行计算频繁集的支持度,以提高数据处理效率。
根据本公开的实施例,基于哈希存储与事务加权并行的方式,利用聚类算法和关联规则挖掘算法从海量的历史日志序列中挖掘得到目标规则集,可以有效解决传统的日志分析检测技术汇总存在的规则库难以维护,检测效率低的问题。
基于上述异常检测方法,本公开还提供了一种异常检测装置。以下将结合图6对该装置进行详细描述。
图6示意性示出了根据本公开实施例的异常检测装置的结构框图。
如图6所示,该实施例的异常检测装置600包括获取模块610、分析模块620、处理模块630和生成模块640。
获取模块610用于获取目标设备的待测日志序列和历史日志序列,其中,待测日志序列表征目标设备的当前运行状态信息,历史日志序列表征目标设备的历史运行状态信息。在一实施例中,获取模块610可以用于执行前文描述的操作S210,在此不再赘述。
分析模块620用于利用聚类算法和关联规则挖掘算法对历史日志序列进行关联分析得到目标规则集,其中,目标规则集表征目标设备在异常运行状态下的运行规则信息。在一实施例中,分析模块620可以用于执行前文描述的操作S220,在此不再赘述。
处理模块630用于利用关联规则挖掘算法对待测日志序列进行处理,得到待测数据规则集。在一实施例中,处理模块630可以用于执行前文描述的操作S230,在此不再赘述。
生成模块640用于根据待测数据规则集和目标规则集,生成待测日志序列的异常检测结果。在一实施例中,生成模块640可以用于执行前文描述的操作S240,在此不再赘述。
根据本公开的实施例,处理模块包括去重单元、第一确定单元、第二确定单元、第三确定单元和第一生成单元。其中,去重单元,用于利用哈希存储对待测日志序列进行去重处理,得到压缩后的待测日志序列的事务集,其中,事务集中包括m个事务。第一确定单元,用于根据第n个事务在事务集中出现的频率,确定第n个事务的权重,其中,1≤n≤m,且n、m均为正整数。第二确定单元,用于根据待测日志序列的项集与事务集的关联关系和每一个事务的权重,确定待测日志序列的项集的项目支持度。第三确定单元,用于根据项目支持度,确定待测日志序列的频繁集。第一生成单元,用于根据频繁集,生成待测数据规则集。
根据本公开的实施例,生成模块包括第一计算单元和第二生成单元。其中,第一计算单元,用于根据待测数据规则集和目标规则集,计算待测数据规则集与目标规则集的第一相似度。第二生成单元,用于根据第一相似度,生成待测日志序列的异常检测结果。
根据本公开的实施例,第一计算单元包括第一计算子单元和第一确定子单元。其中,第一计算子单元,用于针对待测数据规则集中的第i个规则和目标规则集的第j个规则,计算第i个规则和第j个规则的第二相似度,其中,第i个规则和第j个规则存在关联关系。第一确定子单元,用于根据多个第二相似度、待测数据规则集中的规则数和目标规则集中的规则数,确定第一相似度;其中,1≤i≤M,1≤j≤N,M表征待测数据规则集中的规则数,N表征目标规则集中的规则数。
根据本公开的实施例,第一计算子单元包括计算子模块。其中,计算子模块,用于根据第i个规则的支持度和置信度,以及第j个规则的支持度和置信度,计算第二相似度。
根据本公开的实施例,分析模块包括提取单元、分析单元和处理单元。其中,提取单元,用于对历史日志序列进行预处理,提取日志特征数据集。分析单元,用于利用聚类算法对日志特征数据集进行聚类分析,得到正常特征数据集和异常特征数据集。处理单元,用于利用关联规则挖掘算法对目标特征数据集进行处理,得到目标规则集,其中,目标特征数据集包括正常特征数据集或异常特征数据集。
根据本公开的实施例,提取单元包括解析子单元、第二确定子单元和生成子单元。其中,解析子单元,用于解析历史日志序列,得到多个目标日志信息。第二确定子单元,用于针对每一个目标日志信息,利用逆文档频率算法,通过计算目标日志信息在历史日志序列中的频率,确定目标日志信息的权重。生成子单元,用于根据多个目标日志信息的权重,生成日志特征数据集。
根据本公开的实施例,获取模块610、分析模块620、处理模块630和生成模块640中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块610、分析模块620、处理模块630和生成模块640中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块610、分析模块620、处理模块630和生成模块640中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图7示意性示出了根据本公开实施例的适于实现异常检测方法的电子设备的方框图。
如图7所示,根据本公开实施例的电子设备700包括处理器701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。处理器701例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器701还可以包括用于缓存用途的板载存储器。处理器701可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 703中,存储有电子设备700操作所需的各种程序和数据。处理器701、ROM702以及RAM 703通过总线704彼此相连。处理器701通过执行ROM 702和/或RAM 703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 702和RAM 703以外的一个或多个存储器中。处理器701也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备700还可以包括输入/输出(I/O)接口705,输入/输出(I/O)接口705也连接至总线704。电子设备700还可以包括连接至I/O接口705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 702和/或RAM 703和/或ROM 702和RAM 703以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的物品推荐方法。
在该计算机程序被处理器701执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分709被下载和安装,和/或从可拆卸介质711被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被处理器701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (11)
1.一种异常检测方法,包括:
获取目标设备的待测日志序列和历史日志序列,其中,所述待测日志序列表征所述目标设备的当前运行状态信息,所述历史日志序列表征所述目标设备的历史运行状态信息;
利用聚类算法和关联规则挖掘算法对所述历史日志序列进行关联分析得到目标规则集,其中,所述目标规则集表征所述目标设备在目标运行状态下的运行规则信息;
利用所述关联规则挖掘算法对所述待测日志序列进行处理,得到待测数据规则集;
根据所述待测数据规则集和所述目标规则集,生成所述待测日志序列的异常检测结果。
2.根据权利要求1所述的方法,其中,所述利用关联规则挖掘算法对所述待测日志序列进行处理,得到待测数据规则集,包括:
利用哈希存储对所述待测日志序列进行去重处理,得到压缩后的所述待测日志序列的事务集,其中,所述事务集中包括m个事务;
根据第n个事务在所述事务集中出现的频率,确定所述第n个事务的权重,其中,1≤n≤m,且n、m均为正整数;
根据所述待测日志序列的项集与所述事务集的关联关系和每一个事务的权重,确定所述待测日志序列的项集的项目支持度;
根据所述项目支持度,确定所述待测日志序列的频繁集;
根据所述频繁集,生成所述待测数据规则集。
3.根据权利要求1所述的方法,其中,所述根据所述待测数据规则集和所述目标规则集,生成所述待测日志序列的异常检测结果,包括:
根据所述待测数据规则集和所述目标规则集,计算所述待测数据规则集与所述目标规则集的第一相似度;
根据所述第一相似度,生成所述待测日志序列的异常检测结果。
4.根据权利要求3所述的方法,其中,所述根据所述待测数据规则集和所述目标规则集,计算所述待测数据规则集与所述目标规则集的第一相似度,包括:
针对所述待测数据规则集中的第i个规则和所述目标规则集的第j个规则,计算所述第i个规则和所述第j个规则的第二相似度,其中,所述第i个规则和所述第j个规则存在关联关系;
根据多个所述第二相似度、所述待测数据规则集中的规则数和所述目标规则集中的规则数,确定所述第一相似度;其中,1≤i≤M,1≤j≤N,M表征所述待测数据规则集中的规则数,N表征所述目标规则集中的规则数。
5.根据权利要求4所述的方法,其中,所述针对所述待测数据规则集中的第i个规则和所述目标规则集的第j个规则,计算所述第i个规则和所述第j个规则的第二相似度,包括:
根据所述第i个规则的支持度和置信度,以及所述第j个规则的支持度和置信度,计算所述第二相似度。
6.根据权利要求1所述的方法,其中,利用聚类算法和关联规则挖掘算法对所述历史日志序列进行关联分析得到目标规则集,包括:
对所述历史日志序列进行预处理,提取日志特征数据集;
利用聚类算法对所述日志特征数据集进行聚类分析,得到正常特征数据集和异常特征数据集;
利用所述关联规则挖掘算法对目标特征数据集进行处理,得到所述目标规则集,其中,所述目标特征数据集包括所述正常特征数据集或所述异常特征数据集。
7.根据权利要求6所述的方法,其中,所述对所述历史日志序列进行预处理,提取日志特征数据集,包括:
解析所述历史日志序列,得到多个目标日志信息;
针对每一个目标日志信息,利用逆文档频率算法,通过计算所述目标日志信息在所述历史日志序列中的频率,确定所述目标日志信息的权重;
根据多个所述目标日志信息的权重,生成所述日志特征数据集。
8.一种异常检测装置,包括:
获取模块,用于获取目标设备的待测日志序列和历史日志序列,其中,所述待测日志序列表征所述目标设备的当前运行状态信息,所述历史日志序列表征所述目标设备的历史运行状态信息;
分析模块,用于利用聚类算法和关联规则挖掘算法对所述历史日志序列进行关联分析得到目标规则集,其中,所述目标规则集表征所述目标设备在目标运行状态下的运行规则信息;
处理模块,用于利用所述关联规则挖掘算法对所述待测日志序列进行处理,得到待测数据规则集;
生成模块,用于根据所述待测数据规则集和所述目标规则集,生成所述待测日志序列的异常检测结果。
9.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~7中任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211430261.8A CN115913710A (zh) | 2022-11-15 | 2022-11-15 | 异常检测方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211430261.8A CN115913710A (zh) | 2022-11-15 | 2022-11-15 | 异常检测方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115913710A true CN115913710A (zh) | 2023-04-04 |
Family
ID=86496677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211430261.8A Pending CN115913710A (zh) | 2022-11-15 | 2022-11-15 | 异常检测方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115913710A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116896478A (zh) * | 2023-08-29 | 2023-10-17 | 江南信安(北京)科技有限公司 | 一种用于对僵尸主机进行检测的方法及系统 |
CN117076230A (zh) * | 2023-06-01 | 2023-11-17 | 安徽皖新融资租赁有限公司 | 一种计算机日志的预警方法和系统 |
-
2022
- 2022-11-15 CN CN202211430261.8A patent/CN115913710A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076230A (zh) * | 2023-06-01 | 2023-11-17 | 安徽皖新融资租赁有限公司 | 一种计算机日志的预警方法和系统 |
CN117076230B (zh) * | 2023-06-01 | 2024-06-04 | 安徽皖新融资租赁有限公司 | 一种计算机日志的预警方法和系统 |
CN116896478A (zh) * | 2023-08-29 | 2023-10-17 | 江南信安(北京)科技有限公司 | 一种用于对僵尸主机进行检测的方法及系统 |
CN116896478B (zh) * | 2023-08-29 | 2024-04-02 | 江南信安(北京)科技有限公司 | 一种用于对僵尸主机进行检测的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11132248B2 (en) | Automated information technology system failure recommendation and mitigation | |
CN111343161B (zh) | 异常信息处理节点分析方法、装置、介质及电子设备 | |
CN115913710A (zh) | 异常检测方法、装置、设备及存储介质 | |
CN111813960B (zh) | 基于知识图谱的数据安全审计模型装置、方法及终端设备 | |
CN110222513B (zh) | 一种线上活动的异常监测方法、装置及存储介质 | |
US10824694B1 (en) | Distributable feature analysis in model training system | |
CN115061874A (zh) | 日志信息验证方法、装置、设备及介质 | |
CN113537337A (zh) | 训练方法、异常检测方法、装置、设备和存储介质 | |
CN114338195A (zh) | 基于改进孤立森林算法的web流量异常检测方法及装置 | |
CN116841779A (zh) | 异常日志检测方法、装置、电子设备和可读存储介质 | |
CN113282920B (zh) | 日志异常检测方法、装置、计算机设备和存储介质 | |
CN112613176A (zh) | 慢sql语句预测方法及系统 | |
CN116244146A (zh) | 日志异常检测方法、日志异常检测模型的训练方法及装置 | |
CN114706856A (zh) | 故障处理方法及装置、电子设备和计算机可读存储介质 | |
CN115269315A (zh) | 一种异常检测方法、装置、设备、介质 | |
CN113037555B (zh) | 风险事件标记方法、风险事件标记装置和电子设备 | |
Vahedi et al. | Cloud based malware detection through behavioral entropy | |
CN112860652B (zh) | 作业状态预测方法、装置和电子设备 | |
CN114358024A (zh) | 日志分析方法、装置、设备、介质和程序产品 | |
CN114742051A (zh) | 日志处理方法、装置、计算机系统及可读存储介质 | |
CN115412274A (zh) | 攻击溯源方法及相关数据处理、关联展示方法及装置 | |
CN114385398A (zh) | 一种请求响应状态确定方法、装置、设备和存储介质 | |
CN113961441A (zh) | 告警事件处理方法、审计方法、装置、设备、介质和产品 | |
CN113656314A (zh) | 压力测试处理方法及装置 | |
CN112418449A (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 |