自从11月初我开始全面启用阿里云自身的“云监控”功能,希望借此和之前搭建的zabbix监控系统组合在一起,对系统安全至少可以启到“双保险”的作用。
在学习和优化相关监控项参数的过程中,有1个监控项“公网网络出流量”引起我的注意。
经过反复调试,我把所有金融云上的服务器,“公网网络出流量”设定为“8500000KB/min”。结果,“yqd-app02”(IP地址:10.253.40.103)的邮件报警就发到我的邮箱。
通过“云监控”发来的邮件报警,发现设定的报警值“8500000KB/min”相当于“8MBytes”,而这台服务器的日常外出流量长时间在80M左右,而且,还很有规律。
以下是1天的趋势图:注意流量暴增的时间点
以下是7天趋势图:
以下是14天趋势图:
非常有规律。
登录到这台服务器,使用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日查看云监控的趋势图:
流量开始增长的时间点和定时同步任务修改后的时间点是一致的,进一步可以确认是由这个备份合同的同步任务导致的公网大流量外出。
12月15日查看云监控的趋势图:
原因找到后,我已经把这个监控报警值提高到“90000000”KB/min:
同时,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