如何编写高效的服务器监控脚本?
#!/bin/bash 定义日志文件路径 LOG_FILE="/var/log/server_monitor.log" 获取当前日期和时间 current_time=$(date "+%Y-%m-%d %H:%M:%S") 获取CPU使用率 cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}') 获取内存使用情况 memory_total=$(free -m | grep Mem | awk '{print $2}') memory_used=$(free -m | grep Mem | awk '{print $3}') memory_usage=$(echo "scale=2; ($memory_used / $memory_total) * 100" | bc) 获取磁盘使用情况 disk_usage=$(df -h / | grep / | awk '{print $5}' | sed 's/%//g') 将监控数据写入日志文件 echo "$current_time CPU Usage: $cpu_usage%, Memory Usage: $memory_usage%, Disk Usage: $disk_usage%" >> $LOG_FILE 发送邮件通知(如果需要) email_threshold=80 if (( $(echo "$memory_usage > $email_threshold" | bc -l) )); then echo "Warning: High memory usage detected!" | mail -s "Server Alert" admin@example.com fi if (( $(echo "$disk_usage > $email_threshold" | bc -l) )); then echo "Warning: High disk usage detected!" | mail -s "Server Alert" admin@example.com fi
说明:
1、日志文件路径:LOG_FILE="/var/log/server_monitor.log"
定义了日志文件的存储位置,你可以根据实际需求更改路径。
2、获取当前日期和时间:通过date
命令获取当前的日期和时间。
3、CPU使用率:通过top
命令获取CPU的使用率。top -bn1
表示只运行一次并返回第一行数据,然后通过grep
和awk
提取出CPU的使用率。
4、内存使用情况:通过free -m
命令获取内存使用情况,并通过awk
和bc
进行计算得出使用百分比。
5、磁盘使用情况:通过df -h /
命令获取根目录的磁盘使用情况,并通过awk
和sed
提取出使用百分比。
6、写入日志文件:将所有监控数据追加到日志文件中。
7、邮件通知:如果内存或磁盘使用超过设定的阈值(例如80%),则通过mail
命令发送邮件通知管理员。
注意事项:
确保你的系统上安装了mail
命令,并且配置了邮件服务以便能够发送邮件。
你可以根据需要调整监控项和阈值。
为了定期执行这个脚本,可以使用cron定时任务,编辑crontab文件(crontab -e
),添加如下行以每5分钟运行一次脚本:
*/5 * * * * /path/to/your/script.sh
小伙伴们,上文介绍了“服务器 监控脚本”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
-- 展开阅读全文 --
暂无评论,1人围观