自从11月初我开始全面启用阿里云自身的“云监控”功能,希望借此和之前搭建的zabbix监控系统组合在一起,对系统安全至少可以启到“双保险”的作用。
  在学习和优化相关监控项参数的过程中,有1个监控项“公网网络出流量”引起我的注意。
  经过反复调试,我把所有金融云上的服务器,“公网网络出流量”设定为“8500000KB/min”。结果,“yqd-app02”(IP地址:10.253.40.103)的邮件报警就发到我的邮箱。
阿里云监控探测外网出流量达到80M的异常处理_第1张图片
  通过“云监控”发来的邮件报警,发现设定的报警值“8500000KB/min”相当于“8MBytes”,而这台服务器的日常外出流量长时间在80M左右,而且,还很有规律。
  以下是1天的趋势图:注意流量暴增的时间点
阿里云监控探测外网出流量达到80M的异常处理_第2张图片
  以下是7天趋势图:
阿里云监控探测外网出流量达到80M的异常处理_第3张图片
  以下是14天趋势图:
阿里云监控探测外网出流量达到80M的异常处理_第4张图片
  非常有规律。

  登录到这台服务器,使用iftop命令并没有发现有这么大流量的外发。
  前几天,我提工单给阿里云,了解“云监控”的机制,晚上6点半多接到阿里云打来的电话,并对工单进行了回复。
  工单内容如下:

[ 处理意见 ]
  刚和您电话沟通
1、这边查看您服务器的带宽出带宽占用确实是较高的。
2、您iftop看到的是实时监控,而云监控数据是通过云监控插件去获取到的,而且是几分钟去抓取一次,可能有一定的差异和延迟。建议您去核实网卡总流出量看下能否对应,您再观察下,有问题您及时联系我们。
  iftop是可以看到对应的进程或者程序占用的,关于带宽查询,也可参考以下方法:https://help.aliyun.com/knowledge_detail/41330.html

  根据工单提供的帮助链接,我又使用sar命令进一步分析,得到的结果如下:

[root@iZ2397pqli6Z ~]# sar -n DEV 1 5
Linux 3.10.0-123.9.3.el7.x86_64 (iZ2397Z)  12/13/2017      _x86_64_        (8 CPU)

09:38:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09:38:02 AM      eth0    524.00    582.00    131.32    161.25      0.00      0.00      0.00
09:38:02 AM      eth1    616.00    553.00     30.62   1361.34      0.00      0.00      0.00
09:38:02 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09:38:02 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09:38:03 AM      eth0    452.00    538.00    102.54    132.35      0.00      0.00      0.00
09:38:03 AM      eth1    583.00    547.00     29.52   1364.01      0.00      0.00      0.00
09:38:03 AM        lo      6.00      6.00      0.32      0.32      0.00      0.00      0.00

09:38:03 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09:38:04 AM      eth0    331.00    406.00     63.61     94.02      0.00      0.00      0.00
09:38:04 AM      eth1    606.00    574.00     30.20   1389.53      0.00      0.00      0.00
09:38:04 AM        lo      3.00      3.00      0.18      0.18      0.00      0.00      0.00

09:38:04 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09:38:05 AM      eth0    310.00    379.00     58.73     89.93      0.00      0.00      0.00
09:38:05 AM      eth1    600.00    554.00     29.96   1371.36      0.00      0.00      0.00
09:38:05 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

09:38:05 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09:38:06 AM      eth0    363.00    442.00     72.98     97.91      0.00      0.00      0.00
09:38:06 AM      eth1    616.00    574.00     30.77   1467.19      0.00      0.00      0.00
09:38:06 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:         eth0    396.00    469.40     85.84    115.09      0.00      0.00      0.00
Average:         eth1    604.20    560.40     30.21   1390.69      0.00      0.00      0.00
Average:           lo      1.80      1.80      0.10      0.10      0.00      0.00      0.00

  “eth1”是外网网卡,流量确实明显偏大。
  通过“sar -n DEV 1 5”命令来获取网卡级别的流量图,命令中“1 5”表示每一秒钟取1次值,一共取5次。
  命令执行后会列出每个网卡这5次取值的平均数据,根据实际情况来确定带宽跑满的网卡名称,默认情况下eth0为内网网卡,eth1为外网网卡。

  尝试使用之前安装过的iftop命令分析流量情况:

