如何通过linux命令获取一个接口的统计信息?

时间:2016-07-15 02:22:29

标签: linux tcp statistics

我们知道某些linux命令可以获取tcp统计信息,例如" netstat -s --tcp" ," ss -s -t" ,但如何获取一个特定界面的统计数据?

1 个答案:

答案 0 :(得分:0)

您可以使用tcpstat

  

tcpstat - 报告网络接口统计信息

tcpstat -i <interface>

如果您想在界面启动时启动它,可以在post-up中使用/etc/network/interfaces

auto enp4s0f1
iface enp4s0f1 inet dhcp
post-up /etc/init.d/tcpstat start enp4s0f1

/etc/init.d/tcpstat是一个init.d脚本,我创建的包含:

#!/bin/bash
#title         :tcpstat
#description   :start/stop/restart tcpstat
#########################################
### install   :  cp tcpstat /etc/init.d/
#                update-rc.d tcpstat defaults
### uninstall :  update-rc.d -f tcpstat remove

usage(){
    echo "Usage: service tcpstat {start|stop|restart} <interface>"
}

DEFAULT_LOCATION="/tmp/dump"
EXEC="/bin/tcpstat_run"

if [ ! -z "$2" ]; then

    if [ ! -z "$3" ]; then
        STORAGE_FILE="$3"
    else
        STORAGE_FILE="${DEFAULT_LOCATION}_$2"
    fi

    if [ -f $PID_FILE ]; then
        echo "file exist"
    fi

    case "$1" in
        start)
            echo "Starting tcpstat service on inteface $2..."

            daemonize -E INTERFACE=$2 -E DUMP_FILE=$STORAGE_FILE $EXEC

            echo -e "\E[31;33m[ OK ]\E[0m"
            ;;
        stop)
            echo "Stopping tcpstat service..."

            pkill -f "tcpstat -i $2"

            echo -e "\E[31;33m[ OK ]\E[0m"
            ;;
        restart|reload)
            "$0" stop "$2"
            "$0" start "$2"
            ;;
        *)
            usage
            exit 1
    esac
else
    usage
fi

exit $?

请注意,我使用daemonize代替start-stop-dameon来兼容RHEL。

daemonize启动位于/bin/tcpstat_run的以下exec:

#!/bin/bash

tcpstat -i "$INTERFACE" > "$DUMP_FILE"&

您可以根据自己的喜好修改这些脚本,尤其是如果您想要将转储保存在特定位置并且在post-down中启用特殊待遇。

例如,如果您按原样尝试,您将获得以下输出:

user@user:~$ tail -f /tmp/dump_enp4s0f1 
Time:1468847225 n=9 avg=66.56   stddev=35.76    bps=958.40
Time:1468847230 n=9 avg=87.33   stddev=40.17    bps=1257.60
Time:1468847235 n=14    avg=130.50  stddev=66.08    bps=2923.20
Time:1468847240 n=3 avg=46.00   stddev=0.00 bps=220.80
Time:1468847245 n=12    avg=58.50   stddev=11.26    bps=1123.20
Time:1468847250 n=9 avg=115.78  stddev=78.32    bps=1667.20
Time:1468847255 n=169   avg=135.22  stddev=188.26   bps=36564.80