自动检查 EC2 磁盘空间并在磁盘空间不足时收到警报的最简单方法?

DaB*_*ter 26 linux disk-space-utilization amazon-ec2

运行 Amazon Linux AMI。CloudWatch 似乎不检查可用磁盘空间。我有许多服务器,理想情况下不想为每个服务器配置邮件服务器、检查磁盘空间的脚本等。

有没有更简单的方法来做到这一点?

小智 13

截至 2012 年 3 月,亚马逊为此提供了脚本:

适用于 Linux 的 Amazon CloudWatch 监控脚本http : //aws.amazon.com/code/8720044071969977


Cal*_*leb 6

EC2 控制和监视工具无法为您提供这些数据,因为您的实例的文件系统只能由实例本身访问。硬件的基本架构和安全模型都需要这种限制。想一想,如果您的计算机外的软件可以访问您硬盘上的文件,那该有多糟糕!

这是使 cron(无论如何都安装在大多数系统上)定期检查这些数据的低调方法。无论如何,您的系统应该具有处理根邮件通知的最低要求。我建议至少有一个实际的外发邮件代理,并配置 root 或管理员别名,以便在您管理的所有系统上转发给您。许多程序包括cron期望这种配置。

您可以将其添加到您的 crontab 中:

0 0 * * * test $(df / | grep ^/ | awk '{print $4}') -lt 1048576 && echo "Warning: Free disk space is less than 1G on /"
Run Code Online (Sandbox Code Playgroud)

为了打破这一点,这个

  • 创建一个每天 00:00 运行一次的作业。
  • Cron 自动处理将作业输出通过电子邮件发送给系统管理员。此作业仅在出现错误或磁盘空间不足时才产生输出
  • test命令使用-lt小于运算符和等于 1Gb 可用空间的固定值设置简单的 shell 比较。
  • df命令测试/文件系统上的可用空间
  • grep让你输出的只是线,你需要的不是头df包括。
  • awkGET只是在输出第四列,自由空间数。
  • The&&表示仅当第一个命令 (the test x -lt y) 返回 true时才运行下一个命令。