网络流量监控:bash-guide中的iftop命令

网络流量监控:bash-guide中的iftop命令

【免费下载链接】bash-guide A guide to learn bash 【免费下载链接】bash-guide 项目地址: https://gitcode.com/gh_mirrors/ba/bash-guide

你是否曾遇到服务器带宽突然飙升却找不到原因?是否想实时查看哪些IP在占用你的网络资源?本文将带你掌握iftop命令的使用方法,通过bash脚本实现网络流量监控与异常告警,让你轻松应对网络拥塞问题。读完本文你将学会:iftop基础监控、流量统计分析、自动化告警脚本编写,以及与bash-guide中其他监控工具的联动使用。

一、iftop命令快速上手

iftop(Interface TOP)是一款实时网络流量监控工具,能够按连接或主机显示网络带宽使用情况。虽然bash-guide中未直接提供iftop相关文件,但我们可以结合系统自带工具和bash脚本实现强大的监控功能。

1.1 安装与基本语法

在Debian/Ubuntu系统中安装iftop:

sudo apt-get install iftop -y

基本监控命令:

iftop -i eth0 -n -B  # 监控eth0网卡,以字节为单位显示,不解析主机名

1.2 核心参数解析

参数功能描述应用场景
-i指定监控网卡多网卡服务器
-n禁用DNS解析提高监控性能
-B以字节为单位精确流量统计
-t文本模式输出适合脚本处理
-s 5监控5秒后退出批量统计场景

二、实用监控脚本编写

结合bash-guide中的error_handling_demo.sh错误处理机制,我们可以编写一个带告警功能的流量监控脚本:

#!/bin/bash
INTERFACE="eth0"
THRESHOLD=10485760  # 10MB/s
LOG_FILE="/var/log/traffic_monitor.log"

# 错误处理函数(参考error_handling_demo.sh)
handle_error() {
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1" >> $LOG_FILE
    exit 1
}

# 检查iftop是否安装
command -v iftop >/dev/null 2>&1 || { handle_error "iftop is not installed"; }

# 实时监控并记录超限流量
iftop -i $INTERFACE -t -s 10 | awk -v threshold=$THRESHOLD '
    /Total send rate/ {
        send_rate = $4
        if (send_rate > threshold) {
            print "[$(date +'%Y-%m-%d %H:%M:%S')] High traffic detected: " send_rate >> "'$LOG_FILE'"
            # 可添加邮件告警命令
        }
    }
' || handle_error "Monitoring failed"

三、与系统监控工具联动

bash-guide提供了多种系统监控资源,可与iftop配合使用:

3.1 进程级流量定位

结合pidstat_command_guide.md中的进程监控能力,使用以下命令定位高流量进程:

# 查找占用带宽最高的进程
sudo netstat -tunp | grep ESTABLISHED | awk '{print $7}' | cut -d/ -f1 | sort | uniq -c | sort -nr | head -1

3.2 系统资源综合监控

参考system_monitor.md中的vmstat和iostat命令,实现网络与系统资源的协同监控:

# 同时监控网络流量和系统资源
watch -n 2 "iftop -i eth0 -t -s 1 | grep Total; vmstat 1 1 | tail -1"

四、高级应用:流量数据持久化

利用bash-guide中的bc_math_demo.sh进行流量数据计算,将监控结果存入CSV文件以便后续分析:

#!/bin/bash
# 流量数据记录脚本(结合bc_math_demo.sh的数值计算功能)
INTERFACE="eth0"
OUTPUT_FILE="traffic_stats.csv"

# 初始化CSV文件
echo "timestamp,tx_bytes,rx_bytes" > $OUTPUT_FILE

while true; do
    # 获取5秒内的流量数据
    DATA=$(iftop -i $INTERFACE -t -s 5 | grep "Total transmit" | awk '{print $3}')
    TX=$(echo $DATA | cut -d',' -f1)
    RX=$(echo $DATA | cut -d',' -f2)
    
    # 转换为MB(使用bc进行浮点计算,参考bc_math_demo.sh)
    TX_MB=$(echo "scale=2; $TX / 1024 / 1024" | bc)
    RX_MB=$(echo "scale=2; $RX / 1024 / 1024" | bc)
    
    # 写入CSV
    echo "$(date +'%Y-%m-%d %H:%M:%S'),$TX_MB,$RX_MB" >> $OUTPUT_FILE
    sleep 5
done

五、总结与扩展

通过本文介绍的方法,你已经掌握了基于iftop的网络流量监控技巧。结合bash-guide中的system_monitor.mdpidstat_command_guide.md等资源,可以构建完整的系统监控解决方案。

5.1 知识拓展路线

  1. 网络层监控:iftop → tcpdump抓包分析
  2. 应用层监控:结合host_command_demo.sh进行DNS监控
  3. 自动化运维:使用args_demo.sh的参数处理能力扩展脚本功能

5.2 下期预告

下一篇我们将介绍《bash脚本实现网络流量异常检测与自动阻断》,结合condition_expressions_demo.sh的条件判断和iptables防火墙,打造主动防御系统。

点赞收藏本文,关注bash-guide项目获取更多系统监控技巧!如有任何问题,欢迎在项目README.md的评论区留言交流。

【免费下载链接】bash-guide A guide to learn bash 【免费下载链接】bash-guide 项目地址: https://gitcode.com/gh_mirrors/ba/bash-guide

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值