如何编写高效的服务器监控脚本?

小贝
预计阅读时长 7 分钟
位置: 首页 抖音 正文
#!/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表示只运行一次并返回第一行数据,然后通过grepawk提取出CPU的使用率。

4、内存使用情况:通过free -m命令获取内存使用情况,并通过awkbc进行计算得出使用百分比。

5、磁盘使用情况:通过df -h /命令获取根目录的磁盘使用情况,并通过awksed提取出使用百分比。

6、写入日志文件:将所有监控数据追加到日志文件中。

7、邮件通知:如果内存或磁盘使用超过设定的阈值(例如80%),则通过mail命令发送邮件通知管理员。

注意事项:

确保你的系统上安装了mail命令,并且配置了邮件服务以便能够发送邮件。

服务器 监控脚本

你可以根据需要调整监控项和阈值。

为了定期执行这个脚本,可以使用cron定时任务,编辑crontab文件(crontab -e),添加如下行以每5分钟运行一次脚本:

  */5 * * * * /path/to/your/script.sh

小伙伴们,上文介绍了“服务器 监控脚本”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

-- 展开阅读全文 --
头像
为什么for循环只生成了一组数据库?
« 上一篇 2024-12-14
存储速度,如何优化以提高数据访问效率?
下一篇 » 2024-12-14
取消
微信二维码
支付宝二维码

发表评论

暂无评论,1人围观

目录[+]