CN115391148A - 异常检测方法和装置 - Google Patents
异常检测方法和装置 Download PDFInfo
- Publication number
- CN115391148A CN115391148A CN202211149017.4A CN202211149017A CN115391148A CN 115391148 A CN115391148 A CN 115391148A CN 202211149017 A CN202211149017 A CN 202211149017A CN 115391148 A CN115391148 A CN 115391148A
- Authority
- CN
- China
- Prior art keywords
- data
- server
- detected
- abnormal
- time
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/327—Alarm or error message display
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种异常检测方法和装置,涉及数据分析技术领域,包括:从数据缓存平台获取待检测的服务器的运行指标,运行指标包括待检测的服务器的CPU占有率,对运行指标进行第一预处理,得到第一数据,根据第一数据确定待检测的服务器是否产生异常,在确定待检测的服务器产生异常时,将异常信息发送至告警平台。通过对运行指标进行分析处理,根据当前运行指标和历史运行指标来确定服务器的运行是否产生异常,并在异常时告警,可以提高对服务器异常运行检测的准确性,降低因统一设置阈值而导致发生异常的风险。
Description
技术领域
本申请涉及数据分析技术领域,尤其涉及一种异常检测方法和装置。
背景技术
随着业务量和服务器数量的增加,整个业务系统的运行情况也变得异常复杂,对业务系统进行异常检测也变得越来越重要。
通常,是通过对业务系统的某些指标信息统一设置阈值来进行异常检测,在该指标信息大于设置的阈值时,可以认为业务系统的运行出现了问题,例如,在业务系统的服务器CPU的占有率大于设定阈值(90%)时,可以认为业务系统的运行出现了异常,并进行异常提示。
但是,在业务系统中,某些服务器日常的指标信息可能远低于阈值,在其发生问题时,也可能未达到统一设定的阈值,由于未达到统一设定的阈值,不会触发异常提示,从而导致业务系统产生了严重的生产事故,因此,如何降低通过统一设置的阈值进行异常检测而带来的后果,成为了本领域亟需解决的问题。
发明内容
本申请实施例提供一种异常检测方法和装置,通过对服务器的运行指标进行分析,可以提高业务系统异常检测的准确性。
第一方面,本申请实施例提供一种异常检测方法,包括:
从数据缓存平台获取待检测的服务器的运行指标,所述运行指标包括所述待检测的服务器的CPU占有率;
对所述运行指标进行第一预处理,得到第一数据,其中,所述第一预处理包括极小值处理和/或时间编号化处理,所述极小值处理为将小于预设指标的运行指标更新为所述预设指标,所述时间编号化处理为将所述运行指标的采集时间映射为预设的按照时间顺序排列的时间点;
根据所述第一数据确定所述待检测的服务器是否产生异常,在确定所述待检测的服务器产生异常时,将异常信息发送至告警平台。
可选的,所述第一预处理包括极小值处理和所述时间编号化处理,所述根据所述第一数据确定所述待检测的服务器是否产生异常,包括:
根据所述第一数据和前M日同一时间点的M个历史数据,获取M个差异值,其中,每个所述差异值用于指示所述第一数据与每个历史数据之间的差异情况;
若M个差异值中,所述差异值大于预设差异阈值的个数大于M/2,则确定所述服务器产生异常,其中,所述预设差异阈值为根据历史数据的正态分布确定的;其中,所述M为正整数。
可选的,所述第一预处理包括所述时间编号化处理,所述根据所述第一数据确定所述待检测的服务器是否产生异常,包括:
将所述第一数据依次输入至K个异常检测模型,其中,所述K个异常检测模型的训练数据集不同;
获取所述K个异常检测模型输出的K个判别结果,每个所述判别结果用于指示所述待检测的服务器是否产生异常;
将所述K个判别结果的众数作为输出结果。
可选的,所述方法还包括:
获取每日中按时间顺序排列的N个时间点的第二数据和对应的前一日的同一时间点的历史数据的N个差异值,并对所述N个差异值由大到小排序;
获取所述N个差异值中处于预设排名的差异值对应的正态分布均值和正态分布标准差;其中,所述N为正整数;
根据所述正态分布均值和标准差确定所述待检测服务器的预设差异阈值。
可选的,剔除每个运行指标的采集时间中的日期信息,将多个所述运行指标和对应的时分信息作为第一数据集;
根据所述第一数据集中的所述运行指标的小时信息,得到K个数据集;其中,第i个数据集中的运行指标是对所述第一数据集中的运行指标的小时信息叠加i个小时得到的,所述i=1、2……K;
将K个数据集中的时分信息映射为对应的时间点,获得新的K个数据集;根据每个所述新的K个数据集分别对所述异常检测模型进行训练,获得K个异常检测模型。
可选的,从数据储存平台获取所述待检测的服务器的运行指标;
对所述指标数据进行第二预处理,获取第二数据,所述第二预处理包括数据清洗、数据填充、所述极小值处理和所述时间编号化处理。
可选的,将所述异常信息写入本地日志文件中,其中,所述异常信息包括产生异常的服务器的名称、产生异常的时间和对应的运行指标。
第二方面,本申请实施例提供一种异常检测装置,包括:
获取模块,用于从数据缓存平台获取待检测的服务器的运行指标,所述运行指标包括所述待检测的服务器的CPU占有率;
处理模块,用于对所述运行指标进行第一预处理,得到第一数据,其中,所述第一预处理包括极小值处理和/或时间编号化处理,其中,所述极小值处理为将小于预设指标的运行指标更新为所述预设指标,所述时间编号化处理为将所述运行指标的生成时间映射为预设的按照时间顺序排列的时间点;
确定模块,根据所述第一数据确定所述待检测的服务器是否产生异常,在确定所述待检测的服务器产生异常时,将异常信息发送至告警平台。
可选的,本申请实施例提供的异常检测装置可以执行第一方面任一项所述的异常检测装置。
第三方面,本申请提供一种电子设备,包括:存储器和处理器;
存储器用于存储计算机指令;处理器用于运行存储器存储的计算机指令实现第一方面中任一项的方法。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现第一方面中任一项的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项的方法。
本申请实施例提供的异常检测方法和装置,通过从数据缓存平台获取待检测的服务器的运行指标,运行指标包括待检测的服务器的CPU占有率,对运行指标进行第一预处理,得到第一数据,根据第一数据确定待检测的服务器是否产生异常,在确定待检测的服务器产生异常时,将异常信息发送至告警平台。通过对运行指标进行分析处理,根据当前运行指标和历史运行指标来确定服务器的运行是否产生异常,并在异常时告警,可以提高对服务器异常运行检测的准确性,降低因统一设置阈值而导致发生异常的风险。
附图说明
图1为本申请实施例提供的场景示意图;
图2为本申请实施例提供的异常检测方法的流程示意图一;
图3为本申请实施例提供的异常检测方法的流程示意图二;
图4为本申请实施例提供的异常检测平台的工作流程示意图;
图5为本申请实施例提供的异常检测装置的结构示意图;
图6为本申请实施例提供的异常检测电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
下面结合附图对本申请实施例提供的异常检测方法进行详细地介绍。需要说明的是,本申请实施例中的“在……时”,可以为在某种情况发生的瞬时,也可以为在某种情况发生后的一段时间内,本申请实施例对此不作具体限定。
在银行的业务系统中,随着业务量和服务器数量的增加,整个业务系统的运行情况也变得异常复杂,不易被发现的潜在风险越来越多,因此,对业务系统进行异常检测也变得越来越重要。
传统的异常检测是通过对业务系统的某些指标信息统一设置阈值来进行异常检测,在检测到该指标信息大于设置的阈值时,可以认为业务系统的运行出现了问题,例如,将业务系统的服务器CPU的占有率的阈值统一设定为90%,在CPU的占有率超过90%时,才认为业务系统的运行出现了异常,并进行异常提示。
但是,某些服务器日常的指标信息可能远低于阈值,例如,某些服务器可能平时的CPU占有率仅为10%,当它的CPU占有率达到60%时,业务系统可能就已经发生一些异常了,但由于未达到设置的阈值,该异常未被检测到,当CPU占有率达到90%时,可能就会造成严重的生产事件。
有鉴于此,本申请实施例提供一种异常检测方法,通过对业务系统的服务器的日常运行指标进行收集处理,基于处理后的运行指标设计多种检测算法对业务系进行异常检测,可以提高业务系统异常检测的准确性,降低因未检测到业务系统出现异常而带来的损失。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图1为本申请实施例的应用场景示意图,如图1所示,包括业务系统101、检测平台102和告警平台103。
其中,业务系统101、检测平台102和告警平台103之间通过网络相连接,可以进行数据交互。
业务系统101包括多个服务器,检测平台102通过与业务系统101的交互可以获取业务系统101中各个服务器的运行指标,检测平台102通过对获取的服务器运行指标进行处理分析,可以确定各个服务器是否为正常运行,在确定到某一服务器出现异常时,将异常信息发送至告警平台103,以使系统管理员根据告警平台103接收到的异常信息,对出现异常的服务器进行处理,以确保业务系统的运行正常。
可选的,检测平台102包括轻量型指标采集器Metricbeat、开源分布式搜索引擎Elasticsearch、日志收集和过滤工具Logstash、日志图形化工具Kibana、大吞吐日志消息中间件kafka。
其中,Metricbeat用于获取业务系统101中各服务器的运行指标,并将该运行指标发送至kafka。
Logstash用于从kafka中获取运行指标进行两次格式化处理,将第一次格式化处理后的指标数据发送至Elasticsearch中保存,以使Kibana根据Elasticsearch中的运行指标建立对应的检测算法,将第二次格式化处理后的指标数据发送至kafka中形成数据流,以使检测平台102中的分析单元根据该数据对服务器的运行指标进行分析,以确定服务器是否出现异常。
上面,对本申请实施例提供的应用场景进行了说明,下面以图1中的检测平台为例,对本申请实施例提供的异常检测方法进行说明。
图2为本申请实施例提供的异常检测方法的流程示意图一,如图2所示,包括如下步骤:
S201、从数据缓存平台获取待检测的服务器的运行指标,运行指标包括待检测的服务器的CPU占有率。
本申请实施例中,数据缓存平台是指在检测平台中用于存储待分析服务器的运行指标数据流的平台,例如,kafka平台,运行指标是指待检测的服务器在运行过程中的各项配置的使用情况,例如,CPU、GPU、磁盘等使用情况。CPU占有率是指在数据采集时待检测的服务器的CPU的利用率。
本申请实施例中,在对业务系统进行异常检测时,可以根据业务系统中的服务器对应的标识,从数据缓存平台获取待检测的服务器的运行指标。
可选的,一台服务器可以对应多台主机,则获取待检测的服务器的运行指标可以为获取每一台主机的运行指标,例如,根据服务器的标识获取其对应的各主机的主机名,根据主机名数据缓存平台获取对应的运行指标,其中,服务器与主机的对应关系可以从预设的服务器信息表中获取。服务器信息表为储存该服务器的基本信息的数据表,可以存储于服务器的本地存储中。
可选的,本申请实施例中,获取待检测的服务器的运行指标可以为按照运行指标的采集时刻进行获取,例如,检测平台每2分钟从运行系统获取一次各服务器的运行指标,则分析单元每2分钟从数据缓存平台获取一次各服务器的运行指标。
S202、对运行指标进行第一预处理,得到第一数据,其中,第一预处理包括极小值处理和/或时间编号化处理。
本申请实施例中,极小值处理为将小于预设指标的运行指标更新为预设指标,时间编号化处理为将运行指标的采集时间映射为预设的按照时间顺序排列的时间点。
本申请实施例中,由于采集的运行指标可能存在极小值,例如,CPU的占有率为0.01%,该值会对影响异常检测的准确性,故对极小值进行处理,将获取的运行指标中的极小值,即小于预设指标的运行指标,以预设值作为对应的运行指标,例如,将CPU的占有率小于1%的统一为1%。
本申请实施例中,根据运行指标对服务器进行异常检测时,与运行指标的采集时间和对应的历史运行指标相关,而运行指标的采集时刻与检测平台采集单元相关,若采集单元发生重启,对应的采集时间会发生变化,导致异常检测出现错误,因此,需要对运行指标进行时间编号化处理。
例如,Metricbeat启动时间为9:01:20,则采集时间为9:03:20、9:05:20以此类推。如果某天Metricbeat重启,重启时间为9:02:10,则采集时间变为9:04:10、9:06:10以此类推,则该天的运行指标不存在对应的历史运行指标,导致异常检测出现错误。故本申请实施例中,对运行指标进行时间编号化处理,以避免出现该问题。
示例性的,可以根据运行指标的采集周期,将每天划分为N个时间点,例如,运行指标的采集周期为2分钟,则将每天划分为720个时间点,按照顺序进行编号,即,00:00:00-00:02:00为0号时间点,以此类推,将属于该时间点采集的数据映射至该时间点。
本申请实施例中,处理单元在获取到运行指标后,对运行指标进行极小值处理和/或时间编号化处理,获得第一数据。
S203、根据第一数据确定待检测的服务器是否产生异常,在确定待检测的服务器产生异常时,将异常信息发送至告警平台。
本申请实施例中,处理单元在获取到第一数据后,可以根据第一数据对待检测的服务器的运行情况进行判定,若待检测的服务器的运行情况为异常,则生成对应的异常信息,并将异常信息发送至告警平台,以使系统管理员根据异常信息,对出现异常的服务器进行处理。
示例性的,可以根据第一数据与对应时间点的历史数据的差异情况来判定服务器的运行情况是否出现异常,若差异情况大于预设阈值,则确定服务器的运行情况出现异常,或者,将第一数据输入至预先训练好的异常检测模型中,根据模型的输出结果确定服务器的运行情况是否出现异常,异常检测模型为根据对应的历史数据训练得到的。
本申请实施例提供的异常检测方法,通过从数据缓存平台获取待检测的服务器的运行指标,运行指标包括待检测的服务器的CPU占有率,对运行指标进行第一预处理,得到第一数据,根据第一数据确定待检测的服务器是否产生异常,在确定待检测的服务器产生异常时,将异常信息发送至告警平台。通过对运行指标进行分析处理,根据当前运行指标和历史运行指标来确定服务器的运行是否产生异常,并在异常时告警,可以提高对服务器异常运行检测的准确性,降低因统一设置阈值而导致发生异常的风险。
图3为本申请实施例提供的异常检测方法的流程示意图二,在图2所示实施例的基础上,进一步对本申请实施例提供的异常检测方法进行说明,如图3所示,包括如下步骤:
S301、在服务器信息表中查询对应的服务器的异常检测算法是否完成建模,若否,可以执行S302所示步骤,若否,可以执行S304所示步骤。
本申请实施例中,异常检测算法是根据服务器的运行指标判断服务器运行是否出现异常的算法,包括差异值计算算法和异常点检测(pyod)算法,服务器信息表中存储服务器的基本信息,例如,服务器ID、主机名、异常检测算法是否完成建模等信息,具体结构如下所示:
字段描述 | 字段名 | 字段类型 | 字段长度 | 是否为空 | 备注 |
服务器id | serverId | bigint | 20 | 否 | 主键 |
主机名 | hostName | varchar | 20 | 是 | 唯一索引 |
ip | ip | varchar | 50 | 是 | |
是否开启分析 | isEnable | varchar | 2 | 是 | 0:可用1:停用 |
算法A差异值阈值 | threshold | int | 10 | 是 | |
算法A是否建模 | isA | varchar | 2 | 是 | 0:已建模1:未建模 |
算法B是否建模 | isB | varchar | 2 | 是 | 0:已建模1:未建模 |
其中,算法A为差异值计算算法,算法B为pyod算法。
本申请实施例中,在对服务器进行异常检测时,在服务器信息表中查询字段isA和isB,若其对应的字段为1,则表示对应的服务器未完成相应的建模,需要对其异常检测算法进行建模后才能进行异常分析。即,在服务器信息表中查询字段isA和isB为1的服务器,根据其服务器的ID,获取对应的数据进行建模,即,执行可以执行S302所示步骤,在服务器信息表中查询字段isA和isB为0的服务器,执行S302所示步骤。
可选的,本申请实施例中,根据异常检测算法对服务器的运行是否产生异常进行判定时,可以根据算法A进行判定,也可以根据算法B进行判定。
S302、从数据储存平台获取待检测的服务器的运行指标,对运行指标进行第二预处理,获得第二数据。
本申请实施例中,数据储存平台为储存有业务系统全部运行指标的平台。例如,elasticsearch,第二预处理包括:数据清洗、数据填充、极小值处理和/或时间编号化处理。
其中,极小值处理和/或时间编号化处理与第一预处理的方式类似,此处不在赘述,数据清洗是指将运行指标中的重复值、无效值等运行指标去除,数据填充是指将运行指标中缺失的数据进行完善。
建模单元,例如,检测平台中的Kibana,在确定服务器的异常检测算法未完成建模时,从数据储存平台根据服务器对应的ID,获取该服务器的全部运行指标,或者,根据服务器中每个主机的主机名,获取对应的运行指标,并对回去的运行指标进行第二预处理,获得第二数据。
可选的,在对算法A进行建模时,第二预处理包括数据清洗、数据填充、极小值处理和时间编号化处理,对算法B进行建模时,第二预处理包括数据清洗、数据填充时间编号化处理。
S303、根据第二数据对待检测的服务器异常检测算法进行建模。
本申请实施例中,异常检测算法包括算法A和算法B,对应的建模也分为对算法A的建模和对算法B的建模。
针对算法A:根据第二数据对待检测的服务器异常检测算法进行建模,具体为:
获取每日中按时间顺序排列的N个时间点的第二数据和对应的前一日的同一时间点的历史数据的N个差异值,并对N个差异值由大到小排序;获取N个差异值中处于预设排名的差异值对应的正态分布均值和正态分布标准差;其中,N为正整数;根据正态分布均值和标准差确定待检测服务器的预设差异阈值。
本申请实施例中,以CPU指标为例,对差异值的计算进行说明。
服务器的运行指标具有周期性变化规律,对于单台服务器而言,存在f(x+T)≈f(x),其中,x为某一时间点,T为周期,通常为一天。则任意时间点x的CPU与前一周期对应时间点的CPU的差异值满足如下公式:
针对于任一台服务器,一般情况下,不同周期的相同时刻x的CPU占用率接近,所以β~0,有很小一部分异常值的β>>0,将这一部分异常值和其余正常值的区分界限定义为差异值差异阈值(异常阈值)。
本申请实施例中,按照运行指标的采集时间,将一个周期(一天)划分为了N个时间点,计算每日中按时间顺序排列的N个时间点的第二数据和对应的前一日的同一时间点的历史数据的N个差异值,即,计算第二数据中每一个数据的差异值βx-T,根据中心极限定理可知,如果样本足够大,则变量的均值采样分布将近似于正态分布,而与该变量在总体中的分布无关。故差异值的数据集合为均值接近于0的正态分布,则对应的差异阈值满足如下公式:
threshold=mean+K*std
其中,threshold为差异阈值,mean为正太分布均值,std为正态分布标准差,K为标准差系数。
在获取服务器的差异阈值后,将该差异阈值作为预设差异阈值,并写入对应的服务器信息表中,完成对算法A的建模。
可选的,由于大部分的差异值都集中在0附近,导致差异阈值很小,从而导致异常检测的准确率低,可以将第二数据对应的差异值进行由大到小的排序,将前N%的差异值用于进行阈值的计算,例如,10%。
针对算法B:根据第二数据对待检测的服务器异常检测算法进行建模,具体为:
剔除每个运行指标的生成时间中的日期信息,将多个运行指标和对应的时分信息作为第一数据集;根据第一数据集中运行指标的小时信息,得到K个数据集;其中,第i个数据集中的运行指标是对第一数据集中的运行指标的小时信息叠加i小时得到的,i=1、2……K;将K个数据集中的时分信息映射为对应的时间点,获得新的K个数据集;根据每个新的K个数据集分别对异常检测模型进行训练,获得K个异常检测模型。
本申请实施例中,算法B为pyod算法,pyod算法中包括了多种异常检测算法,本申请实施例根据获取的运行指标的特性和实际测试,选择KNN算法作为本申请实施例的异常点检测算法,即,算法B为一种异常检测模型。
采集的运行指标的原始格式为X年-X月-X日-X时:X分:X秒,由于每天的数据具备周期性,因此,数据的日期信息对采用算法B来说没有价值,因此,剔除掉每个运行指标中的日期信息,保留时分信息,将采集的数据转化为时-分-指标,作为训练算法B的数据集,即第一数据集。
由于第一数据集中的数据的时间信息只有时分信息,因此,在0点附近(时间周期循环)采集的数据会存在数据反映上差别很大,但实际差别很小的问题,例如,23:58分采集的数据与00:00采集的数据,实际差别只有1和2,但在数据上却是23与0,58与0的差别,即数据上差别为23和58,这样会导致根据该数据集训练的异常检测模型不准确。
因此,本申请实施例中采用坐标轴循环的方法,即,对第一数据集中的小时信息进行叠加处理,以第一数据集为基准获取K个数据集,例如,将第一数据集中的数据的小时信息依次加1、2……24,得到24个新的数据集,这样可以解决时间周期循环时,数据反映上差别很大,但实际差别很小的问题。
进一步的,对获得的K个数据集中的数据,将其时分信息映射为对应的时间点,即,时间编号化处理,获得新的K个数据集,这样数据集最终被转化为时间点-指标的样式,使得模型训练的过程更加容易,采用新的K个数据集依次对异常检测模型进行训练,获得K个异常检测模型,算法B的建模完成。
可选的,算法B采用了KNN算法,在进行模型训练时,需要预先设置K值和异常点占比两个参数,本申请实施例中,根据第一数据集中的异常点占比个数确定异常点占比参数对应的值,根据实际实验确定本申请实施例中的K取值为40,可以理解的是,K值得选取原则为在实验过程中可以将异常值与正常值进行区分的最小的值,以提高KNN算法的性能。本申请实施例中的K值也可以根据实际需求进行调整,本申请实施例对此并不造成限定。
S304、从数据缓存平台获取待检测的服务器的运行指标,对运行指标进行第一预处理,获得第一数据。
本申请实施例中,S304的具体实现方式和图2中所示的获取第一数据的实现方式类似,此处不在赘述。
可选的,若根据算法A进行异常检测,则第一预处理包括极小值处理和时间编号化处理,若根据算法B进行异常检测,则第一预处理包括时间编号化处理。
S305、根据第一数据对判断待检测的服务器是否产生异常。
本申请实施例中,在获得第一数据后,可以根据第一数据对待检测的服务器是否产生异常,进行检测。
针对算法A,根据第一数据判断待检测的服务器是否产生异常,具体为:
根据第一数据和前M日同一时间点的M个历史数据,获取M个差异值,其中,每个差异值用于指示第一数据与每个历史数据之间的差异情况;若M个差异值中,差异值大于预设差异阈值的个数大于M/2,则确定服务器产生异常,其中,预设差异阈值为根据历史数据的正态分布确定的;其中,M为正整数。
本申请实施例中,从算法A历史信息表中获取与第一数据前M日同一时间点的M个历史数据,计算出M个差异值,例如,获取与第一数据同一时间点的前5日的历史数据,根据差异值的计算方法,计算出5个与第一数据的差异值βx-T、βx-2T、βx-3T、βx-4T和βx-5T,从服务器信息表中查询到对应的预设异常阈值,根据差异值与预设异常阈值对服务器进行分析,获得分析结果,并将分析结果写入算法A分析结果表。
若其中的差异值大于预设异常阈值的个数超出差异值总数的一半,则确定该第一数据对应的服务器产生异常。
本申请实施例中,算法A历史信息表为储存有算法A计算差异值需要的历史数据的数据表,在分析单元对第一数据进行分析时,从数据缓存平台获取对应的运行指标,经过数据清洗、数据填充、极小值处理和时间编号化处理后,写入算法A历史信息表,其主键为历史信息id,包含服务器id、主机名、日期、时间编号、cpu等字段。该表数据会定期清除过期数据其具体结构如下所示:
字段描述 | 字段名 | 字段类型 | 字段长度 | 是否唯恐 | 备注 |
历史信息id | historyId | bigint | 20 | 否 | 主键 |
服务器id | serverId | bigint | 20 | 否 | 服务器信息表外键 |
主机名 | hostName | varchar | 20 | 是 | |
日期 | date | varchar | 20 | 是 | |
时间编号 | timeId | int | 10 | 是 | |
cpu | cpu | float | 32 | 是 |
本申请实施例中,算法A分析结果表存储算法A的分析结果,主键为算法A结果id,包含服务器id、主机名、日期、时间、cpu、差异值等字段,具体结构如下所示:
字段描述 | 字段名 | 字段类型 | 字段长度 | 是否为空 | 备注 |
算法A结果id | resultId | bigint | 20 | 否 | 主键 |
服务器id | serverId | bigint | 20 | 否 | 服务器信息表外键 |
主机名 | hostName | varchar | 20 | 是 | |
日期 | date | varchar | 20 | 是 | |
时间 | time | varchar | 20 | 是 | |
cpu | cpu | float | 32 | 是 | |
差异值 | ca_value | float | 32 | 是 | |
是否正常 | isNormal | varchar | 2 | 是 | 0:正常1:异常 |
本申请实施例中,针对算法B,根据第一数据判断待检测的服务器是否产生异常,具体为:
将第一数据依次输入至K个异常检测模型,其中,K个异常检测模型的训练数据集不同;获取K个异常检测模型输出的K个判别结果,每个判别结果用于指示待检测的服务器是否产生异常;将K个判别结果的众数作为输出结果。
示例性的,将第一数据依次输入至训练好的24个异常检测模型中,获得24个判别结果,对24个判别结果进行统计,将其中的众数作为算法B最终的输出结果,例如,24个判别结果中有20为1,4个为0,则将1作为最终的判别结果进行输出。
本申请实施例中,在获得算法B的分析结果后,将该结果写入算法B分析结果表,算法B分析结果表存储算法B的分析结果,主键为算法B结果id,包含服务器id、主机名、时间等字段。具体结构如下所示:
字段描述 | 字段名 | 字段类型 | 字段长度 | 是否为空 | 备注 |
算法B结果id | resultId | bigint | 20 | 否 | 主键 |
服务器id | serverId | bigint | 20 | 否 | 服务器信息表外键 |
主机名 | hostName | varchar | 20 | 是 | |
时间 | time | varchar | 20 | 是 | |
cpu | cpu | float | 32 | 是 | |
预测值 | ca_value | float | 32 | 是 | |
是否正常 | isNormal | varchar | 2 | 是 | 0:正常1:异常 |
S306、在确定待检测的服务器产生异常时,生成异常信息并将异常信息写入本地日志文件中。
本申请实施例中,异常信息是指包括产生异常的服务器的ID,产生时间等信息的信息,分析单元在根据算法A或者算法B确定待检测的服务器产生异常时,生成对应的异常信息,并将该异常信息写入检测平台的本地日志文件中,以使检测平台将日志文件中记录的异常信息发送至告警平台。
例如,检测平台运行单独的线程每分钟扫描一次本地日志文件,若出现新的异常信息,则将该异常信息发送至告警平台。
图4为本申请实施例提供的检测平台完整的工作流程示意图,如图4所示,本申请实施例提供的异常检测方法主要分为数据获取、数据处理、模型建立、数据分析、结果发送等步骤。
本申请实施例提供的异常检测方法,通过在服务器信息表中查询对应的服务器的异常检测算法是否完成建模,若否,从数据储存平台获取待检测的服务器的运行指标,对运行指标进行第二预处理,获得第二数据,根据第二数据对待检测的服务器异常检测算法进行建模,从数据缓存平台获取待检测的服务器的运行指标,对运行指标进行第一预处理,获得第一数据,根据第一数据对判断待检测的服务器是否产生异常,在确定待检测的服务器产生异常时,生成异常信息并将异常信息写入本地日志文件中。通过构建两种异常检测算法,可以根据运行指标对服务器是否产生异常进行分析判断,并在出现异常情况时,进行告警,可以提升对服务器运行情况判断的准确性,提高业务系统的运行稳定性。
在上述异常检测方法实施例的基础上,本申请实施例还提供一种异常检测装置。
图5为本申请实施例提供的异常检测装置50的结构示意图,如图5所示,包括:
获取模块501,用于从数据缓存平台获取待检测的服务器的运行指标,所述运行指标包括所述待检测的服务器的CPU占有率.
处理模块502,用于对运行指标进行第一预处理,得到第一数据,其中,第一预处理包括极小值处理和/或时间编号化处理,其中,极小值处理为将小于预设指标的运行指标更新为所述预设指标,时间编号化处理为将运行指标的生成时间映射为预设的按照时间顺序排列的时间点。
确定模块503,根据第一数据确定待检测的服务器是否产生异常,在确定待检测的服务器产生异常时,将异常信息发送至告警平台。
可选的,处理模块502,还用于根据第一数据和前M日同一时间点的M个历史数据,获取M个差异值,其中,每个差异值用于指示第一数据与每个历史数据之间的差异情况;若M个差异值中,差异值大于预设差异阈值的个数大于M/2,则确定服务器产生异常,其中,预设差异阈值为根据历史数据的正态分布确定的;其中,M为正整数。
可选的,处理模块502,还用于将第一数据依次输入至K个异常检测模型,其中,K个异常检测模型的训练数据集不同;获取K个异常检测模型输出的K个判别结果,每个判别结果用于指示待检测的服务器是否产生异常;将K个判别结果的众数作为输出结果。
可选的,异常检测装置50还包括:模型建立模块504。
具体的,模型建立模块504,用于获取每日中按时间顺序排列的N个时间点的第二数据和对应的前一日的同一时间点的历史数据的N个差异值,并述N个差异值由大到小排序;获取N个差异值中处于预设排名的差异值对应的正态分布均值和正态分布标准差;其中,N为正整数;根据正态分布均值和标准差确定待检测服务器的预设差异阈值。
可选的,模型建立模块504,还用于剔除每个运行指标的采集时间中的日期信息,将多个运行指标和对应的时分信息作为第一数据集;根据第一数据集中的运行指标的小时信息,得到K个数据集;其中,第i个数据集中的运行指标是对第一数据集中的运行指标的小时信息叠加i个小时得到的,i=1、2……K;将K个数据集中的时分信息映射为对应的时间点,获得新的K个数据集;根据每述新的K个数据集分别对所述异常检测模型进行训练,获得K个异常检测模型。
本申请实施例提供的异常检测装置可以执行图2和图3所示的一场检测方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图6为本申请实施例提供的异常检测传输电子设备的结构示意图。如图6所示,本实施例提供的异常检测电子设备60可以包括:
处理器601。
存储器602,用于存储终端设备的可执行指令。
其中,处理器配置为经由执行可执行指令来执行上述异常检测方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述异常检测方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
一种可能的实现方式中,计算机可读介质可以包括随机存取存储器(RandomAccess Memory,RAM),只读存储器(Read-Only Memory,ROM),只读光盘(compact discread-only memory,CD-ROM)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(Digital Subscriber Line,DSL)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(Digital Versatile Disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
本申请实施例中还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述异常检测方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述终端设备或者服务器的具体实现中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:ApplicationSpecific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本领域技术人员可以理解,上述任一方法实施例的全部或部分步骤可以通过与程序指令相关的硬件来完成。前述的程序可以存储于计算机可读取存储介质中,该程序被执行时,执行上述方法实施例的全部或部分的步骤。
本申请技术方案如果以软件的形式实现并作为产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本申请的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括计算机程序或者若干指令。该计算机软件产品使得计算机设备(可以是个人计算机、服务器、网络设备或者类似的电子设备)执行本申请实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种异常检测方法,其特征在于,包括:
从数据缓存平台获取待检测服务器的运行指标,所述运行指标包括所述待检测服务器的CPU占有率;
对所述运行指标进行第一预处理,得到第一数据,其中,所述第一预处理包括极小值处理和/或时间编号化处理,所述极小值处理为将小于预设指标的运行指标更新为所述预设指标,所述时间编号化处理为将所述运行指标的采集时间映射为预设的按照时间顺序排列的时间点;
根据所述第一数据确定所述待检测的服务器是否产生异常,在确定所述待检测服务器产生异常时,将异常信息发送至告警平台。
2.根据权利要求1所述的方法,其特征在于,所述第一预处理包括极小值处理和所述时间编号化处理,所述根据所述第一数据确定所述待检测服务器是否产生异常,包括:
根据所述第一数据和前M日同一时间点的M个历史数据,获取M个差异值,其中,每个所述差异值用于指示所述第一数据与每个历史数据之间的差异情况;
若M个差异值中,所述差异值大于预设差异阈值的个数大于M/2,则确定所述待检测服务器产生异常,其中,所述预设差异阈值为根据历史数据的正态分布确定的;其中,所述M为正整数。
3.根据权利要求2所述的方法,其特征在于,所述第一预处理包括所述时间编号化处理,所述根据所述第一数据确定所述待检测服务器是否产生异常,包括:
将所述第一数据依次输入至K个异常检测模型,其中,所述K个异常检测模型的训练数据集不同;
获取所述K个异常检测模型输出的K个判别结果,每个所述判别结果用于指示所述待检测服务器是否产生异常;
将所述K个判别结果的众数作为输出结果。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取每日中按时间顺序排列的N个时间点的第二数据和对应的前一日的同一时间点的历史数据的N个差异值,并对所述N个差异值由大到小排序;
获取所述N个差异值中处于预设排名的差异值对应的正态分布均值和正态分布标准差;其中,所述N为正整数;
根据所述正态分布均值和标准差确定所述待检测服务器的预设差异阈值。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
剔除每个运行指标的采集时间中的日期信息,将多个所述运行指标和对应的时分信息作为第一数据集;
根据所述第一数据集中的所述运行指标的小时信息,得到K个数据集;其中,第i个数据集中的运行指标是对所述第一数据集中的运行指标的小时信息叠加i个小时得到的,所述i=1、2……K;
将K个数据集中的时分信息映射为对应的时间点,获得新的K个数据集;
根据每个所述新的K个数据集分别对所述异常检测模型进行训练,获得K个异常检测模型。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
从数据储存平台获取所述待检测服务器的运行指标;
对所述运行指标进行第二预处理,获取第二数据,所述第二预处理包括数据清洗、数据填充、所述极小值处理和所述时间编号化处理。
7.根据权利要求1至5任一项所述的方法,其特征在于,在确定所述待检测服务器产生异常之后,所述方法还包括:
将所述异常信息写入本地日志文件中,其中,所述异常信息包括产生异常的服务器的名称、产生异常的时间和对应的运行指标。
8.一种异常检测装置,其特征在于,包括:
获取模块,用于从数据缓存平台获取待检测服务器的运行指标,所述运行指标包括所述待检测服务器的CPU占有率;
处理模块,用于对所述运行指标进行第一预处理,得到第一数据,其中,所述第一预处理包括极小值处理和/或时间编号化处理,其中,所述极小值处理为将小于预设指标的运行指标更新为所述预设指标,所述时间编号化处理为将所述运行指标的生成时间映射为预设的按照时间顺序排列的时间点;
确定模块,根据所述第一数据确定所述待检测的服务器是否产生异常,在确定所述待检测服务器产生异常时,将异常信息发送至告警平台。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211149017.4A CN115391148A (zh) | 2022-09-21 | 2022-09-21 | 异常检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211149017.4A CN115391148A (zh) | 2022-09-21 | 2022-09-21 | 异常检测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115391148A true CN115391148A (zh) | 2022-11-25 |
Family
ID=84126135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211149017.4A Pending CN115391148A (zh) | 2022-09-21 | 2022-09-21 | 异常检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115391148A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117336080A (zh) * | 2023-10-24 | 2024-01-02 | 国家计算机网络与信息安全管理中心 | 一种基于流量和指标的暴力破解检测系统及方法 |
-
2022
- 2022-09-21 CN CN202211149017.4A patent/CN115391148A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117336080A (zh) * | 2023-10-24 | 2024-01-02 | 国家计算机网络与信息安全管理中心 | 一种基于流量和指标的暴力破解检测系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035404B (zh) | 医疗数据监控与预警方法、装置、设备及存储介质 | |
WO2017162083A1 (zh) | 数据清洗方法和装置 | |
CN111984503A (zh) | 一种监控指标数据异常数据识别的方法及装置 | |
CN110928718A (zh) | 一种基于关联分析的异常处理方法、系统、终端及介质 | |
CN108492150B (zh) | 实体热度的确定方法及系统 | |
CN111027615B (zh) | 基于机器学习的中间件故障预警方法和系统 | |
CN110149223B (zh) | 故障定位方法和设备 | |
WO2023071761A1 (zh) | 一种异常定位方法及装置 | |
CN108306997B (zh) | 域名解析监控方法及装置 | |
CN109062769B (zh) | It系统性能风险趋势预测的方法、装置和设备 | |
CN114465874A (zh) | 故障预测方法、装置、电子设备与存储介质 | |
CN115391148A (zh) | 异常检测方法和装置 | |
CN109933575B (zh) | 监测数据的存储方法及装置 | |
CN110389840B (zh) | 负载消耗预警方法、装置、计算机设备和存储介质 | |
US7287144B2 (en) | Hit ratio estimation device, hit ratio estimation method, hit ratio estimation program and recording medium | |
CN110300011B (zh) | 一种告警根因定位方法、装置和计算机可读存储介质 | |
CN114116391A (zh) | Redis实例的健康检测方法、装置、设备及存储介质 | |
CN116471174B (zh) | 一种日志数据监测系统、方法、装置和存储介质 | |
CN117130851B (zh) | 一种高性能计算集群运行效率评价方法及系统 | |
CN110769003B (zh) | 一种网络安全预警的方法、系统、设备及可读存储介质 | |
US20200210305A1 (en) | System, device and method for frozen period detection in sensor datasets | |
CN111800409B (zh) | 接口攻击检测方法及装置 | |
CN113849576A (zh) | 一种基于知识图谱的特定群体分析方法与系统 | |
CN106034044B (zh) | 告警分析的方法和装置 | |
CN113138896A (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 |