移行ウィザードを利用して CLB から ALB へ移行した際に、CLB で作成した CloudWatch アラームも移行されるのか教えてください

2024.01.09

困っていること

現在 CLB を利用中ですが、社内では移行ウィザードを用いて ALB に移行する検討案が出ています。 CLB には CloudWatch アラームを設定しており、移行ウィザードを利用した際に CloudWatch アラームも移行されるのでしょうか。
または、新規に ALB の CloudWatch アラームを作成する必要があるのでしょうか、教えてください。

どう対応すればいいの?

結論から申し上げますと、 新規に ALB の CloudWatch アラームを作成する必要がございます。

確認してみた

1. CLB: Test を作成

2. CLB : Test の CloudWatch アラームを作成 3. CLB : Test のマネジメントコンソール上より ALB 移行ウィザードを選択 4. ALB : Test への移行成功を確認 5. CLB : Test を削除 6. CLB : Test 削除後でも、CLB : Test の CloudWatch アラームが存在することを確認 7. 移行対象 ALB : Test の ターゲットインスタンスを確認 8. 新たに、ALB : Test の CloudWatch アラーム(UnHealthyHostCount): Migration を作成 9. 下記について比較したところ、名前空間名や LoadBalancerName が異なっていることを確認

  • CLB : Test の CloudWatch アラーム(UnHealthyHostCount): test
  • ALB : Test の CloudWatch アラーム(UnHealthyHostCount): Migration

まとめ

検証結果を踏まえ、まとめるとメトリクスを監視する CloudWatch アラームを設定される際は、メトリクスを一意に特定する名前空間、メトリクス名、ディメンションといった情報が必要です。
たとえば、特定の EC2 インスタンスがサービスの機能として出力するメトリクス (CPUUtilization など) を監視する際には、ディメンションとして "InstanceId" とその値であるインスタンス ID を指定する必要がございます。[1]
今回の ELB あれば、参考資料 [2] [3] より CLB と ALB は異なるディメンション名や指定方法であることが確認できます。
ALB への移行検証結果から、CLB : Test の CloudWatch アラーム(UnHealthyHostCount): test のディメンション名や指定方法は変更がされなかったことを確認できました。
以上より、新たに CloudWatch アラームを作成する必要がございます。

参考資料

[1] インスタンスの利用可能な CloudWatch メトリクスのリスト表示 - Amazon Elastic Compute Cloud

InstanceId
このディメンションを指定すると、リクエストしたデータがフィルタリングされて、指定のインスタンスのものだけになります。これを利用すると、どのインスタンスからのデータをモニタリングするかを指定できます。

[2] Application Load Balancer の CloudWatch メトリクス - Elastic Load Balancing

Application Load Balancer のメトリクスを絞り込むには、次のディメンションを使用できます。
AvailabilityZone
アベイラビリティーゾーン別にメトリクスデータをフィルタリングします。
LoadBalancer
ロードバランサーでメトリクスデータをフィルタリングします。ロードバランサーを次のように指定します。app/ロードバランサー名/1234567890123456 (ロードバランサー ARN の最後の部分)。
TargetGroup
ターゲットグループでメトリクスデータをフィルタリングします。ターゲットグループを次のように指定します。targetgroup/ターゲットグループ名/1234567890123456 (ターゲットグループ ARN の最後の部分)。

[3] Classic Load Balancer の CloudWatch メトリクス - Elastic Load Balancing

Classic Load Balancer のメトリクスをフィルターするには、次のディメンションを使用します。
AvailabilityZone
指定されたアベイラビリティーゾーンによってメトリックデータをフィルターします。
LoadBalancerName
指定されたロード バランサーによってメトリック データをフィルターします。