一:介绍
网络的性能通常用吞吐率(throughput)这个指标来衡量。常用的网络吞吐率的单位有:PPS(即每秒发送多少个分组数据包)、BPS(Bytes Per Second;即每秒发送多少字节)、bPS (bits Per Second;即每秒发送多少比特)、TPS(TransactionsPer Second;即每秒完成多少次发送过程)。
pps:(包每秒)包转发率标志了交换机转发数据包能力的大小。一般交换机的包转发率在几十Kpps到几百Mpps。包转发速率是指交换机每秒可以转发多少百万个数据(Mpps)。
这几天,有应用运维要求监控某些服务器的pps。研究了下:
首先,需要在服务器上自定义监控脚本
二:原理(以下摘自网络翻译)
Linux上有很多流量监控工具,可以对网络流量进行监控/分类,并在流行的用户界面中报告实时的流量统计。这些工具中的大多数(例如,ntopng,iftop)都由libpcap提供支持,这是一个数据包捕获库,用于监视用户空间中的网络流量。但是,尽管它们具有多功能性,但由于与用户空间数据包捕获相关的开销,基于libpcap的网络监视工具无法扩展以处理多千兆位速率网络接口上的流量。
我将介绍一些简单的shell脚本,这些脚本可以基于每个接口监控网络流量,而不依赖于缓慢的libpcap库。这些脚本足够快,可以支持多千兆速率,但只有在您对每个接口的“聚合”网络统计信息感兴趣时才适用。
脚本的秘密在于sysfs虚拟文件系统,内核使用该文件系统将设备或驱动程序相关信息导出到用户空间。网络接口相关的统计信息通过/ sys / class / net / <ethX> / statistics导出。
- / sys / class / net / eth0 / statistics / rx_packets:收到的数据包数量
- / sys / class / net / eth0 / statistics / tx_packets:传输的数据包数量
- / sys / class / net / eth0 / statistics / rx_bytes:收到的字节数
- / sys / class / net / eth0 / statistics / tx_bytes:传输的字节数
- / sys / class / net / eth0 / statistics / rx_dropped:接收到的数据包数量
- / sys / class / net / eth0 / statistics / tx_dropped:传输时丢弃的数据包数量
存储在文件中的数字是由内核实时自动刷新的。因此,您可以编写基于这些文件计算流量统计的脚本
三:客户端自定义脚本并修改agent
在zabbix的安装目录下有个scripts目录,在里面新建个netpps.py的脚本,内容如下(本来想用subprocess模板,但是服务器的模块太老,没有output方法,只好用os.system()):
1 #!/usr/bin/env python 2 3 import os,sys 4 5 if sys.argv[2] == ‘rx‘: 6 7 commond = ‘cat /sys/class/net/‘+sys.argv[1]+‘/statistics/rx_packets‘ 8 os.system(commond) 9 elif sys.argv[2] == ‘tx‘: 10 commond = ‘cat /sys/class/net/‘+sys.argv[1]+‘/statistics/tx_packets‘ 11 os.system(commond) 12 else: 13 print "problem"
chmod -R 777 netpps.py #因为是以zabbix用户运行
修改zabbix_agentd.conf,添加
UserParameter=netpps[*], python /etc/zabbix/scripts/netpps.py $1 $2
注意:netpps[*] 相当于后面的python /etc/zabbix/scripts/netpps.py $1 $2;这是有参数的添加方式,如果脚本无需添加脚本,可以 UserParameter=netpps, python /etc/zabbix/scripts/netpps.py。
修改完成重启agent,service zabbix-agent restart
可以在server或对应的proxy端做测试
四:zabbix新增item
如下图,分别新增rx和tx
单位就是包每秒,储存值选差量(每秒速率),本次取到的值与上次取到值的差再处于时间间隔。
可以根据运维需求制定相应的trigger。
参考:http://xmodulo.com/measure-packets-per-second-throughput-high-speed-network-interface.html
http://www.txrjy.com/thread-918227-1-1.html
http://www.ttlsa.com/zabbix/zabbix-user-parameters/