ALB の UnHealthyHostCount がカウントする対象について

ALB の UnHealthyHostCount がカウントする対象について

はじめに

こんにちは、さすけです!
今回は、ALB のヘルスチェックにおいて UnHealthyHostCount メトリクスとしてカウントされる対象についてのお話をさせて頂こうかと思います。

UnHealthyHostCount のカウント対象

UnHealthyHostCount は異常と判断されたターゲットの数という記述は日本語のドキュメントにもありますよね。しかし「異常」とはどのような状態を指すのでしょうか?

さて、早速結論ですが英語の公式ドキュメントにて、以下のような記述がありました。[1]

=== 抜粋 ====
UnHealthyHostCount:
The number of targets that are considered unhealthy.
=== 抜粋 ====

つまり、ターゲットの中でステータスが「unhealthy」になったものをカウントしているということですね。

EC2 インスタンスを停止させたら

ここで疑問に思ったことが一つ。

「EC2 インスタンスを停止した時はなぜ UnHealthyHostCount にならないんだろう?」

前提として EC2 インスタンスを停止や終了させた場合、ALB のターゲットグループに登録しているはずなのに UnHealthyHostCount として検知されません。

調べてみると EC2 インスタンスを停止または終了させた時と、UnHealthyHostCount として検知される時にはステータスに以下のような違いがありました。

unhealthy と unused の違い

まず、UnHealthyHostCount のカウント対象 でお話ししている通り、UnHealthyHostCount はステータスが「unhealthy」となったものをカウントしております。

しかし、EC2 インスタンスを停止または終了させた際に UnHealthyHostCount として検知されないということは 「unhealthy」とは別のステータスになっているということです
調査したところ、公式ドキュメントには以下の記述がありました。[2]

=== 抜粋 ===
unused:
ターゲットがターゲットグループに登録されていないか、ターゲットグループがロードバランサーのリスナールールで使用されていないか、ロードバランサーに対して有効ではないアベイラビリティーゾーンにターゲットがあるか、ターゲットが停止または終了状態にあります。
=== 抜粋 ===

ステータスが unused になっているターゲットは、「ターゲットが登録されていないか、EC2 インスタンスが停止または終了している」ということですね。

結論

これまでのことから、UnHealthyHostCount では unhealthy をカウントしており、EC2 インスタンスの停止および終了では unhealthy ではなく unused となる。  
したがって、停止および終了した EC2 インスタンスを UnHealthyHostCount としてはカウントしない ということがわかります。
しかし、EC2 インスタンスを停止または終了させずなどの Web サーバ(Apache など)を停止させた場合は、インスタンスそのものが停止しているわけではないため unhealthy のステータスになり UnHealthyHostCount として検知されます。

参考資料

[1] CloudWatch metrics for your Application Load Balancer - Elastic Load Balancing

[2] Application Load Balancer ターゲットグループのヘルスチェック - Elastic Load Balancing

アノテーション株式会社

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.