监控甜糖上传流量解决突然没上传速度
摘要:本文介绍了一个用于监控网卡上传流量的自动化脚本,特别适用于需要持续高上传流量的PCDN服务。当检测到上传流量低于预设阈值时,脚本将自动结束相关进程以恢复流量。
正文:
在网络服务领域,尤其是对于依赖持续高上传流量的点对点内容分发网络(PCDN)服务,监控上传流量至关重要。今天,我将与大家分享一个实用的监控脚本,该脚本能够实时监控网卡的上传流量,并在流量低于设定值时自动结束特定进程,以确保服务的连续性和稳定性。
脚本背景:
此脚本的开发初衷源于我在将玩客云设备刷写为Debian系统后,运行甜糖PCDN服务时遇到的问题。我发现甜糖PCDN的YQ项目偶尔会遇到上传流量异常降低的情况,且长时间无法自行恢复。在这种情况下,结束并重启相关进程(如ipes)能够有效地恢复上传速度。
脚本功能:
本脚本是一个自动化的监控工具,旨在实时跟踪并记录特定网卡的上传流量。以下是脚本的关键功能点:
-
实时流量监控:脚本使用netinfo命令来监测指定网卡(例如eth0)的上传流量,并以每秒的速率记录。
-
日志记录:所有监控数据都会被记录在设定的日志目录下,按日期命名的日志文件中,便于后续分析和审计。
-
流量阈值检查:脚本设定了一个流量阈值(默认为50KB/s),一旦监测到的上传流量低于此阈值,脚本将执行预定动作。
-
进程管理:当检测到流量低于阈值时,脚本会自动终止ipes进程,以尝试恢复网络流量至正常水平。
-
定时清理:脚本会自动清理超过7天的旧日志文件,以避免日志目录空间被无限占用。
脚本适用性:
理论上,带有ipes进程的PCDN服务都可以采用此脚本。例如,我发现猕猴桃PCDN同样采用了ipes。
脚本优势:
-
自动化:减少人工监控的需要,实现24/7的无人值守监控。
-
灵活性:用户可以根据实际需求调整流量阈值和日志保留策略。
-
易用性:脚本易于部署和配置,适合技术背景各异的用户。
-
健壮性:通过自动重启关键进程,增强了系统的稳定性和自愈能力。
-
可定制性:脚本提供了基础框架,可根据不同的监控需求进行定制和扩展。
脚本实现:
以下是实现上述功能的脚本代码:
#!/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"
结束语:
监控上传流量并及时响应流量异常是确保PCDN服务质量的关键。虽然本文提供的脚本是一个有效的解决方案,但肯定还有其他更好的方案,欢迎家人们留言讨论。
发表评论