
正文:
在网络服务领域,尤其是对于依赖持续高上传流量的点对点内容分发网络(PCDN)服务,监控上传流量至关重要。今天,我将与大家分享一个实用的监控脚本,该脚本能够实时监控网卡的上传流量,并在流量低于设定值时自动结束特定进程,以确保服务的连续性和稳定性。
脚本背景:
此脚本的开发初衷源于我在将玩客云设备刷写为Debian系统后,运行甜糖PCDN服务时遇到的问题。我发现甜糖PCDN的YQ项目偶尔会遇到上传流量异常降低的情况,且长时间无法自行恢复。在这种情况下,结束并重启相关进程(如ipes)能够有效地恢复上传速度。
脚本功能:
本脚本是一个自动化的监控工具,旨在实时跟踪并记录特定网卡的上传流量。以下是脚本的关键功能点:
1. 实时流量监控:脚本使用netinfo命令来监测指定网卡(例如eth0)的上传流量,并以每秒的速率记录。
2. 日志记录:所有监控数据都会被记录在设定的日志目录下,按日期命名的日志文件中,便于后续分析和审计。
3. 流量阈值检查:脚本设定了一个流量阈值(默认为50KB/s),一旦监测到的上传流量低于此阈值,脚本将执行预定动作。
4. 进程管理:当检测到流量低于阈值时,脚本会自动终止ipes进程,以尝试恢复网络流量至正常水平。
5. 定时清理:脚本会自动清理超过7天的旧日志文件,以避免日志目录空间被无限占用。
脚本适用性:
理论上,带有ipes进程的PCDN服务都可以采用此脚本。例如,我发现猕猴桃PCDN同样采用了ipes。
脚本优势:
1. 自动化:减少人工监控的需要,实现24/7的无人值守监控。
2. 灵活性:用户可以根据实际需求调整流量阈值和日志保留策略。
3. 易用性:脚本易于部署和配置,适合技术背景各异的用户。
4. 健壮性:通过自动重启关键进程,增强了系统的稳定性和自愈能力。
5. 可定制性:脚本提供了基础框架,可根据不同的监控需求进行定制和扩展。
脚本实现:
以下是实现上述功能的脚本代码:
```bash
#!/bin/bash
# 监控网卡流量,并输出到日志文件中
# 定义环境变量,根据自己系统更改
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:~/bin
export LANG=en
# 日志目录
LOG_DIR="/usr/jklog"
# 日志文件名称
FILE_NAME="$(date +%F).log"
# 监控的网卡名称
NET_NAME="eth0"
THRESHOLD=50 # KB/s
# 确保日志目录存在
[ -d "$LOG_DIR" ] || mkdir -p "$LOG_DIR"
# 进入日志目录
cd "$LOG_DIR"
# 清理超过7天的日志文件
find . -name "*.log" -mtime +5 -exec rm {} \;
# 在日志文件中记录当前时间
date +"%H:%M" >> "$FILE_NAME"
# 监控网卡名称DEV 1 5,输出5秒内平均上传速度
netinfo=$(sar -n DEV 1 5 | grep -i average | grep "$NET_NAME" | awk '{print $6}')
echo "$NET_NAME 5秒内平均上传流量:$(echo $netinfo | cut -d':' -f2)KB/s" >> "$FILE_NAME"
# 检查流量是否低于阈值
if (( $(echo "$netinfo < $THRESHOLD" | bc -l) )); then
echo "由于上传流量低于50KB/S,终止了 ipes 进程" >> "$FILE_NAME"
killall ipes
else
echo "上传流量正常" >> "$FILE_NAME"
fi
echo '#########################' >> "$FILE_NAME"
```
------
[wv]
上述脚本代码已保存至 /usr/ 目录下的 nctoro_com.sh 文件中。请确保在执行脚本之前,赋予执行权限。chmod +x nctoro_com.sh
直接运行(用于测试)
cd /usr
bash nctoro_com.sh
等待一会,就可查看/usr/jklog/里的日志文件。
Cron任务设置:
为了使脚本能够定期执行,您可以按照以下步骤设置cron任务:
1. 将上述脚本保存为一个文件,例如nctoro_com.sh,并赋予执行权限:
chmod +x nctoro_com.sh
2. 编辑crontab文件来添加一个定时任务:
crontab -e添加以下行,假设每5分钟检查一次:
*/5 * * * * /usr/nctoro_com.sh请将/usr/nctoro_com.sh替换为您的脚本实际路径和脚本名。
3. 保存crontab文件:
4. 写入内容后,输入Ctrl + O,然后按Enter确认文件名。
5. 输入Ctrl + X退出并保存更改。
6. 重启cron服务:
service cron restart
[/wv]
结束语:
监控上传流量并及时响应流量异常是确保PCDN服务质量的关键。虽然本文提供的脚本是一个有效的解决方案,但肯定还有其他更好的方案,欢迎家人们留言讨论。
发表评论