👀

AWS Organizationで実現するCloudWatchメトリクスの一元管理②

2024/10/18に公開

はじめに

Septeni Japan株式会社でインフラエンジニアを担当している金と申します。
前回の第1部に続き、第2部では、CloudWatch Agentで収集したEC2のメトリクスをクロスアカウントオブザーバビリティを活用して中央で管理する方法について説明します。
https://zenn.dev/septeni_japan/articles/1472950861eb4f

クロスアカウントオブザーバビリティとは


複数のAWSアカウントにまたがって、リソースのモニタリングや観察を一元管理できる機能のことです。
クロスアカウントオブザーバビリティを利用することで、モニタリングアカウントを通じて、他のアカウント(ソースアカウント)から以下の監視データを集約して確認することが可能になります。

  1. Amazon CloudWatch Logs
    すべてのロググループをモニタリングアカウントと共有できるほか、フィルターを使用して特定のロググループに絞り込むことができます。
  2. Amazon CloudWatch のメトリクス
    すべての名前空間のメトリクスをモニタリングアカウントと共有できるほか、フィルターを使用して特定の名前空間に絞り込むことができます。
  3. AWS X-Ray のトレース
    アプリケーションのパフォーマンスや動作状況を可視化し、モニタリングアカウントに共有できます。
  4. CloudWatch Application Insights - Applications
    アプリケーションの問題やパフォーマンス低下を検知し、モニタリングアカウントでその結果を確認できます。
  5. CloudWatch Internet Monitor
    インターネット接続の品質やパフォーマンスを監視し、グローバルな視点で問題を特定できます。

この中から、2. CloudWatch メトリクスの中央管理について説明します。

導入手順

STEP 1.モニタリングアカウント設定

Cloud Watchメトリクスを中央で管理するモニタリングアカウントにアクセスします。
Cloud Watchメニューから設定、モニタリングアカウント設定を選択します。

データを選択

  • Monitoringアカウントと共有したいデータタイプを選択します。
  • 今回はメトリクスの中央管理に重点を置いているため、メトリクスのみを確認します。

ソースアカウントを一覧表示

  • Account ID、Organization ID、またはOU経路を入力できます。複数のアカウントを入力する場合は、コンマで区切ります。また、OU経路を入力する際は、最後の”/“まで正確に入力する必要があります。
    (例: o-a1b23d4e5/r-f6g7h8i9j0example/ou-def0-aaabbbb/)
  • 拡張性を考慮し、すべてのControlTowerアカウントを許可するため、Organization IDを入力しました。

ソースアカウントを識別するのに役立つラベルを定義する

  • Monitoringアカウントで、ソースアカウントのデータと一緒に表示されるアカウントを識別するためのラベルです。
  • アカウント名、グローバルに固有のメールアドレス、ドメインのないメールアドレス、またはカスタムラベルの中から選択できます。
  • ここではアカウント名を選択します。

すべての選択を完了したら、[構成] をクリックします。

CloudWatch設定画面から正常にモニタリングアカウントの設定が有効化されていることを確認します。

STEP 2. アカウントをリンクするためのリソース選択

モニタリングアカウントの有効化後、CloudWatchの設定からアカウントをリンクするためのリソースを選択します。

ソースアカウントをリンクする方法を決定

AWS 組織

  • CloudFormationテンプレートをダウンロードし、組織内にデプロイすることでモニタリングアカウントとリンクされます。
    コントロールタワー管理アカウント(または委任されたアカウント)から、このテンプレートファイルを使用してCloudFormation StackSet形式で、組織全体、特定のOU、または組織内の特定アカウントに配布することが可能です。

任意のアカウント

  • CloudFormationテンプレートをダウンロードする方法
    このテンプレートを使用して、ソースアカウントにCloudFormation Stackを配布することでモニタリングアカウントとリンクされます。
  • 接続用のURLを提供する方法
    ソースアカウントにログインし、そのURLを新しいウィンドウに貼り付けることで、モニタリングアカウントとリンクされます。

ここではAWS 組織を選択し、CloudFormationテンプレートをダウンロードします。

STEP 3. CloudFormation StackSetsのデプロイ

ControlTowerの管理アカウント、またはCloudFormation StackSetsのデプロイが委任されたアカウントに接続します。
CloudFormation > StackSets > 「StackSetsを作成」を選択します

テンプレートの選択

  • アクセス許可モデル:サービスマネージドアクセス許可
    必要なアクセス許可が自動的に設定されます。
  • テンプレートの準備:テンプレートの準備完了
    「ソースアカウントをリンクする方法を決定」段階でダウンロードしたテンプレートを使用します。
  • テンプレートの指定:テンプレートファイルのアップロード
    「ソースアカウントをリンクする方法を決定」段階でダウンロードしたファイルをアップロードします。

StackSet の詳細を指定

  • StackSet 名、StackSet の説明を入力します。

StackSet オプションの設定

  • オプションでタグや実行設定を行うことができます。

デプロイオプションの設定

  • スタックセットにスタックを追加
    ここでは「新しいスタックのデプロイ」を選択しますが、既存のスタックセットに統合することも可能です。
  • デプロイターゲット
    組織全体にデプロイするか、特定のOUを指定してデプロイするかを選択します。
    ここでは「組織単位 (OU) へのデプロイ」を選択し、AWS OU IDを入力します。
    対象のOUは最大50個まで設定できます。
  • 自動デプロイオプション
    OUにアカウントが追加・削除された場合の挙動を選択します。
  • リージョンの指定
    スタックをデプロイするリージョンを選択します。
  • デプロイオプション
    同時にデプロイするアカウントの数や、デプロイ失敗を許容する数値または割合を設定します。
    また、複数のリージョンにデプロイする際の方法や、障害発生時における同時実行レベルの設定を選択します。

レビュー

  • 設定した内容を確認し、「送信」を選択します。

デプロイ確認

  • 指定したOUのアカウントにたいし、正常にデプロイされたことを確認します

STEP 4. ソースアカウントの設定確認

StackSetsをデプロイしたソースアカウントに接続します。
「CloudWatch」→「設定」のソースアカウントの設定から「リンク済み」であることを確認します。

STEP 5. メトリクスの確認

モニタリングアカウントのCloudWatchから、ソースアカウントのEC2メトリクスが表示されていることを確認できます。

さいごに

本記事では、AWS CloudWatchのクロスアカウントオブザーバビリティを活用し、複数アカウントに対応したモニタリングの中央集約化を実現する方法をご紹介しました。
この方法を使えば、複数のAWSアカウントに対して、3rd Partyソリューションを導入せず、AWSサービスのみで効率的かつ柔軟なモニタリングが可能です。また、AWS CloudWatchの高度な機能を活用することで、リソースの可視化やアラート設定が容易になり、運用負荷の軽減や迅速な対応が期待できます。
この記事が、皆様のモニタリング環境の改善や中央集約の実現に一助となれば幸いです。

Discussion