如何在CloudWatch中使用ELB的HealthyHostCount进行监控?

awe*_*ndt 10 metrics amazon-ec2 amazon-web-services amazon-elb amazon-cloudwatch

我们有三个EC2实例 - 在eu-west-1区域的每个可用区(AZ)中有一个.它们使用ELB进行负载平衡.我们想要使用CloudWatch监控在负载均衡器上注册的实例数量.问题是:我真的不了解HealthyHostCount指标.

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

据我所知,HealthyHostCount(HHC)是在给定的ELB中注册的健康实例的数量,在所有AZ上平均.如果一切正常,HHC应该是1(无论在什么时间段内),因为每个AZ中有1个实例.

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

当我在CloudWatch中检查HHC时,HHC是没有意义的数字(5分钟间隔的总和为现在我记得的全部).

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

有人可以解释如何只注册一个实例时如何使用HHC来发出警报?平均HHC是走的路还是我应该使用其他指标?

Ger*_*oli 7

HealthyHostCount对每个可用性区域可用主机的计数度量记录一个数据值,每次健康检查被执行.您的ELB运行状况检查有一个Interval参数,用于定义每分钟执行的运行状况检查数.

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

如果您有3个AZ,每个主机有2个主机,同样Interval= = 10,但是您正在查看Per-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,Period1分钟,Sum of HealthyHostCount当值低于等于2时触发,(2 data values * 1 Healthy AZ * 1 healthy server = 2不健康的AZ的其他4个数据值应为0,因此它们不会影响总和).

更新:

原来也执行健康检查的数量取决于塑形ELB(每AZ ussually之一)内部实例的数量,因此,如果您正遭受流量高峰,或足够的负荷饱和单ELB内部实例,ELB内部服务器的数量将增加,您将意外地拥有更多数据点.sum仅当您有大量流量时,这可能会影响该值.我没有看到这个问题,在3个AZ中分配了6k RPM的峰值负载.如果这是你的情况,那么使用average是一个更安全的赌注,但我建议你使用LowerThan 0.65作为你的门槛.

链接还让我想知道该Cross-Zone Load Balancing功能如何影响数据点的数量......


Fre*_*ung 4

在这个区域,CloudWatch Web 控制台不会公开云监视可以执行的所有操作。正如文档所解释的,HealthyHostCount是每个可用区的指标。控制台允许您按可用区域(但跨所有负载均衡器)或按负载均衡器(但跨所有区域)获得 HealthHostCount,但不能按两种方式进行切片。

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