监控接口上的网络流量

监控接口上的网络流量

有没有办法监控特定网络接口(比如 eth0)上的流量(例如,实时查看利用率)?

这里的问题在于,盒子上的工具集是固定的,并且几乎是库存的 RHEL 部署,因此无法使用附加工具。

在这里寻找一些基本且通常存在的东西,比如 iostat。

答案1

您想要查看的数据会显示在旧的 ifconfig 中。

watch ifconfig eth0

或者让事情变得更突出:

watch -n 1 -d ifconfig eth0

答案2

我使用 iftop 命令。它实时显示统计数据。

iftop -i eth0

在这里查看一些截图:

http://www.thegeekstuff.com/2008/12/iftop-guide-display-network-interface-bandwidth-usage-on-linux/

答案3

在 2015 年左右的 Linux 上,这可能会更好 watch -n1 -d ip -s link show [interface]

答案4

function humanValue()
{
    h=( '' K M G T P )
    i=1; v=$(( $1 * 8 ))
    while [ $v -gt $(( 1 << 10 * i )) ]; do let i++; done;
    echo -n "$(( $v >> 10 * --i )) ${h[i]}b/s";
}
ifaces=$(ip addr | grep -E "^[0-9]:" | cut -d" " -f2 | tr -d \:)
declare -A RX2 TX2;
while sleep 1; 
do
    date 
    for INTERFACE in $ifaces;
    do
        RX1=$(cat /sys/class/net/${INTERFACE}/statistics/rx_bytes)
        TX1=$(cat /sys/class/net/${INTERFACE}/statistics/tx_bytes)
        DOWN=$(( RX1 - RX2[$INTERFACE] ))
        UP=$(( TX1 - TX2[$INTERFACE] ))
        RX2[$INTERFACE]=$RX1; TX2[$INTERFACE]=$TX1
        echo -e "[ $INTERFACE:\tRX: $(humanValue $DOWN)\t|\tTX: $(humanValue $UP) ]"
    done;
done;

相关内容