0Pricing
AWS Solutions Architect · レッスン

CloudWatchダッシュボードとContainer Insights

複数サービスの運用ダッシュボードを構築し、ECSおよびEKSのクラスター単位のパフォーマンスメトリクスに対応するContainer Insightsを有効にします。

「CloudWatchダッシュボードとContainer Insights」はCoddyKit上の無料AWS Solutions Architectレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Solutions Architect学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Solutions Architectコースには全4レッスンが含まれています。

CloudWatch Dashboards の概要

CloudWatch Dashboardsは、AWS インフラストラクチャをカスタマイズ可能な複数ウィジェットのビューで表示し、運用状況を統合的に把握できるようにします。1つのダッシュボードに、複数の AWS サービスやアカウントのメトリクスを、折れ線グラフ、数値ウィジェット、ゲージ、アラーム、ログクエリの結果などを使って表示できます。ダッシュボードはグローバルリソースであるため、1つのダッシュボードに任意のリージョンのメトリクスを表示できます。ダッシュボードは公開して共有することも、IAM ポリシーによってアクセスを制限することもできます。

ダッシュボードウィジェット

CloudWatch ダッシュボードでは、複数のウィジェットタイプを利用できます。時系列メトリクスには折れ線グラフや積み上げ面グラフ、最新のメトリクス値の表示(KPI に最適)には数値ウィジェット、比較には棒グラフ、容量の指標にはゲージ、アラーム状態の概要表示にはアラームステータス、Live Tail や Insights のクエリ結果にはログテーブル、ラベルやドキュメントにはテキストを使用できます。複数のウィジェットタイプを1つのダッシュボードに組み合わせることで、チームはシステムの状態をひと目で評価できます。

# Create a dashboard via CLI (body must be escaped JSON)
aws cloudwatch put-dashboard \
  --dashboard-name ProductionOverview \
  --dashboard-body '{
    "widgets": [
      {
        "type": "metric",
        "properties": {
          "metrics": [["AWS/EC2","CPUUtilization","AutoScalingGroupName","my-asg"]],
          "period": 60,
          "stat": "Average",
          "title": "ASG CPU Utilization"
        }
      }
    ]
  }'

クロスアカウントおよびクロスリージョンのダッシュボード

CloudWatch は、モニタリングアカウントとソースアカウントを使用したクロスアカウントオブザーバビリティをサポートしています。中央のモニタリングアカウントを指定し、ソースアカウントをリンクすると、リンクされたすべてのアカウントからメトリクスとログを取得するダッシュボードを作成できます。これにより、マルチアカウント環境を監視するためにコンソールのアカウントを切り替える必要がなくなります。同じアカウント内のクロスリージョンウィジェットは、ダッシュボードの JSON 定義でリージョンを指定することで標準で利用できます。

# Enable cross-account sharing in a source account
aws cloudwatch put-dashboard \
  --dashboard-name MultiRegionView \
  --dashboard-body '{
    "widgets": [
      {
        "type": "metric",
        "properties": {
          "metrics": [
            ["AWS/RDS","DatabaseConnections","DBInstanceIdentifier","prod-db",{"region":"us-east-1"}],
            ["AWS/RDS","DatabaseConnections","DBInstanceIdentifier","prod-db-eu",{"region":"eu-west-1"}]
          ],
          "title": "DB Connections: us-east-1 vs eu-west-1"
        }
      }
    ]
  }'

CloudWatch Live Tail

CloudWatch Live Tail(2023年開始)を使用すると、1つ以上のロググループからログイベントをほぼリアルタイムでストリーミングし、CloudWatch コンソールまたは CLI に直接表示できます。これは、ログファイルに対して tail -f を実行するのと似ています。フィルターパターンを適用して、一致するイベントだけを表示することもできます。Live Tail は、完全な Insights クエリを実行せずに、アプリケーションが現在どのように動作しているかを確認する必要があるデプロイ時やインシデント調査で非常に役立ちます。

# Start a Live Tail session for a Lambda function's logs
aws logs start-live-tail \
  --log-group-identifiers '/aws/lambda/my-function' \
  --log-event-filter-pattern 'ERROR'

# The output streams log events in real time until you cancel (Ctrl+C)

Container Insights とは

CloudWatch Container Insightsは CloudWatch の機能であり、Amazon ECS(EC2 および Fargate)とAmazon EKS(EC2 および Fargate)で実行されるコンテナ化ワークロードからメトリクスとログを収集、集約、要約します。各アプリケーションに手動で計測処理を組み込まなくても、クラスター、サービス、ノード、ポッドレベルのパフォーマンスを確認できる事前構築済みダッシュボードを提供します。Container Insights は、CloudWatch Agent または EKS Fargate のログルーターを使用してデータを収集します。

# Enable Container Insights on an ECS cluster
aws ecs update-cluster-settings \
  --cluster my-ecs-cluster \
  --settings name=containerInsights,value=enabled

# Enable Container Insights on EKS (via CloudWatch Agent DaemonSet)
eksctl utils update-cluster-logging \
  --cluster my-eks-cluster \
  --enable-types all \
  --region us-east-1

Container Insights のメトリクス

Container Insights は、ECS/ContainerInsights および ContainerInsights 名前空間にメトリクスを収集します。EKS では、次のメトリクスが含まれます。ポッドレベル — pod_cpu_utilization、pod_memory_utilization、pod_network_rx_bytes。ノードレベル — node_cpu_utilization、node_memory_utilization、node_filesystem_utilization。クラスター レベル — cluster_failed_node_count、cluster_node_count。すべてのメトリクスには、クラスター、名前空間、サービス、ポッドのディメンションが付与されるため、正確にフィルタリングできます。

