在我的堆栈中,我使用EC2和NodeJS与PM2 .
PM2出现故障,服务器出现故障 .
我想为这些案例创建一个电子邮件通知 .
到目前为止我得到了什么:
-
crontab作业每10分钟对服务器执行一次ping操作,如果日志文件已关闭,则写入日志文件 .
-
CloudWatch监控该日志文件 .
-
缺少步骤 .
-
SNS活动和订阅向我发送电子邮件 .
我的计划是安装CloudWatch代理并在其他客户的服务器上配置crontab . 将它们分组到同一个CloudWatch / SNS流中 .
我正在开发第3步:CloudWatch和SNS之间的连接 .
使用CloudWatch的向导,似乎我只能发送统计信息,例如“日志数”,而不是日志本身 .
在步骤1中创建的日志包含有关服务器关闭的数据,我想将其添加到电子邮件中 .
EDIT 这不是个人设置 . 出于某种原因,我的老板说CloudWatch是必须的 .
3 回答
尝试使用弹性节拍 . 它将为您提供实时服务器日志,您可以使用kibana查看,并使用sentinl插件,您可以配置和发送任何系统统计信息的任何类型的电子邮件 .
请参考下面提到的链接:
Elastic Beats
Sentinl
我会使用与CloudWatch集成的Route 53's Health Check feature . 然后,您可以在CloudWatch中设置警报以向您发送电子邮件 . 我不认为您必须使用Route 53 for DNS才能使用它,尽管如果您使用的是Route 53,您也可以使用它来执行故障转移到其他服务器 .
或者,如果服务器位于负载均衡器之后,则可以从Load Balancer的运行状况检查发布到CloudWatch的Healthy Hosts指标触发CloudWatch警报 .
You can publish a custom metric to CloudWatch in the form of a "heart beat" .
在服务器上通过cron运行一个小脚本,检查进程列表以查看my_service是否正在运行,如果是,请对CloudWatch进行
put-metric-data
调用 .该指标可以像将数字"1"推送到CloudWatch中的自定义指标一样简单 .
等等, take a look at this to keep the necessary steps: Use cloudwatch to determine if linux service is running
这些步骤由@BestPractices列出