[root@iZ2397pqli6Z ~]# iftop -i eth1 -P
interface: eth1
IP address is: 120.55.132.2
MAC address is: 00:16:3e:00:04:9a
                              191Mb                         381Mb                         572Mb                         763Mb                    954Mb
+-----------------------------+-----------------------------+-----------------------------+-----------------------------+-----------------------------
iZ2397Z:36199                                            => 47.193.103.69:228                                              10.5Mb  10.0Mb  10.0Mb
                                                              <=                                                                203Kb   192Kb   192Kb
iZ2397Z:42821                                            => 106.111.68.13:http                                                0b   6.76Kb  6.76Kb
                                                              <=                                                                  0b    224b    224b
iZ2397Z:41465                                            => 218.160.112.40:https                                           2.13Kb   437b    437b
                                                              <=                                                               1.57Kb   322b    322b
iZ2397Z:33571                                            => 218.160.112.40:https                                              0b    170b    170b
                                                              <=                                                                  0b      0b      0b

  这个命令属于系统外部命令,需要单独安装:“yum install iftop -y”。
  “-P”参数会将请求服务的端口显示出来,也就是说是通过服务器哪个端口建立的连接。查看内网流量可以执行“iftop -i eth0 -P"命令。
  流量最高的是第一行,虽然只有10M。
  “47.193.103.69:228”是阿里云另外一个帐号上的服务器IP地址,用于做每日的数据异地备份。
  调取这台服务器定时同步配置文件,只看同步时间和前面的截图也能对上。

[root@iZ2397Z ~]# crontab -l
*/2 * * * *  /yqd/logs/netlog.sh

#00 00 * * * . /etc/profile;/bin/sh /server/scripts/bak.sh

00 01 * * *  /usr/sbin/ntpdate  10.143.33.50   >/dev/null 2>&1

# 远程备份合同
15  01  * * *  /bin/bash  /yqd/sh/Remote_backup_Img_contra_v1.sh  >/dev/null 2>&1

  脚本“/yqd/sh/Remote_backup_Img_contra_v1.sh”里是使用rsync命令做的数据同步。
  执行“ps -ef|grep rsync”,进程开始时间也是从1点15分开始的。考虑到系统安全保密,这个命令的输出我就不放出来了。

  这样,这个问题的原因算是锁定了。

  2017年12月13日下午13:54,我把这个定时任务的时间修改为1点30分执行。

[root@iZ239Z ~]# ll /var/spool/cron/root 
-rw------- 1 root root 677 Dec 13 13:54 /var/spool/cron/root
[root@iZ239Z ~]# crontab -l
*/2 * * * *  /yqd/logs/netlog.sh

#00 00 * * * . /etc/profile;/bin/sh /server/scripts/bak.sh

00 01 * * *  /usr/sbin/ntpdate  10.143.33.50   >/dev/null 2>&1

# 远程备份合同
30  01  * * *  /bin/bash  /yqd/sh/Remote_backup_Img_contra_v1.sh  >/dev/null 2>&1

  12月14日查看云监控的趋势图:
阿里云监控探测外网出流量达到80M的异常处理_第5张图片
  流量开始增长的时间点和定时同步任务修改后的时间点是一致的,进一步可以确认是由这个备份合同的同步任务导致的公网大流量外出。

  12月15日查看云监控的趋势图:
阿里云监控探测外网出流量达到80M的异常处理_第6张图片
  原因找到后,我已经把这个监控报警值提高到“90000000”KB/min:
阿里云监控探测外网出流量达到80M的异常处理_第7张图片
  同时,10.253.40.103服务器上的定时任务,也已经还原到测试前的时间点。

[root@iZ23Z ~]# crontab -l
*/2 * * * *  /yqd/logs/netlog.sh

#00 00 * * * . /etc/profile;/bin/sh /server/scripts/bak.sh

00 01 * * *  /usr/sbin/ntpdate  10.143.33.50   >/dev/null 2>&1

#远程备份合同
15  01  * * *  /bin/bash  /yqd/sh/Remote_backup_Img_contra_v1.sh  >/dev/null 2>&1