gpt4 book ai didi

amazon-web-services - 在健康检查时将 EC2 操作添加到 Cloudwatch 警报

转载 作者:行者123 更新时间:2023-12-05 02:57:57 24 4
gpt4 key购买 nike

我有一个 AWS bitnami 实例,当网站变得不可用时,我创建了一个 Route 53 运行状况检查警报。第一个 Action 成功触发并给我发了一封电子邮件。但是,我还希望重新启动实例,尽管添加 EC2 操作显示为灰色并且显示为:“此操作仅适用于 EC2 每实例指标”。我怎样才能添加这个?

enter image description here

是否与此有关:我的 EC2 实例存在于爱尔兰 AZ,但是当我在 Route 53 中的健康检查上创建警报和 SNS 主题时,它会自动在 N.Virginia AZ 中创建它们。而且我似乎无权改变它的去向。

最佳答案

原方案:

您最好的做法是使用 CloudWatch Events。

您可以创建一个规则来匹配 CloudWatch 警报状态更改事件上的警报并运行 EC2 实例重启 API 调用:

enter image description here

事件模式如下所示:

{
"source": [
"aws.cloudwatch"
],
"detail-type": [
"CloudWatch Alarm State Change"
],
"detail": {
"alarmName": ["YOUR_ROUTE53_ALARM_NAME"],
"previousState": {
"value": ["OK"]
},
"state": {
"value": ["ALARM"]
}
}
}

模式语法有点奇怪,您必须将单个字符串包装到数组中。此模式将匹配名为 YOUR_ROUTE53_ALARM_NAME 的警报的警报状态更改,其先前状态为 OK,当前状态为 ALARM

我把之前的状态加入到匹配中,因为我不知道警报会不会触发多次。没有它,恕我直言,您可能会陷入无限重启的循环。

关于目标,我会让 CloudWatch Events 为您创建新角色。


更新解决方案:(提问者因故需要单独stop and start calls)

您仍会使用 CloudWatch Events (CWE) 来检测警报中的变化。

那么你有两个选择:

  1. 使用 lambda 来处理我推荐的单独的停止/启动:

    1. 创建一个 NodeJS 12 Lambda(每个 Node lambda 都有一个可用的 AWS JS SDK),您将使用的函数在 AWS.EC2 类中
    2. 为您的实例调用stopInstances,实例状态将更改为stopping
    3. 使用waitFor 监听实例状态变为stopped
    4. 调用startInstances 重新启动它您需要确保您的 Lambda 具有必要的 IAM 权限才能重启 EC2 实例。
  2. 创建两个 CWE 规则

    1. 第一条规则检测警报并定位 EC2 StopInstances API 调用(与我原来的解决方案相同,只是目标略有不同)
    2. 第二条规则匹配该实例状态更改并针对 EC2 StartInstances API 调用。

      state change notification 看起来像这样:

      {
      "id":"7bf73129-1428-4cd3-a780-95db273d1602",
      "detail-type":"EC2 Instance State-change Notification",
      "source":"aws.ec2",
      "account":"123456789012",
      "time":"2015-11-11T21:29:54Z",
      "region":"us-east-1",
      "resources":[
      "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"
      ],
      "detail":{
      "instance-id":"i-abcd1111",
      "state":"stopped"
      }
      }

      匹配该通知的事件模式很简单: enter image description here

      此解决方案的问题是状态更改通知除了 stateinstance-id 之外没有任何其他字段。您无法区分第一规则触发的关机和正常关机。每次关闭都会触发此规则并再次启动实例。

      如果您想手动关闭实例,则必须禁用第二条 CWE 规则(可以启用/禁用规则),这样它就不会触发启动。这对您来说可能是一个合理的权衡。

顺便说一句,如果 EC2 重启还不够,我会说你的实例有问题。

关于amazon-web-services - 在健康检查时将 EC2 操作添加到 Cloudwatch 警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59505324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com