在CentOS上进行简易流量监控
你好。
我之前在SDN/NFV基础设施上有机会尝试基础设施本身和虚拟负载均衡器,只是捕捉到流量被中继和负载均衡的情况觉得无聊,所以我决定在CentOS6.x上制作一个简单的流量监控器,虽然只是用来“观看”。
实际上,我只是每秒读取/sys/class/net目录下接口的统计信息文件(文本),然后使用ncurses来更新屏幕显示。但当我真正发送流量时,我可以相当准确地监控它(感觉流量正在流动),这非常有趣。
看着的文件
我正在查看这些文件。我认为,由于还有其他一些关于碰撞数等的信息,所以可以尝试查看目录。
请将“eth0”替换为您正在使用的接口名。
这些文件中只存储了一些数量,如数据包数和字节数。
/sys/class/net/eth0/statistics/rx_packets
/sys/class/net/eth0/statistics/rx_bytes
/sys/class/net/eth0/statistics/rx_errors
/sys/class/net/eth0/statistics/rx_dropped
/sys/class/net/eth0/statistics/tx_packets
/sys/class/net/eth0/statistics/tx_bytes
/sys/class/net/eth0/statistics/tx_errors
/sys/class/net/eth0/statistics/tx_dropped
就是这样
由于使用了ncurses,这个是以OpenStack的Horizon的控制台为前提的,所以不是现代化的风格。
【附加禮物】L2 透明
因为我想在NFV基础设施上进行试验,所以我希望模拟一个L2透明的VNF(虚拟网络功能)。为此,在运行这个监控程序的Linux系统上,我将左右的接口通过Linux桥接连接起来,并将输入的命令记录下来作为备忘录。
下面的”brvnf”是桥接名称,可以随意取。在下面的例子中,我将其与[eth1-brvnf-eth2]相连,实现透明的运行。
brctl addbr brvnf
brctl addif brvnf eth1
brctl addif brvnf eth2
ifconfig brvnf up
概括起来
对于看起来很繁琐的流量监控,如果在Linux上,可以参考这些文件并简单地进行操作。
由于是纯文本,因此可以很容易地在Shell脚本等中处理。
整个源代码已经上传到这里(github),如果您有兴趣,请随意提取。
那我们就这样吧。