【问题标题】:How to send an email notification when the server is down?服务器关闭时如何发送电子邮件通知?
【发布时间】:2018-06-29 00:13:31
【问题描述】:

在我的堆栈中,我将 EC2 和 NodeJS 与 PM2 一起使用。

PM2 时常出现故障,服务器宕机。

我想为这些案例创建电子邮件通知。

到目前为止我得到了什么:

  1. crontab 作业每 10 分钟对服务器执行一次 ping 操作,并在服务器关闭时写入日志文件。
  2. CloudWatch 监控该日志文件。
  3. 缺少步骤。
  4. SNS 事件和订阅向我发送电子邮件。

我的计划是安装 CloudWatch 代理并在其他一些客户的服务器中配置 crontab。将它们全部分组到同一个 CloudWatch/SNS 流中。

我正在处理第 3 步:CloudWatch 和 SNS 之间的连接。

使用 CloudWatch 的向导,我似乎只能发送统计信息,例如“日志数量”,而不能发送日志本身。

第 1 步中创建的日志包含有关已关闭服务器的数据,我想将其添加到电子邮件中。

编辑 这不是个人设置。出于某种原因,我的老板说 CloudWatch 是必须的。

【问题讨论】:

  • 如果这是为了您自己的监控,为什么不直接使用像 uptimerobot.com 这样的现有服务?
  • 我猜有人告诉我的老板 CloudWatch 是解决方案,他不想要任何其他解决方案:(
  • 啊,好吧,不只是个人使用 - 然后是更大设置的一部分。
  • Server = EC2 还是 Server = NodeJs 中间件(即 Expressio)?
  • 宕机的服务器是 NodeJS。 EC2 实例仍在运行。

标签: node.js amazon-web-services amazon-sns amazon-cloudwatch pm2


【解决方案1】:

您可以将自定义指标以“心跳”的形式发布到 CloudWatch

  • 在您的服务器上通过 cron 运行一个小脚本来检查 进程列表以查看 my_service 是否正在运行,如果是,则 make 对 CloudWatch 的 put-metric-data 呼叫。
  • 指标可以简单到将数字“1”推送到 CloudWatch 中的自定义指标。

等等,看看这个以保持必要的步骤:Use cloudwatch to determine if linux service is running

@BestPractices 列出了这些步骤

【讨论】:

    【解决方案2】:

    我会使用与 CloudWatch 集成的 Route 53's Health Check feature。然后,您可以在 CloudWatch 中设置警报以向您发送电子邮件。我认为您不必为 DNS 使用 Route 53 才能使用它,但如果您使用 Route 53,您也可以使用它来执行故障转移到不同的服务器。

    或者,如果服务器位于负载均衡器后面,那么您可以触发 CloudWatch 警报关闭负载均衡器的运行状况检查发布到 CloudWatch 的健康主机指标。

    【讨论】:

      【解决方案3】:

      尝试使用弹性节拍。它将为您提供实时服务器日志,您可以使用 kibana 查看这些日志,并且使用 sentinl 插件可以配置和发送任何类型的任何系统统计信息的电子邮件。

      请参考以下链接:

      Elastic Beats

      Sentinl

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-10
        • 2012-06-08
        • 2018-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-17
        • 2015-03-21
        相关资源
        最近更新 更多