zoukankan      html  css  js  c++  java
  • 基于PySpark的网络服务异常检测系统 阶段总结(一)

    又有快半年没更新博客了,自我总结原因,一个字:懒。现在对这半年所做的研究进行一个阶段性的总结,近几个月博主主要对网络服务异常检测相关算法进行了研究,并设计实现了基于Spark的网络服务异常检测系统,整个系统采用前后端分离的模式,所用技术:Pyspark+SparkSQL+Sklearn+Spark_Sklearn+Django+Mysql+Redis+AngularJS

    一、网络服务异常检测算法研究

      近年来,网络服务性能及安全引发的问题频频发生,主要原因是大量个人用户安全意识薄弱,黑客很容易利用个人用户的网络设备作为攻击的源头,进而通过网络进行大规模攻击。2016年10月22日,号称史上最严重的DDoS攻击,美国热门网站大都出现了瘫痪的情况,据用户反馈,Twitter、Spotify、Netflix、Github、Airbnb、Visa、CNN等上百家网站都无法正常访问,黑客们正是利用路由器、网络电视、智能冰箱、数码摄影机等家用设备来组建一种“僵尸网络”,利用DDoS攻击使网络服务异常,从而造成网络瘫痪。当网络服务出现性能和安全方面的问题时,往往会产生网络服务异常,而当下的网络攻击方式较为隐蔽,一般发生网络攻击时不易察觉,如果能做到提早预测网络服务异常,及时发现问题,那么就可以避免由网络性能和网络安全带来的一系列问题。

      网络服务是指在网络上运行的面向服务的软件模块,在电子商务、电子政务等方面有广泛的应用,如网上订票、网上选房、查看定座情况等,使得用户可以在不同的地方通过不同的终端设备访问业务应用上的数据。当前的大型互联网公司往往拥有数万个网络服务,各网络服务间是相互联系、相互影响的,本博文用APPID作为网络服务的ID号,一个APPID对应一个网络服务。

      首先说下传统的网络服务异常检测,传统的做法是根据某一特定阈值来判断网络服务异常,如根据响应时间判断,APDEX方法。

      APDEX是传统的基于统计的网络服务异常检测方法。该方法的基本步骤是先记录点的分布情况,然后以正态分布的形式来确定是否有异常点,最后通过数据变异指标来发现异常数据。对于随机变量X服从一个位置参数为 、尺度参数为 的概率分布,且其概率密度函数为:

    则这个随机变量就称为正态随机变量,正态随机变量服从的分布就称为正态分布,由于Apdex是基于正态分布的原理,并且在此之上做了扩展,所以它的计算方法是:首先定义一个标准量T,然后将待计算的样本以T为标准量进行划为。一般将样本划分为三个区间,分别是:

      1)小于等于 1T,为 Satisfactory(满意)

          2)大于1T,小于4T,为Tolerating(容忍)

    3)大于等于4T,为Frustrated(失望)

    于是,Apdex的计算公式如下:

    通过计算当前网络每一分钟的Apdex值可以得知当前网络的异常情况。由于标准T的选取不唯一并且以4T作为标准没有事实上的依据,所以检测到真正的异常的概率是非常低的。

     

      网络服务异常检测作为异常检测的一种,但其特征和一般的异常检测又有所区别,由于其异常样本数据极少,这样会形成正负样本极其不均衡,网络指标数据原始样本集的正负样本分布如下图所示:

    网络服务APPID120207在24小时内的正负样本分布情况,可以看出网络服务在常规情况下,异常样本相比正常样本而言是非常少的,这样造成了训练集中正负样本极其不均衡,在这种情况下用多分类的机器学习算法预测结果会存在较大的偏差,因此我采用单分类的并且能够兼容少量负样本的算法来解决此类问题,具体算法将在后续博文中详细介绍。

    最近系统重构采用 Django Restframework,消息队列为Celery,分析服务为Spark SQL和Spark Mllib,使用kmeans和随机森林算法对网络服务数据进行分析;数据分为全量数据和正常数据,每天通过自动跑定时job从全量数据中导入正常数据供算法做模型训练

  • 相关阅读:
    JavaScript函数式编程——柯里化
    JavaScript使用纯函数避免bug
    ES6入门五:箭头函数、函数与ES6新语法
    图解--二分查找树
    电梯引发的思考
    VIM
    vs 2017
    多线程系列(四):Task
    多线程系列(三):线程池基础
    Docker for windows : 安装Redis
  • 原文地址:https://www.cnblogs.com/FG123/p/7209039.html
Copyright © 2011-2022 走看看