AWS上にObservability検証環境を構築してみた(AMG + CloudWatch + X-Ray)

AWS上にObservability検証環境を構築してみた(AMG + CloudWatch + X-Ray)

2026.02.09

こんにちは、ゲームソリューション部のsoraです。
今回は、AWSのマネージドサービスを活用してObservability検証環境を構築してみたことについて書いていきます。

構成

今回構築したのは以下の構成です。
Fargateで動くサンプルアプリで、ADOT Collector + FluentBitをサイドカーとして配置し、トレースとログを収集します。
可視化にはAmazon Managed Grafana(AMG)を使用しています。

サンプルアプリがあるECSへはALB経由で接続します。

01-sr-amg-o11y

主なコンポーネント 役割
Amazon Managed Grafana (AMG) ダッシュボード・可視化
CloudWatch Logs アプリログの保存
X-Ray 分散トレーシング
ECS(Fargate) サンプルアプリ + ADOT Collector + FluentBit
ALB サンプルアプリへのHTTPアクセス

データのフローについては以下です。

  • トレース:アプリ → ADOT Collector → X-Ray
  • ログ:アプリ → FluentBit(FireLens)→ CloudWatch Logs
  • メトリクス:アプリ → CloudWatch Metrics(標準メトリクス)

また、以前EC2上にGrafana・Tempo・Lokiを構築する構成の記事も書いていますので、興味のある方はこちらもご覧ください。
https://dev.classmethod.jp/articles/aws-o11y-grafana-tempo-loki-amp/

構築

今回はTerraformで構築しました。
基本的なリソースが多いのでコードは割愛しますが、ポイントだけ解説します。

Amazon Managed Grafana(AMG)

AMGはフルマネージドなGrafanaサービスです。
インフラの管理不要でGrafanaのダッシュボードを利用でき、CloudWatchやX-Rayなど各種AWSサービスをデータソースとして接続できます。

AWSコンソールからワークスペースを作成すると、以下のような画面が表示されます。

02-sr-amg-o11y

  • 認証方式
    • SAML認証を使用して、外部IdPにOktaを使用します。
    • IAM Identity Center(旧AWS SSO)を使う方法もありますが、Organizationsがない環境だったため使用していません。
  • データソース
    • CloudWatchとX-Rayを選択すると、必要なIAM権限が自動的に設定されます。

Terraformでは以下のように定義しています。

resource "aws_grafana_workspace" "main" {
  name                     = "observability-demo"
  account_access_type      = "CURRENT_ACCOUNT"
  authentication_providers = ["SAML"]
  permission_type          = "SERVICE_MANAGED"
  role_arn                 = aws_iam_role.grafana.arn
  data_sources             = ["CLOUDWATCH", "XRAY"]
  grafana_version          = "10.4"

  configuration = jsonencode({
    plugins = {
      pluginAdminEnabled = true
    }
  })
}

pluginAdminEnabledを有効にしておくことで、Grafana UI上からX-Rayなどのプラグインをインストールできるようになります。

Oktaの設定

AMGの認証にはSAML 2.0対応のIdPが必要です。
今回はOktaの無料開発者アカウントを使用しました。

03-sr-amg-o11y

Oktaにはあらかじめ「Amazon Managed Grafana」のカタログアプリが用意されているため、こちらを利用します。

まず、Oktaの管理画面で アプリケーションアプリカタログを参照から「Amazon Managed Grafana」を検索して追加します。

04-sr-amg-o11y

05-sr-amg-o11y

サインオンタブ → 編集高度なサインオン設定に以下を入力します。

  • Name Space:AMGワークスペースID(例: g-xxxxxxx
  • Region:ap-northeast-1

06-sr-amg-o11y

同じ画面の属性セクションで、Admin権限の付与に使う属性を追加します。
role属性の値がAMG側の「adminのアサーション属性ロール」と一致するユーザーにGrafanaのAdmin権限が付与されます。

割り当てタブでGrafanaを使うユーザーをアサインします。

07-sr-amg-o11y

サインオンタブのSAML署名証明書セクション → アクティブな証明書のアクションIdPメタデータを表示でメタデータURLを取得します。

動作確認

サンプルアプリ

ALBのDNS名にブラウザでアクセスして、サンプルのアプリにアクセスします。

08-sr-amg-o11y

各ボタンで異なる特性のAPIを呼び出せるようにしています。
これらをそれぞれ実行して、出てきたログ・トレース・メトリクスを収集します。

ボタン 動作
Hello API 即時レスポンス
Slow API 2〜5秒遅延
Error API 500エラー
Chain API 複数API呼び出し

X-Rayでトレース確認

AWSコンソールでCloudWatch → Trace Mapを開くと、サービス間の依存関係とレイテンシ・エラー率が可視化されます。

09-sr-amg-o11y

Amazon Managed Grafana(AMG)

AMGのワークスペースURLにブラウザでアクセスすると、SAMLのログイン画面が表示されます。

10-sr-amg-o11y

Sign in with SAML をクリックするとOktaのログイン画面にリダイレクトされます。

11-sr-amg-o11y

12-sr-amg-o11y

13-sr-amg-o11y

14-sr-amg-o11y

認証が完了するとGrafanaの画面が表示されます。

15-sr-amg-o11y

データソースの設定

ワークスペース作成時にdata_sourcesでCloudWatchとX-Rayを指定していますが、これはIAM権限の自動設定です。
Grafana上でデータソースとして使うには、別途追加が必要です。

CloudWatchはデフォルトでインストール済みのため、Data sources からそのまま追加できます。
X-Rayはプラグインのインストールが必要です。
AdministrationPlugins → 「X-Ray」を検索してインストールした後、Data sources から追加します。
(先ほどのpluginAdminEnabled = trueの設定により、Grafana UI上からプラグインをインストールできます)

いずれもDefault Regionにap-northeast-1を設定するだけで、認証情報はワークスペースのIAMロールが自動的に使われます。

16-sr-amg-o11y

17-sr-amg-o11y

CloudWatchでログとメトリクスを可視化

Exploreからデータソースに「CloudWatch」を選択します。

ログを見る場合は「CloudWatch Logs」モードに切り替え、ロググループを指定してクエリを実行します。

18-sr-amg-o11y

メトリクスを見る場合は「CloudWatch Metrics」モードで、標準メトリクスを確認できます。

19-sr-amg-o11y

X-Rayでトレースを可視化

データソースに「X-Ray」を選択し、トレースを検索します。

20-sr-amg-o11y

最後に

今回は、AWSマネージドサービスを活用してObservability検証環境を構築してみました。
この記事がどなたかの参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事