今天来给大家讲讲一些对于网卡流量的想法,网卡流量代表着客户的访问你服务的数据量,但是这里量是有阈值的,如果你的网卡的流量居高不下,那就有可能你的服务器被攻击了,所以,监控网卡的流量是事关重要的事情,说到监控,我们便可以想到,写脚本或者利用监控软件来做监控,zabbix监控软件就提供了很好的平台;zabbix作为一个热门的监控软件,不仅比较全面的监控模板,而且使用者还可以自己自定义keys,做监控。
自定义监控处理有监控软件外,我们还需要获取到数据才能实现我们监控的目的;对于如何获取到网卡流量的数据,我这里提供一个命令Sar,当然还有其它的命令,这里就不多说了;Sar命令可以为我们提供网卡的流量的信息,所以基于sar我们可以实现对网卡流量的实时监控。接下来我们先谈谈sar命令的用法。
一、sar命令的使用
Sar命令主要的作用是用来查看网卡的流量的,linux/centos默认是没有装的,所以需要yum安装才能使用。
#yum install -y sysstat
通过sar –h我们可以查看得到sar的用法
[root@mysql etc]# sar -h 用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ] 主选项和报告: -b I/O 和传输速率信息状况 -B 分页状况 -d 块设备状况 -H 交换空间利用率 -I { <中断> | SUM | ALL | XALL } 中断信息状况 -m { <关键词> [,...] | ALL } 电源管理统计信息 关键字: CPU CPU 频率 FAN 风扇速度 \t\tFREQ\tCPU 平均时钟频率 IN 输入电压 TEMP 设备温度 \t\tUSB\t连接的USB 设备 -n { <关键词> [,...] | ALL } 网络统计信息 关键词可以是: DEV 网卡 EDEV 网卡 (错误)
接下来我们使用它来获取网卡的信息,比如查看网卡流量的每秒显示一次,共显示1次的网卡流量信息。
[root@mysql etc]# sar -n DEV 1 1 Linux 3.10.0-514.el7.x86_64 (mysql) 2018年03月14日 _x86_64_ (4 CPU) 15时00分00秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 15时00分01秒 eth0 37.00 36.00 6.54 24.27 0.00 0.00 0.00 15时00分01秒 lo 23.00 23.00 18.17 18.17 0.00 0.00 0.00 平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 平均时间: eth0 37.00 36.00 6.54 24.27 0.00 0.00 0.00 平均时间: lo 23.00 23.00 18.17 18.17 0.00 0.00 0.00
我们可以看到,使用sar命令它已经把结果给统计出来的,
IFACE 表示设备名称
rxpck/s 每秒接收的包的数量
txpck/s 每秒发出的包的数量
rxKB/s 每秒接收的数据量,单位KByte
txKB/s 每秒发出的数据量,单位KByte
若服务器丢包非常严重,需要查看网卡流量是否异常。接收数据部分 rxpck大于4000,或者rxKB大于5000,则有可能被攻击了,正常服务器网卡流量没有这么大。除非自己在拷贝数据。
接下来,我们谈谈sar命令的一些常用的一些用法。
sar -n DEV #查看当天从零点到当前时间的网卡流量信息
sar -n DEV 1 1 #每秒显示一次,共显示1次
sar -n DEV -f /var/log/sa/saxx 查看xx日的网卡流量历史
sar -q #查看历史负载
sar -b #查看磁盘读写
二、使用sar命令截取rxpck/s与rxKB/s的值
有了sar命令查看网卡的流量,我们就可以实现监控了,结合zabbix做对网卡的监控rxpck/s与rxKB/s的值
通过sar,命令并结合awk获取你网卡的rxpck/s的值,我这里的网卡是eth0
[root@mysql etc]# sar -n DEV 1 1 | awk 'NR==8{print $3}' 37.00
获取你网卡的rxKB/s的值
[root@mysql etc]# sar -n DEV 1 1 | awk 'NR==8{print $5}' 10.63
我们可以发现我们想要的数据已经是截取出来了
三、zabbix自定义keys做监控
1、在zabbix客户端zabbix_agentd.conf文件添加自定义keys,并重启客户端
# vim /usr/local/zabbix/etc/zabbix_agentd.conf
UnsafeUserParameters=1 UserParameter=receivce_data,sar -n DEV 1 1 | awk 'NR==8{print $5}' UserParameter=receivce_package_number,sar -n DEV 1 1 | awk 'NR==8{print $3}'
2、zabbix测试是否能获到zabbix客户端的健值的数据
[root@zabbix ~]# zabbix_get -s 192.168.1.200 -k receivce_data 7.79
[root@zabbix ~]# zabbix_get -s 192.168.1.200 -k receivce_package_number 52.00
从这里可以发现是已经可以获取的
3、zabbix服务端监控出图
到zabbix的web页面创建network_receivce_package_number 和network_receivce_data模板,点击:配置à模板à创建模板,如图1、图2所示
图1 network_receivce_package_number模板的创建
图2 network_receivce_data模板的创建
4、创建监控项,点击: network_receivce_package_number /network_receivce_dataà监控项à创建监控项,但是要注意的是你的键值是你的自定义keys的名字。如图3、图4所示:
图3 network_receivce_package_number模板添加监控项
图4 network_receivce_data模板添加监控项
5、添加图像,绑定network_receivce_package_number /network_receivce_data各自的监控项。如图5、图6所示
图5 network_receivce_package_numbe模板绑定监控项
图6 network_rdata模板绑定监控项
6、添加network_receivce_package_number /network_receivce_data触发条件,为做告警使用,如图7、图8所示
network_receivce_package_number的阈值我们可以设置为4000,因为正常的服务器的包的数量没那么大。(设置最新T值大于4000时,触发告警)
图7 network_receivce_package_number模板添加触发器
network_receivce_datar的阈值我们可以设置为5000(相当于5M),因为正常的服务器的流量没那么大。(设置最新T值大于5000时,触发告警)
图8 network_receivce_data模板添加触发器
7、绑定主机,出图,出数据。
到了这一步,我们的自定义keys监控就基本完成了;但是,我们的自定义keys毕竟只是一个模板,并不能够出图出数据,所以,这就需要人为的让主机绑定模板,这样才能出图出数据。结果如图9所示
图9 主机绑定模板
#查看图像,查看获取的数据,是否正确,如图10、图11所示
图10 network_receivce_package_number出图数据
图11 network_receivce_data出图
#可以发现,获取的数据和出图都已经达到我们的目的了。自动义对网络流量的的监控已经成功了。
四、总结
基于zabbix和sar监控网卡流量的监控完成了,但是不是觉得没啥作用,是的,在没有告警的情况下,是啥用的,说到底是没人看。所以我们需要告警,基于告警的话,在这里可以参考文章,这里有搭建zabbix告警处理的部署zabbix邮件告警,一点小分享,希望对你有用。
原文地址:http://blog.51cto.com/xiaozhagn/2086835