网络流量监控:bash-guide中的iftop命令
【免费下载链接】bash-guide A guide to learn bash 项目地址: 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.md和pidstat_command_guide.md等资源,可以构建完整的系统监控解决方案。
5.1 知识拓展路线
- 网络层监控:iftop → tcpdump抓包分析
- 应用层监控:结合host_command_demo.sh进行DNS监控
- 自动化运维:使用args_demo.sh的参数处理能力扩展脚本功能
5.2 下期预告
下一篇我们将介绍《bash脚本实现网络流量异常检测与自动阻断》,结合condition_expressions_demo.sh的条件判断和iptables防火墙,打造主动防御系统。
点赞收藏本文,关注bash-guide项目获取更多系统监控技巧!如有任何问题,欢迎在项目README.md的评论区留言交流。
【免费下载链接】bash-guide A guide to learn bash 项目地址: https://gitcode.com/gh_mirrors/ba/bash-guide
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



