【问题标题】:How do I use ELB's HealthyHostCount for monitoring in CloudWatch?如何在 CloudWatch 中使用 ELB 的 HealthyHostCount 进行监控?
【发布时间】:2012-07-23 08:29:10
【问题描述】:

我们有三个 EC2 实例,在 eu-west-1 区域的每个可用区 (AZ) 中都有一个。它们使用 ELB 进行负载平衡。我们想使用 CloudWatch 监控在负载均衡器上注册了多少实例。问题在于:我不太了解HealthyHostCount 指标。

对于部署,我们希望能够在不收到通知的情况下取消注册单个实例(将其从 LB 中取出)。所以警报会是:通知负载均衡器后面是否只有 1 个健康实例 5 分钟。

据我了解,HealthyHostCount (HHC) 是向给定 ELB 注册的健康实例数,是所有可用区的平均值。如果一切正常,HHC 应该为 1(无论在什么时间段内),因为每个 AZ 中都有 1 个实例。

几天前,有人在未重新注册实例的情况下进行部署,因此只有 1 个实例处于平衡状态。当我们注意到这一点时,我们创建了一个警报,当平均 HHC 在 5 分钟后降至 0.6 以下时通知我们。 (如果在 ELB 中只注册了 1 个实例,则 HHC 应在任何时间段内平均为 0.33。)但是,警报从未更改为状态“ALARM”。

当我在 CloudWatch 中检查 HHC 时,HHC 是没有意义的数字(我现在只记得 5 分钟间隔内 10.0 的总和)。

这对我来说是一团糟。每当我认为我理解该指标时,CloudWatch 图表对我来说都是胡言乱语。

谁能解释一下当只有一个实例注册时如何使用 HHC 来获取警报?平均 HHC 是可行的方法还是我应该使用其他指标?

【问题讨论】:

    标签: amazon-ec2 amazon-web-services metrics amazon-elb amazon-cloudwatch


    【解决方案1】:

    HealthyHostCount 指标在每次执行运行状况检查时记录一个数据值以及每个可用区的可用主机数。您的 ELB 健康检查有一个 Interval 参数,用于定义每分钟执行多少次健康检查。

    如果您正在查看每 AZ 指标,运行状况检查 Interval 为 10 秒,并且该 AZ 中有 2 个健康主机,您将看到每分钟 6 个数据点 (60/10),值为 2 . 平均值、最大值和最小值将为 2,但总和将为 6*2=12

    如果您有 3 个 AZ,每个 AZ 有 2 个主机,同样使用 Interval=10,但您正在查看每 LB 指标,您将看到每分钟 3*6=18 数据点,每个数据点的值为2.平均值、最大值和最小值为2,但总和为18*2=36

    我建议您设置一个可以除以 60 秒(5、6、10、15、20、30 或 60 秒)的间隔值。

    在您的情况下,如果您的时间间隔为 30 秒,并且每个 AZ 有 3 个 AZ 和 1 个服务器:您应该期望每 AZ 每分钟有 2 个数据点,因此设置一个警报 Per-LB,使用 @987654331 @ 1 分钟,Sum of HealthyHostCount 值低于 2 时触发(2 data values * 1 Healthy AZ * 1 healthy server = 2,不健康 AZ 的其他 4 个数据值应为 0,因此它们不会影响总和)。

    更新:

    turns out 执行的健康检查的数量还取决于构成 ELB 的内部实例的数量(通常每个 AZ 一个),所以如果您遇到流量高峰,或者负载足以使单个 elb 饱和-internal-instance,ELB 内的内部服务器数量会增长,你会意外地拥有更多的数据点。这可能会影响sum 值,前提是您有大量流量。在 3 个可用区中分布的 6k RPM 的峰值负载时,我没有看到这个问题。如果这是您的情况,那么使用average 是更安全的选择,但我建议您使用低于 0.65 作为阈值。

    link 也让我想知道Cross-Zone Load Balancing 功能如何影响数据点的数量...

    【讨论】:

    • 感谢您提供详细而精彩的解释!
    【解决方案2】:

    这是 CloudWatch Web 控制台未公开 Cloud Watch 可以执行的所有操作的区域。正如docs 解释的那样,HealthyHostCount 是每个可用区的指标。控制台允许您按可用性区域(但跨所有负载均衡器)或负载均衡器(但跨所有区域)拥有 HealthHostCount,但不能双向切片。

    如果您只有一个负载均衡器,最简单的方法是为每个区域指标设置一个警报。如果您有多个可用区,那么您应该能够使用 api 创建跨可用区和负载均衡器的警报切片(同样,每个负载均衡器一个警报),但就我而言,您无法从 Web UI 执行此操作知道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      相关资源
      最近更新 更多