rtop自动化监控脚本:结合cron实现定时监控和告警的完整指南
【免费下载链接】rtoprtop is an interactive, remote system monitoring tool based on SSH项目地址: https://gitcode.com/gh_mirrors/rt/rtop
rtop是一款基于SSH的交互式远程系统监控工具,它能通过SSH连接实时监控服务器的CPU、内存、网络和进程状态。本指南将教你如何通过cron任务实现rtop的定时监控与告警功能,让服务器异常情况及时被发现和处理。
快速了解rtop:远程监控的核心功能
rtop通过SSH协议连接远程服务器,无需在目标主机安装任何代理程序,就能获取关键系统指标。从main.go的代码实现可以看到,它支持自定义监控间隔(默认5秒),并能显示以下核心信息:
- 系统负载:1分钟、5分钟、15分钟平均负载值
- CPU状态:用户态、系统态、空闲时间等详细占比
- 内存使用:物理内存和交换分区的使用情况(包括缓存和缓冲区)
- 文件系统:各挂载点的磁盘空间使用情况
- 网络接口:各网卡的IP配置及流量统计
准备工作:安装与基本配置
1. 安装rtop
首先通过Git克隆项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/rt/rtop cd rtop go build -o rtop sudo cp rtop /usr/local/bin/2. 验证基本功能
执行以下命令测试rtop是否正常工作(默认使用~/.ssh/id_rsa密钥):
rtop user@remote-host 10 # 每10秒刷新一次监控数据根据main.go的命令行定义,rtop支持通过-i参数指定密钥文件,例如:
rtop -i ~/.ssh/custom_key user@remote-host 5实现自动化:编写rtop监控脚本
创建监控结果输出脚本
创建/usr/local/bin/rtop-monitor.sh文件,用于执行监控并输出结果到日志:
#!/bin/bash # rtop监控脚本,保存结果到日志并检查告警条件 # 配置参数 REMOTE_HOST="user@remote-server" INTERVAL=30 # 监控间隔(秒) LOG_FILE="/var/log/rtop/monitor.log" ALERT_THRESHOLD_CPU=80 # CPU使用率告警阈值(%) ALERT_THRESHOLD_MEM=90 # 内存使用率告警阈值(%) # 确保日志目录存在 mkdir -p $(dirname $LOG_FILE) # 执行rtop并保存输出 echo "[$(date +'%Y-%m-%d %H:%M:%S')] Starting rtop monitoring" >> $LOG_FILE rtop $REMOTE_HOST $INTERVAL > /tmp/rtop_output.txt 2>&1 # 提取关键指标(示例:CPU使用率和内存使用率) CPU_USAGE=$(grep "CPU:" /tmp/rtop_output.txt | awk -F'user, ' '{print $1}' | awk '{print $1}') MEM_USED=$(grep "used =" /tmp/rtop_output.txt | awk '{print $3}') # 记录指标到日志 echo "CPU Usage: ${CPU_USAGE}%, Memory Used: ${MEM_USED}" >> $LOG_FILE # 检查告警条件 if (( $(echo "$CPU_USAGE > $ALERT_THRESHOLD_CPU" | bc -l) )); then echo "ALERT: CPU usage exceeds threshold (${CPU_USAGE}%)" >> $LOG_FILE # 这里可以添加邮件/短信告警命令 fi if (( $(echo "$MEM_USED > $ALERT_THRESHOLD_MEM" | bc -l) )); then echo "ALERT: Memory usage exceeds threshold (${MEM_USED}%)" >> $LOG_FILE # 这里可以添加邮件/短信告警命令 fi赋予脚本执行权限
chmod +x /usr/local/bin/rtop-monitor.sh设置cron定时任务
编辑crontab配置
执行crontab -e命令,添加以下配置实现每小时执行一次监控:
# 每小时的第5分钟执行rtop监控脚本 5 * * * * /usr/local/bin/rtop-monitor.sh >> /var/log/rtop/cron.log 2>&1常用cron时间表达式
根据监控需求调整执行频率:
*/10 * * * *:每10分钟执行一次0 */2 * * *:每2小时执行一次0 8,18 * * *:每天8点和18点执行
告警功能实现
邮件告警配置
在监控脚本中添加邮件发送功能(需安装mailutils):
# 添加到告警条件判断后 echo "ALERT: CPU usage exceeds threshold (${CPU_USAGE}%)" | mail -s "Server Alert: High CPU Usage" admin@example.com日志轮转配置
创建/etc/logrotate.d/rtop文件,防止日志文件过大:
/var/log/rtop/*.log { daily missingok rotate 7 compress delaycompress notifempty create 0640 root adm }故障排除与优化
常见问题解决
- SSH连接失败:检查密钥权限(推荐600)和远程服务器的
~/.ssh/authorized_keys配置 - 监控数据不完整:确保远程服务器安装了
procps工具包(提供ps、top等命令) - 脚本执行超时:在cron任务中添加超时限制,例如:
5 * * * * timeout 300 /usr/local/bin/rtop-monitor.sh >> /var/log/rtop/cron.log 2>&1
性能优化建议
- 对于多服务器监控,可使用循环遍历多个主机
- 降低监控频率(如每15分钟一次)减少系统资源消耗
- 使用
tmux或screen运行交互式rtop会话,便于后台持续监控
总结
通过本文介绍的方法,你已经掌握了如何将rtop与cron结合,构建一套轻量级的服务器监控告警系统。这种方案的优势在于:无需复杂配置、不依赖第三方服务、通过SSH确保安全性。根据实际需求调整监控指标和告警阈值,可以有效提升服务器管理效率。
如果你需要更高级的功能,可以参考stats.go中的指标收集实现,扩展自定义监控项。
【免费下载链接】rtoprtop is an interactive, remote system monitoring tool based on SSH项目地址: https://gitcode.com/gh_mirrors/rt/rtop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考