LoginSignup
7
4

More than 1 year has passed since last update.

複数の AWS アカウントを、CloudWatch で一元管理するクロスアカウントオブザーバビリティを触ってみた

Posted at

はじめに

Amazon CloudWatch で、複数の AWS アカウントのモニタリングを一元管理するクロスアカウントオブザーバビリティが追加されました。複数の AWS アカウントで、メトリクスやログ、トレースを一元管理が出来ます。AWS Blog で詳細が取り上げられています。

クロスアカウントオブザーバビリティが追加する以前にもクロスアカウントに関する機能はありました。ただ、AWS アカウントごとに用意された画面で見る必要があったり、ログはクロスアカウントが出来なかったりと、多少制限がありました。このあたりが使いやすくなったので、どういった使い方が出来るか確認してみましょう。

クロスアカウントの設定について

CloudWatch の Settings の画面を開くと、クロスアカウントに関する設定が大きくわけて 2 種類あります。以下の画像の黄色くハイライトしている部分です。上側の部分が新たに追加されました。下側の部分は、今まであった設定です。

今回は、この上側の設定を触っていきます。

image-20221211110709835.png

アカウントの呼び名について

モニタリングを一元管理する側は、「モニタリングアカウント」と呼びます。モニタリングをされる側は「ソースアカウント」と呼びます。

image-20221211162407114.png

モニタリング側の設定

クロスアカウントオブザーバビリティの設定をしていきます。今回の環境は、Organizations を使っているため、モニタリングアカウント側の設定だけで設定ができます。Organizations とは関係ない AWS アカウントも管理することが出来ますが、今回は取り上げません。

image-20221211110953449.png

なお、この記事の環境では、Organizations OU は以下の構成になっています。Root 直下の Production OU に所属する AWS アカウントを一元管理の対象にします。

image-20221211112446345.png

指定した OU に所属している AWS アカウントを一元管理します。注意点が一点あります。OU に所属している子供の OU が有る場合、それを全部指定する必要があります。もし、OU のネストをしている場合は、全て指定することを忘れずに行います。

image-20221211112528839.png

表示名をどうするか指定します。基本的には Account name になるんじゃないかと思います。

image-20221211112320364.png

Resource to link accounts を押します。

image-20221211113057806.png

AWS Organizations を選び、Download を押して、CloudFormation の Template をダウンロードします。

image-20221211113128958.png

こんな YAML ファイルでした。

AWSTemplateFormatVersion: 2010-09-09

Conditions:
  SkipMonitoringAccount: !Not
    - !Equals
      - !Ref AWS::AccountId
      - "xxxxxxxxxxxx"

Resources:
  Link:
    Type: AWS::Oam::Link
    Condition: SkipMonitoringAccount
    Properties:
      LabelTemplate: "$AccountName"
      ResourceTypes: 
        - "AWS::CloudWatch::Metric"
        - "AWS::Logs::LogGroup"
        - "AWS::XRay::Trace"
      SinkIdentifier: "arn:aws:oam:ap-northeast-1:xxxxxxxxxxxx:sink/e3ac4586-2dcd-4eb3-8862-86319d9ba439"

この YAML ファイルを、モニタリングアカウント側で実行することで、Organizations 配下の AWS アカウント群へ連携設定ができます。CloudFormation の画面で、Create StackSet を選びます。

image-20221211113848744.png

Upload a template file で Choose file を選択し、先ほどダウンロードした yaml ファイルを選択します。

image-20221211114026538.png

Next を押します。

image-20221211114121952.png

適当に名前を指定して、Next を押します。

image-20221211114257683.png

Next を押します。

image-20221211114353483.png

Organizations の中で、どの OU をデプロイ対象にするか選びます。ここで指定した OU 配下に子供の OU がいる場合、それも含まれます。CloudWatch 側の設定とはちょっと違う部分ですね。

image-20221211114525565.png

将来的に、該当の OU に新たに AWS アカウントが追加された時、自動的に CloudFormations を実行するように、Automatic deployment を有効化します。

また、リージョンも指定します。

image-20221211114604913.png

Next を押します

image-20221211114706769.png

Submit を押します

image-20221211114729942.png

StackSets が作成されました。OU 配下のすべての AWS アカウントに、実行されることがわかります。

image-20221211114853459.png

子供の AWS アカウントでは、CloudFormation の Stack が作成されています。

image-20221211115422112.png

一定時間後 COMPLETE になります。無事にリンクされたか確認するために、Manage source accounts を押します。

image-20221211122420996.png

無事にリンクされたものが一覧化されています。これで準備完了です。

image-20221211122456796.png

CloudWatch でどう見えるのか

これで設定が完了しました。メトリクスとログとトレースが一元管理されています。この環境では、メトリクスとログをみていきます。

Metrics

