数据中心流量分析的挑战

早期的时候安畅网络是做IDC的,当时我们有13个数据中心和两个公共云的节点,出口带宽大概在200G左右。

elk统计接口访问量_IP

我们当时面临的困难是告警信息无法给出明确的***情况。我们只能是收到DDOS告警,然后通知机房现场,或者是运维工程师来手动的用抓包分析。这样以来,定位时间不可控,如果DDOS直接把机房的流量打死,或者机房直接瘫痪,这对客户的业务影响是不可估量的。所以当时我们就想能不能当DDOS***来临的时候,直接快速的分析出是哪个IP被***了,来源IP是什么,这样直接可以指到黑洞或者封堵,比较大的时候通知运营商进行封堵,这样可以减少最小的影响范围。

基于ELK的流量分析技术架构

每个数据中心核心或者路由器配置SFlow收集数据,然后经过sflowtool这个工具进入logstash。输出分为离线和在线两路。在线部分输入ES集群,最后经过Kibana展示。离线部分输出到kafka集群,然后进入Spark Streaming计算,通过算法生成告警。

elk统计接口访问量_IP_02

流量全景分析和告警

下面是其中一个数据中心的流量全景图。

elk统计接口访问量_IP_03

这边大家可以看到,就是这个电信入口,它TOP10的客户,而且后面可能是没有展现出来,它可以带到比较高的流量IP,可以跟电信入口或者联通入口,当DDOS***来的时候肯定是某个IP破坏量特别的高,而且从ES搜索路径是可以看到是哪个IP被***了,来源IP是什么。这个是我们当时根据我们公司自己业务从流量分析里面抓出来我们自己属于我们公司业务自己内部的一些流量,最上面的是我们这个流量的趋势图,还有下面的协议分布,或者是我们公司业务哪一些地区访问的最多,还能进行高德地图判断出这个流量客户的热点图等。

elk统计接口访问量_运维_04

DDOS告警大屏

DDOS***来的时候,我们是通过FLOW数据发送到Logstash然后再进ES。如果这个数据只用来展示的话是不够用的,我们想做一个告警。数据从FLOW发过以后,然后进入Logstash,最后再进入kafka消息队列,最后再进入大数据计算平台,通过一定的算法来判断。比如说长沙有一个数据中心,哪一个客户,哪一个IP被***了都可以显示出来的。

elk统计接口访问量_IP_05

关键配置

核心交换机的主要配置,如下图所示。上面有一个Agent Address,用于标识哪一个数据中心的IP,过滤的时候就可以知道是哪一个IP。然后下面Collector里面有两个Address,一个是进入ES的,另一个是进入kafka的。

elk统计接口访问量_IP_06

接下来配置端口,最主要的配置是Flow Rate,这个比率大概是256或者8192都是可以的,具体值取决于交换机。这里采取512比率,也就是每512个包抓取一个包。当然这个值小的话,交换机压力会比较大,而且进入ES的数据量也会倍增。下面部分这个是IP地址和客户的关系表。这个关系表是我们从CRM系统导入Logstash的,大概是2个小时同步一次。

elk统计接口访问量_网络_07

配置logstash的input插件,通过UDP端口,从sflowtoot抓出每个数据中心的数据。进入logstash后,通过grok插件来结构化需要分析的数据。同时使用了两个translate插件,用来分析协议和转换数据格式。

elk统计接口访问量_大数据_08

elk统计接口访问量_大数据_09