文章目录
- 前言
- 一、脚本实现
- 1. shell脚本实现
- 2. 脚本功能概览
- 二、设置定时执行
- 1. 编辑cron任务表
- 2. 设置定时任务
- 三、通知结果示例
- 总结
前言
在当今数字化与网络化日益普及的时代,系统管理与维护成为了确保业务连续性和数据安全的关键环节。其中,监控系统的健康状况与性能表现是必不可少的一环。本文档旨在介绍一个实用的bash脚本,该脚本能够实时监控系统的内存使用情况,并在内存使用率超过预设阈值时,自动发送警告邮件给系统管理员。通过这种自动化监控机制,可以及时发现内存使用问题,避免系统性能的下降或崩溃,从而保障业务的平稳运行。
一、脚本实现
1. shell脚本实现
#!/bin/bash# 配置
THRESHOLD=85 # 内存使用率阈值(%)
MAIL_TO="your-email@example.com" # 接收邮件的地址# 检查内存使用率是否超过了阈值
MEMORY_USAGE=$(free | awk 'NR==2{printf "%.2f\n", $3*100/$2 }')
if (( $(echo "$MEMORY_USAGE > $THRESHOLD" | bc -l) )); then# 找出占用空间较大的目录LARGE_DIRS=$(du -ah --exclude='/proc' / | sort -hr | head -n 10)# 获取主机的ip地址ip_addr=$(ip addr | grep 'inet ' | awk '{print $2}'| tail -n 1 | grep -oP '\d+\.\d+\.\d+\.\d+')# 构建邮件内容MESSAGE="主机名:$(hostname)\n主机IP:$ip_addr\n\n目前内存使用已经超过:$THRESHOLD%\n目前内存使用率为:$MEMORY_USAGE%\n\n占用内存最多的前10条数据是:\n$LARGE_DIRS"# 发送邮件echo -e "$MESSAGE" | mail -s "内存使用阈值警告" $MAIL_TOecho '邮件发送成功'
fiexit 0
把这个脚本保存为/opt/monitor/memory_monitor.sh
文件,并添加执行权限。
chmod a+x /opt/monitor/memory_monitor.sh
2. 脚本功能概览
- 内存使用率监控:脚本通过/proc/meminfo文件获取系统内存的总使用情况,计算当前内存使用率,并与预先设定的阈值(例如85%)进行比较。
- 发送警告邮件:当内存使用率超过阈值时,脚本会自动查找系统中占用空间较大的目录,并获取主机的IP地址。然后,构建包含主机名、IP地址、当前内存使用率以及占用内存最多的前10个目录的邮件内容,通过mail命令发送给指定的邮箱地址。
- 自动化与便捷性:通过将此脚本集成到系统任务调度中(如通过cron任务),可以实现定期监控与即时响应,极大地提高了系统管理的效率与响应速度。
二、设置定时执行
1. 编辑cron任务表
crontab -e
2. 设置定时任务
设置每天9点执行/opt/monitor/memory_monitor.sh
脚本
0 9 * * * /opt/monitor/memory_monitor.sh
这样设置后每天9点都会执行/opt/monitor/memory_monitor.sh
脚本,如果检测到内存使用超过设置阈值就会发邮件通知。
三、通知结果示例
通知结果示例如下。
总结
通过上述步骤,你可以轻松地在自己的服务器上设置内存监控和告警。这将帮助你在系统面临压力时迅速采取行动,防止潜在的问题升级为严重的故障。