我需要每天在 ec2 实例上运行一次脚本,并且我希望有一些简单的方法可以让我知道是否出现了问题。
我不想修改原始图像(Ubuntu 的最新版本),因此理想情况下,我希望在通过 ec2-run-instances 命令传递给 Ubuntu 实例的脚本中完成所有设置。
我曾考虑为其创建一个 Gmail 帐户,并让它通过该帐户发送电子邮件 - 但设置相当复杂,需要证书之类的东西。
我研究过使用 gist API,但通过它上传的任何内容都是公开的。
Google 命令行工具的设置也显得相当复杂。
有没有更简单的方法可以做到这一点?
答案1
监控此操作成功或失败的最简单方法可能是进行日志分析。因此,您的脚本(无论是从 cron 还是其他机制运行)都可以将其输出记录到某个本地日志文件中。然后,从您在 Amazon 云之外控制的机器,您可以远程登录到每个 ubuntu 实例并分析日志。例如:
ec2_hosts=`ec2-describe-instances | awk '/INSTANCE/ { print $4 }'`
for host in $ec2_hosts; do
ssh -i ~/.ssh/SSHKey.pem ubuntu@$host \
"grep 'something' /var/log/my_script.log" > my_local_status.log
done
# Look through "my_local_status.log" to see the results
这不需要对您的实例进行任何特殊配置,并且您可以监控正在运行的任意数量的 EC2 实例。
答案2
为此,请使用内置的 Linux 函数。如果您正在运行 shell 脚本,则对框进行的任何修改都可以作为脚本的一部分完成。将脚本记录到实例上的文件中,然后通过电子邮件将该日志文件发送给您,这应该非常容易。
我不熟悉 Ubuntu 实例,但它应该安装了基本的邮件处理程序。这过于简单了,但您的脚本可以执行如下操作:
which mail || apt-get install mailx
cat $logfile | mail [email protected] -s "Report on x from ec2 script"
答案3
如果您的应用创建了一个日志文件(一个网站),那么您可以使用免费的网站监控服务(例如 AlertFox 或 Pingdom)来提醒您该页面是否包含单词“错误”。