タグを指定してリソースを監視する

Study

概要

タグで監視リソースを指定できるアップデートが入ったらしいので確認してみた。

前置き

事件は旅先の函館で起こった。

ホテルで夜更かしをしていると次のような衝撃的な記事が流れてきた

[アップデート] Amazon CloudWatchがリソースのタグを用いてメトリクスモニタリングができるようになり、リソースの追加や変更に自動的に適応する動的なCloudWatchアラームを設定可能になりました | DevelopersIO
リソースの追加や変更に自動的に適応する動的なCloudWatchアラームを設定したい時に

通常、CloudWatch Alarmで監視リソースを指定するときはリソースIDやARNを指定する
このリソースIDが厄介で、例えばEC2インスタンスに何かしらの問題が発生してリストアした場合には、リストアしたインスタンスIDのメトリクスを監視するように設定しなおす必要がある。

ただ、タグで指定することができればその問題は解消できる

また、この設定にはCloudWatch Metrics Insightsを使用するのだが、これを使うと単一のアラームで複数のリソースを監視することができるらしい。

単一のアラームで複数リソースを監視することと、タグでリソースを指定すること
設計・運用負荷の軽減が期待できると思い、設定方法を確認してみた。

内容

アップデート概要

冒頭で紹介した記事では、アップデートの時系列が紹介されていた。

  • CloudWatch Metrics Insightsを使用することで、複数リソースに対してまとめてアラームを設定できるようになった
    • リソースの絞り込みは可能だが、リソース毎のメトリクス確認はできない
  • CloudWatch Metrics Insightsを使用したアラームでリソース毎のメトリクスを確認できるようになった
    • リソース毎のメトリクス確認可能だが、リソースIDやARNで絞り込む必要がある
  • (今回)CloudWatch Metrics Insightsでメトリクスをタグでグループ化できるようになった

CloudWatch Metrics Insightsという機能は知らなかった。
複数リソースを監視できるのも驚きだが、タグで指定できるのはとてもインパクトが大きい。

最初に必要な設定

紹介した記事にも記載があるが、まずCloudWatchの設定で「テレメトリでリソースタグを有効にする」を有効化する必要がある

これを忘れていると、グループ化条件でtag.Nameといったタグの項目が出てこない。

また、コンソールにも表示がある通り認識までに少し時間がかかるらしい。

設定方法

SQSキューのメッセージ数を監視するアラームを作成してみた。

まず以下の2つのキューを用意した。

  • queue1(Nameタグ: queue1)
  • queue2(Nameタグ: queue2)

CloudWatch Alarmを作成する際、メトリクス選択画面で「マルチソースクエリ」を選択するとCloudWatch Metrics Insights Queryを使用できる。
「グラフクエリ」をクリックするとグラフが作成され、「メトリクスの選択」を選択すると監視対象のメトリクスとして設定できる。

今回はSQSのApproximateNumberOfMessagesVisibleを指定し、グループ化条件にtag.Nameを指定した。

メトリクスを選択した状態で次の画面に進もうとすると、「並べ替え条件」の指定が必要だと警告が出た。

リソース毎のメトリクスの監視に使用する統計(MAXなど)と合わせて、昇順(ASC)での並べ替えを設定した。
アラームとして使用する分にはあまり気にしなくて良いと思う。

最終的に設定されたクエリは以下の通り。

SELECT MAX(ApproximateNumberOfMessagesVisible)
FROM SCHEMA("AWS/SQS", QueueName)
GROUP BY tag.Name
ORDER BY MAX()
ASC

複雑なクエリを書く必要はないので導入しやすいと思う

コンソールでは以下のように「寄稿者」の欄でタグ毎のメトリクスの評価を監視することができる。

通知内容

通知メールでどのメトリクスが閾値を超えた(もしくは下回った)のかを確認できたらいいなと思いながらメールを見ていると、Contributor Attributesの項目があった

Contributor Attributes:
– tag.”Name” queue2

コンソールを見なくてもどのメトリクスがアラーム状態になったのか確認することができる

タグでリソースメトリクスを追跡できる!

今回の嬉しいポイント

リソースIDやARNが変わっても、同じタグを使用すれば同じように監視対象メトリクスに反映される

「queue1」を削除して「queue3(Nameタグ: queue1)」を作り直した。

アラームの表示は次の通り。

SQSキューは同じARNで作成しなおすことが可能なので恩恵がないが、EC2インスタンスなど再作成で識別子が変わってしまうリソースにとってはとてもありがたい

CloudFormationで作成

【後でCloudFormationで作成してみる】

まとめ

タグを使用したCloudWatch Alarmについて、自分の手でも試してみた

感想

設計や運用が楽になる非常にうれしいアップデートだと思う。

今後はCloudWatch Metrics Insightsを使用するアラームを標準にしていきたい

参考

[アップデート] Amazon CloudWatchがリソースのタグを用いてメトリクスモニタリングができるようになり、リソースの追加や変更に自動的に適応する動的なCloudWatchアラームを設定可能になりました | DevelopersIO
リソースの追加や変更に自動的に適応する動的なCloudWatchアラームを設定したい時に
[アップデート] 複数のリソースのメトリクスに対してまとめてアラーム設定ができるAmazon CloudWatch Metrics Insightsアラームが使えるようになりました | DevelopersIO
リソースだけ異なるCloudWatchアラームを大量に作成することがなくなりそう
Amazon CloudWatch クエリアラームが個別メトリクスの監視に対応したので試してみた | DevelopersIO
Amazon CloudWatch で複数の個別メトリクスを単一のアラームで監視できるようになりました。GROUP BY を使った Metrics Insights クエリにより、Auto Scaling で動的に増減する EC2 インスタ...
タイトルとURLをコピーしました