CloudWatchでクロスアカウント、クロスリージョンダッシュボードを作れるようになったのでやってみた

2019.11.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、森です。

複数のアカウント、リージョンでアプリケーションを実行している場合、監視/トラブルシュート/分析をする際、複数のアカウントにログインしてアプリケーションコンポーネントまたは依存関係の追加のダッシュボードを表示したり、サービスの可用性に影響を与える可能性のあるアプリケーションリソース、共有リソース、またはアプリケーション間の依存関係を可視化する必要がありました。 このような場合だと、どうしても根本的原因を分析し、解決するまでの時間がかかる場合が多いと思います。

本日紹介するAmazon CloudWatchのアップデートで、クロスアカウント、クロスリージョンのダッシュボードが作れるようになったため、上記の問題をかなり解決できるよになるのではないかと思ったので試してみようと思います。

環境

Cross-Account Cross-Region Dashboards with Amazon CloudWatch では  AWS Organizations との統合方法が紹介されていましたが、この記事ではOrganizationsを使わず、2つのアカウントのダッシュボードを作成します。

  • アカウントA (モニタリング用)
  • アカウントB (アプリケーション実行用)

とします。

やってみるぅ

1. アカウントBでの設定

CloudWatchでsharingの設定

監視アカウントを指定して、クロスアカウントのクロスリージョンビューを有効にします。

アカウントBのマネージメントコンソールからCloudWatchに遷移し、左ナビゲーションの設定リンクをクリックすると、Cross-account cross-regionの設定ができる画面が表示されます。

Configureボタンを押して設定画面に遷移しましょう。

CloudWatchのデータをアカウントAにシェアするために、Share Dataボタンを押して設定画面に遷移します。

Sharingの項目には、アカウントAのアカウントIDを入力します。

Permissionsの項目は、作成する CrossAccountSharingRole の設定です。デフォルトのままにします。

アカウントBに, CloudWatch-CrossAccountSharingRoleを作成します。 以下のポリシーを含んでいます。

  • CloudWatchReadOnlyAccess
  • CloudWatchAutomaticDashboardsAccess
  • ViewOnlyAccess

Launch CloudFormation template ボタンを押せば、CloudFormationの画面に遷移するので、作成しましょう。

Doneボタンを押して設定を完了させます。

設定がうまくいっていると、 Share your CloudWatch data の項目のStatusが Shared となります

2. アカウントAでの設定

アカウントAのCross-account cross-region設定画面にいくと、View cross-account cross-regionの項目のStatusが Enabled となっています。Editボタンを押して編集画面に遷移しましょう。

認証する必要なく、データへのアクセス許可を付与したアカウント間でビューを簡単に切り替えます。これを行うには、コンソールにアカウントセレクタが必要です。デフォルトではAccount Id Inputになっており、手動でアカウントIDを入力して切り替えますが、今回はCustom account selectorを選択し、ドロップダウンでViewを切り替えるようにしてみます。

<アカウントID> <アカウントラベル>の形式で、1行のアカウントとセレクターのカスタムラベルを1行ごとに入力します。

3. アカウントAでダッシュボードを作成

設定が完了したのでダッシュボードを作ってみます。名前は任意のものをつけます。

Custom account selectorを選択し、ドロップダウンでViewを切り替えるようにしたので、アカウントの選択とリージョンの選択ができるようになっていますっっ!!

では、ウィジェットを追加して表示させてみます。

グラフ作成のときもアカウントの選択とリージョンの選択ができますね。

アカウントAのダッシュボードに2つのアカウントのメトリクスグラフを表示してみた(ダッシュボード名: hoge)

アカウントAのダッシュボードに

  • アカウントAのAPI Gatewayのメトリクス
  • アカウントBのS3のメトリクス

を表示させた結果です。

アカウントAのCloudWatchダッシュボードからアカウントBで作られたCloudWatchダッシュボードをみる(ダッシュボード名: fuga)

上部のドロップボックスのアカウントを、アカウントBに切り替えると、Bで作ったダッシュボードが表示されるはずです。

このようにBで作ったダッシュボードのグラフが表示されました。

所感

CloudWatchでクロスアカウント、クロスリージョンのダッシュボードを作ってみました。そんなに手間もかからず作成できました。

見るべきダッシュボードは統一したいといった要望は少なからずあり、個人でもSaaSのツールを使って集約していたりしていましたが、 今回のアップデートにより、いちいちアカウントを切り替えずとも一つのモニタリング用アカウントで他のアカウントのデータを参照することができるようになったので、トラブルシュートや分析における手間が省けるのではないでしょうか? 複数アカウントを管理しているdevopsエンジニア、運用チームの助けになるはずです。是非この機能を使ってダッシュボードを作ってみてください。

ではでは。

参考