【问题标题】:How to correctly configure Route53 HealthCheck Alarm with CF (in Sydney)如何使用 CF 正确配置 Route53 HealthCheck 警报(在悉尼)
【发布时间】:2021-04-06 21:40:14
【问题描述】:

我已经配置了 Route53 HealthCheck 以及与 CloudFormation 相关联的警报,但生成的运行状况检查显示为未配置警报,并且 CloudWatch 控制台中的警报仍然无效。如果我在 HealthChecks 中手动创建警报,一切正常。

更糟糕的是,如果我从悉尼/ap-southeast-2 切换并在北弗吉尼亚/us-east-1 创建相同的云形成堆栈,则警报与运行状况检查正确关联并且一切正常!

还有一个数据点:在 Route53 HealthChecks 中手动创建警报时,警报会在 us-east-1 中创建,尽管 Route53 是全局的,而 ap-southeast-1 是所有其他控制台中的默认值。

我的简化堆栈如下所示:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "healthcheck alarm test",
  "Resources": {
    "StatusHealthCheck": {
      "Type": "AWS::Route53::HealthCheck",
      "Properties": {
        "HealthCheckConfig": {
          "Port": "80",
          "Type": "HTTP",
          "ResourcePath": "/status",
          "FullyQualifiedDomainName": "testdomain.com",
          "RequestInterval": "30",
          "FailureThreshold": "1"
        },
        "HealthCheckTags": [
          {
            "Key": "Name",
            "Value": "status reachability check"
          }
        ]
      }
    },
    "StatusHealthCheckFailedAlarm": {
      "Type": "AWS::CloudWatch::Alarm",
      "Properties": {
        "ActionsEnabled": "true",
        "AlarmDescription": "alarmed when status doesn't respond",
        "ComparisonOperator": "LessThanThreshold",
        "EvaluationPeriods": "1",
        "MetricName": "HealthCheckStatus",
        "Namespace": "AWS/Route53",
        "Period": "60",
        "Statistic": "Minimum",
        "Threshold": "1.0",
        "Dimensions": [
          {
            "Name": "HealthCheckId",
            "Value": {
              "Ref": "StatusHealthCheck"
            }
          }
        ]
      }
    }
  }
}

有什么理由应该在北弗吉尼亚而不是在悉尼工作?

【问题讨论】:

  • 鉴于 Route 53 是一项全球服务(类似于 CloudFront),健康检查可能仅在美国东部用完。但是,我找不到任何证实这一点的文件。
  • 这有一定的意义!我将尝试为我的健康检查警报提供自己的堆栈并将其部署在us-east-1(或其他任何有效的地方)!如果是这种情况,关于从云形成中悬挂警报的错误消息会很好......

标签: amazon-web-services amazon-route53 amazon-cloudformation amazon-cloudwatch


【解决方案1】:

由 HealthCheck 生成的 CloudWatch 指标仅在美国东部地区可见,如本页底部http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-monitor-view-status.html 所述。这就是为什么您的堆栈在 us-east-1 中创建时可以正常工作的原因。

【讨论】:

  • 嗯,我认为 doco 是新的,但你可以拥有它。我想知道通过 CloudFormation 的非 us-east-1 是否仍然失败...
【解决方案2】:

这个任务只能使用一个lamba函数来完成,因为:

  1. 健康检查告警只能在地域创建:us-east-1https://stackoverflow.com/a/32335539/1714171
  2. 由 CloudFormation 堆栈管理的资源只能与堆栈本身位于同一区域中https://stackoverflow.com/a/46165480/1714171

这意味着,仅使用纯 CloudFormation 语法是不可能的。

您可以使用 lambda 函数创建警报,如下所示: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/cloudwatch-examples-creating-alarms.html#cloudwatch-examples-creating-alarms-putmetricalarm

【讨论】:

    猜你喜欢
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    相关资源
    最近更新 更多