# Query pod memory utilization for a specific namespace
aws cloudwatch get-metric-statistics \
  --namespace ContainerInsights \
  --metric-name pod_memory_utilization \
  --dimensions \
    Name=ClusterName,Value=my-cluster \
    Name=Namespace,Value=production \
  --statistic Average \
  --period 60 \
  --start-time 2024-01-01T00:00:00Z \
  --end-time 2024-01-01T01:00:00Z

コンソールでの Container Insights ダッシュボード

Container Insights を有効にすると、CloudWatch コンソールに事前構築済みのコンテナマップとパフォーマンスモニタリングビューが自動的に表示されます。コンテナマップでは、ECS タスクまたは EKS ポッドが、健全性に応じて色分けされたビジュアルトポロジーとして表示され、個々のコンテナメトリクスを詳細に確認できます。パフォーマンスモニタリングビューでは、手動でダッシュボードを設定しなくても、クラスター、ノード、ポッド、コンテナのパフォーマンスを時系列グラフで確認できます。

Container Insights による ECS タスクのパフォーマンス

ECS on EC2では、Container Insights は各コンテナインスタンスに CloudWatch Agent をデーモンサービスとしてインストールします。ECS on Fargateでは、Container Insights は Fargate プラットフォームバージョン 1.4.0 のサイドカー メトリクスコレクターを使用します。ECS メトリクスには、クラスター、サービス、タスク、コンテナのディメンション別にアクセスできます。一般的なアラートパターンは、MemoryUtilized がタスクの MemoryReserved 値に近づいたときにアラームを発生させ、タスクが終了する前に OOM の可能性を検知することです。

# Get memory reservation and utilisation for a service
aws cloudwatch get-metric-statistics \
  --namespace ECS/ContainerInsights \
  --metric-name MemoryUtilized \
  --dimensions Name=ClusterName,Value=my-cluster Name=ServiceName,Value=api-service \
  --statistic Average \
  --period 300 \
  --start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
  --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ)

Application Signals と ServiceLens

CloudWatch ServiceLensは、メトリクス、ログ、トレースを統合されたサービスマップにまとめます。使用するには、CloudWatch と併せて AWS X-Ray を有効にする必要があります。ServiceLens はサービス間のエンドツーエンドのリクエストフローを可視化し、レイテンシーのボトルネックを強調表示して、サービスごとのエラー率を示します。より新しい後継機能であるCloudWatch Application Signalsは、コードを変更せずにアプリケーションへ自動的に計測処理を組み込み、SLO と SLI を公開します。これにより、単なるメトリクスを超えて信頼性を追跡できます。

ダッシュボードのベストプラクティス

効果的な CloudWatch ダッシュボードでは、次のベストプラクティスに従います。利用者ごとにダッシュボードを分ける(運用担当者向け、経営層向け、開発者向け)、オンコール時にチームが最初に確認する場所としてアラームステータスウィジェットを使用する、頻繁にアクセスするダッシュボードを固定する、CloudFormation の動的参照を使用して、ダッシュボードのメトリクス参照を実際のリソース名と一致させる、という方法です。1つのダッシュボードに情報を詰め込みすぎないでください。プレッシャーの中でインシデントを診断するときは、読みやすさが重要です。

CloudWatch Contributor Insights

CloudWatch Contributor Insightsは、構造化されたログデータを分析し、時間の経過に伴うメトリクスへの上位 N 件の寄与元を特定します。たとえば、5xx エラーを最も多く発生させている IP アドレス、リクエスト量が最も多い API パス、DynamoDB のスロットリングを最も多く発生させている顧客 ID などを表示できます。ルールでは、抽出して集計する JSON フィールドを定義します。新しいログデータが到着すると結果が継続的に更新され、時系列グラフとして表示されます。

# Enable Contributor Insights on a DynamoDB table
aws dynamodb enable-kinesis-streaming-destination \
  --table-name my-table

# Or enable CloudWatch Contributor Insights via the console:
# CloudWatch -> Contributor Insights -> Create rule
# Log group: /aws/dynamodb/tables
# Contributor field: $.TableName
# Aggregation: COUNT by $.requestID

クイックチェック

このレッスンで学んだ AWS Solutions Architect(SAA-C03)の概念について理解度を確認します。

レッスンのまとめ

このレッスンでは、CloudWatch Dashboardsが複数のウィジェットタイプをサポートし、アカウントやリージョンをまたいでメトリクスを集約できること、Container Insightsが手動で計測処理を組み込まなくても ECS と EKS からポッドレベルおよびノードレベルのメトリクスを自動的に収集すること、そしてContributor Insightsが構造化ログデータから上位の寄与元を特定することを学びました。次は、API レベルの監査を行う CloudTrail Trails と Event History について説明します。

よくある質問

「CloudWatchダッシュボードとContainer Insights」レッスンは無料ですか?

はい。「CloudWatchダッシュボードとContainer Insights」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Solutions Architectコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Solutions Architectコースには全4レッスンが含まれています。

「CloudWatchダッシュボードとContainer Insights」で何を学びますか?

複数サービスの運用ダッシュボードを構築し、ECSおよびEKSのクラスター単位のパフォーマンスメトリクスに対応するContainer Insightsを有効にします。 ブラウザで直接実行するハンズオンコードでAWS Solutions Architectを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AWS Solutions Architectを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAWS Solutions Architectは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「CloudWatchダッシュボードとContainer Insights」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAWS Solutions Architectレッスンでコードを書いて実行できますか?

はい。すべてのAWS Solutions Architectレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. CloudWatchメトリクス、名前空間、ディメンション
  2. CloudWatchアラームと複合アラーム
  3. CloudWatch LogsとLogs Insights
  4. CloudWatchダッシュボードとContainer Insights
← AWS Solutions Architectに戻る