工作人员在 AWS EC2 上失败时发出警报电子邮件

Alert email when worker fails on AWS EC2

我在 AWS 中有一个带有 Centos 6 的 EC2 实例,我只有主管维护一个 PHP 脚本。在某些情况下,此脚本会失败,我会看到类似这样的内容:

$ sudo /usr/local/bin/supervisorctl status
my-worker                      EXITED    Aug 19 10:19 AM

我希望收到有关它的提醒电子邮件,因为我的脚本自 8 月 19 日以来一直无法运行。

我试图找到与健康检查相关的内容,但健康检查仅适用于负载均衡器。我也试图在 CloudWatch 中找到一些东西,但找不到适合我的相关指标。

知道吗,当我的工人摔倒时我如何接收电子邮件?

没有开箱即用的指标,因为默认情况下 Cloudwatch 只能访问管理程序级别的指标,而不是基于 OS 的指标,例如 RAM 使用或进程相关的统计数据。

要增加 Cloudwatch 中的数据,您可以编写一个小脚本来检查进程是否 运行,然后调用 PutMetricData 将该指标上传到 Cloudwatch。

像这样的东西应该可以工作:

#!/bin/bash

${process_name}=
DATE=`date +%Y-%m-%dT%H:%M:%S.000Z`

processes_running=`pidof ${process_name} | wc -w`

aws cloudwatch put-metric-data --metric-name ${process_name}_running --namespace "MyService" --value ${processes_running} --timestamp $DATE

然后每分钟用 cron 或其他方式调用它(或者无论您希望更新 Cloudwatch 的频率如何 - 虽然最大分辨率为 1 分钟,但更频繁的调用将被汇总)

然后您只需要 create an alarm 执行一些操作(例如使用 SNS 向所有订阅的地址发送电子邮件,但也可能执行一些操作,例如重启实例)。