EBS や EC2 の個所を見てみましょう。

image-20221211151706259.png

EC2

メトリクスの画面に、新たに Account label と Accont id が追加されています。

image-20221211151835135.png

監視しているソースアカウント側の EC2 Stance ID を使ってフィルターを掛けてみると、異なる AWS アカウント上のリソースが見えてます。今までは、操作している AWS アカウントしかメトリクスを取得できませんでしたが、そのままの使い勝手でソースアカウント側のリソースが取得できています。

image-20221211151959333.png

ソースアカウント側のメトリクスは、リンク設定する以前のメトリクスデータも、普通に見えます。

image-20221211152245650.png

異なる AWS アカウントに所属するメトリクスを、同時に可視化することも、もちろん可能です。

image-20221211153118035.png

EBS

これも、EC2 と同様に複数の AWS アカウントのメトリクスが見えるようになっています。

image-20221211152540986.png

Logs

CloudWatch Logs も複数の AWS アカウントが管理できるようになっています。Log groups の画面を見ると、モニタリングアカウント・ソースアカウントが並べて表示されています。

image-20221211153526807.png

異なる AWS アカウントのログが見えます。

image-20221211153603706.png

また、Logs Insights で検索するときも、複数の AWS アカウントを対象に、横ぐし検索が可能です。Logs Insights の検索する画面で、検索対象のロググループを複数選べます。

image-20221211153832299.png

異なる AWS アカウントの中から、適当に二つを選びます。

image-20221211153933076.png

2 つの AWS アカウントにまたがった検索が可能です。

image-20221211154100860.png

Alarm

Alarm 自体は、ソースアカウントで設定されたアラームを、モニタリングアカウントで見えるわけではありません。

ただ、モニタリングアカウント側でメトリクスが収集されているので、アラームの設定をモニタリングアカウント側に再設定することで、一元管理が可能となります。

Create alarm を押してみます。

image-20221211154911466.png

異なる AWS アカウントのメトリクスが選べるため、必要なものを入れていくことで、アラームの一元管理が出来ます。

image-20221211155046474.png

Tips : OU の追加

CloudWatch の Settings の中で、連携する対象の OU を選択する画面があります。これは一度設定すると、policy 画面で設定変更する方法に変わります。

Edit を押して、

image-20221211121520393.png

このように追加して Save を押すと OU の追加が可能です。

                    "aws:PrincipalOrgPaths": [
                        "o-04bmzctzjw/r-z78w/ou-z78w-u86mdep6/",
                        "o-04bmzctzjw/r-z78w/ou-z78w-u86mdep6/ou-z78w-ojifguwy/"
                    ]

image-20221211121833311.png

検証でわかったこと

  • モニタリングアカウントから、複数のソースアカウントをリンクさせて集約することで、AWS アカウントをまたいだメトリクスの収集などが可能
  • 異なる AWS アカウントのメトリクスやログやトレースのデータが集約される。例えば、1 個のダッシュボード内に複数の AWS アカウントのデータをまとめて表示することも可能。
  • 1 個のモニタリングアカウントに、最大 100,000 個のソースアカウントを紐づけできる
  • 1 個のソースアカウントに、最大 5 個のモニタリングアカウントを紐づけできる
  • リンクさせるときには、Organizations 全体や OU 単位で自動的にリンクさせることも出来るし、Organizations 外の AWS アカウントを個別にリンクさせることも可能
  • Organizations の全体や組織単位でリンクする場合、CloudFormation Template を利用する。URL リンクは、Organizations 外の AWS アカウントの場合に利用できる。
  • ソースアカウントで既に設定している Alarm を、モニタリングアカウントで見えるわけではない
  • ソースアカウントとして連携する前のデータも、モニタリングアカウント側で見えるようになる
  • Container Insights で提供されるダッシュボードは、クロスアカウントオブザーバビリティの対象ではない。ただ、メトリクス自体はモニタリングアカウント側で収集されているので、独自のダッシュボードを作成することは出来そう。

参考 URL

Document : クロスアカウント
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html

New – Amazon CloudWatch のクロスアカウントオブザーバビリティ
https://aws.amazon.com/jp/blogs/news/new-amazon-cloudwatch-cross-account-observability/

[アップデート] Amazon CloudWatchが複数のAWSアカウントにわたるクロスアカウントのオブザーバビリティを開始しました
https://dev.classmethod.jp/articles/amazon-cloudwatch-now-allows-centralized-cross-account-monitoring/

[アップデート] CloudWatch でクロスアカウントアラームが使用可能に!
https://dev.classmethod.jp/articles/cloudwatch-cross-account-alarms/

CloudWatchを別アカウントに共有して1アカウントでまとめてモニタリングしたい
https://dev.classmethod.jp/articles/shared-cloudwatch-to-other-account/

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4