Amazon CloudWatch クエリアラームが個別メトリクスの監視に対応したので試してみた

Amazon CloudWatch クエリアラームが個別メトリクスの監視に対応したので試してみた

Amazon CloudWatch で複数の個別メトリクスを単一のアラームで監視できるようになりました。 GROUP BY を使った Metrics Insights クエリにより、Auto Scaling で動的に増減する EC2 インスタンスの監視運用が効率化できます。
2025.09.09

こんにちは。テクニカルサポートチームのShiinaです。

はじめに

CloudWatch で EC2 を監視する際、インスタンスごとにアラームを設定・管理するのに苦労されていませんか?
先日、Amazon CloudWatch がついに複数の個別メトリクスを単一のアラームで監視できるようになりました。
https://aws.amazon.com/about-aws/whats-new/2025/09/amazon-cloudwatch-alarm-multiple-metrics/

これにより、Auto Scaling などで動的に増減するリソースに対しても、監視漏れを防げます。
都度アラームを作成する必要がないため、運用負荷を大幅に削減できるようになります。
早速、GROUP BY と ORDER BY を使った Metrics Insights クエリで、動的リソースの監視を試してみました。

やってみた

今回は Auto Scaling で管理されている EC2 インスタンスの StatusCheckFailed メトリクスに対して、個別に評価を行う単一の CloudWatch アラームを設定してみました。

前提

  • Auto Scaling グループを作成し、EC2 インスタンスリソースを用意
  • 通知用の E メールがエンドポイントとなる SNSトピックを用意

アラームを作成する

  1. CloudWatch コンソールのナビゲーションペインより[すべてのメトリクス]を選択します。

  2. マルチソースクエリタブを選択し、Editor に切り替え、以下のクエリ条件を入力します。

			
			SELECT MAX(StatusCheckFailed) FROM "AWS/EC2" GROUP BY InstanceId ORDER BY MAX() ASC

		

アラーム作成1

  1. [実行]を選択し、各インスタンスID の StatusCheckFailed メトリクスの値がグラフに表示されることを確認します。

  2. [アラームの作成]を選択します。
    アラーム作成2

  3. 期間、しきい値、データポイントなどの条件を指定します。今回は以下の条件としました。

  • 期間:5分
  • しきい値:>=1
  • データポイント:2/2
  • 欠落データの処理:欠落データを見つかりませんとして処理
    アラーム作成3
  1. 下記アクションの設定でアラームの作成を行ってみます。
  • 通知:アラーム状態
  • 通知の送信先:事前に作成した E メール (エンドポイント)のSNSトピック 
    アラーム作成4
  1. 任意のアラーム名を指定してアラームの作成を行います。
    アラーム作成5

作成したアラームを確認してみる

作成したアラームの状態をみてみます。
インスタンスごとに異なる StatusCheckFailed メトリクスのグラフが表示されています。
寄稿者ラベルと寄稿者 ID が表示されて、寄稿者ごとのステータスが表示されていることがわかります。
アラーム確認

寄稿者(Contributor)とは

複数時系列アラームを構成する個別のメトリクスです。
GROUP BY で指定したディメンション(今回はInstanceId)ごとに個別の寄稿者として扱われ、それぞれが独立してアラーム条件を評価されます。
なお、特定のラベルキーが含まれていない場合、null のグループ Other が返されます。
1 つ以上の寄稿者が定義されたしきい値から逸脱すると、アラームがトリガーされる動作となります。

動的にリソースを追加してみる

Auto Scaling グループの希望するキャパシティーを増やしてみます。
しばらくすると、CloudWatch アラームのグラフにオートスケーリングによって動的に追加された EC2 インスタンスのメトリクスが追加されました。
動的に追加されたインスタンスに対しても自動で監視対象となることを確認できました。
スケール後アラーム確認

擬似アラート発生させてみる

StatusCheckFailed_Instance を失敗させ、擬似的に StatusCheckFailed メトリクスを発生させてみます。
EC2 インスタンス内のネットワークインターフェース(NIC)を停止させてみます。
※インターフェース名は環境により異なります。

			
			ip link set enX0 down

		

しばらくすると対象の EC2 インスタンスの寄稿者がアラーム状態になりました。
寄稿者 Other も一緒にアラーム状態になっています。
アラーム状態

SNSトピックに設定したメールアドレス宛にメールが2通通知されました。
1通は対象 EC2 インスタンスのもの、もう一通は寄稿者 ID が Other のものでした。

  • 対象 EC2 インスタンスの通知
    通知2
  • 寄稿者 ID Other の通知
    通知1

アラーム状態中に別のインスタンスでアラームを発生させてみる

アラーム状態中に別のインスタンスでアラームが発生した場合の挙動を試してみます。
1台の EC2 インスタンスの StatusCheckFailed_Instance を失敗させ、擬似的に StatusCheckFailed メトリクスを発生させておきます。
既にアラーム状態となっていることを確認できます。
アラーム状態

この状態で、さらに別の EC2 インスタンスの StatusCheckFailed_Instance を失敗させ、擬似的に StatusCheckFailed メトリクスを発生させます。

しばらくすると対象の EC2 インスタンスの寄稿者があらたにアラーム状態になりました。
さきほどよりもより濃い赤色に表示が変わっていました。
寄稿者のパーセンテージによって色合いが変わるようです。
アラーム状態でさらにアラーム

SNS トピックに設定したメールアドレス宛に新たに1通メール通知が行われました。
通知3

アラームの履歴を見ると、新たに寄稿者の状態がアラーム状態に更新され、再度アクションが実行されたことがわかります。
アラーム履歴

まとめ

従来はインスタンスごとにアラームを作成・管理する必要がありましたが、GROUP BY を使った Metrics Insights クエリに対してアラームが設定できます。
Auto Scaling で動的に増減する EC2 インスタンスに対しても、単一のアラームで自動的に監視対象に追加されます。
また、寄稿者(Contributor)という仕組みにより、個別のインスタンスごとにアラーム状態を管理できるようになりました。
大規模な環境や動的にリソースが変化する環境での監視運用において、非常に有用です。

本記事が参考なれば幸いです。

参考

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-insights-querylanguage.html

この記事をシェアする

FacebookHatena blogX

関連記事