Amazon ECS のモニタリングツール - Amazon Elastic Container Service

Amazon ECS のモニタリングツール

AWS は、Amazon ECS のモニタリングに使用できるさまざまなツールを提供します。これらのツールの一部はモニタリングを行うように設定できますが、一部のツールは手動による介入が必要です。モニタリングタスクをできるだけ自動化することをお勧めします。

自動モニタリングツール

以下の自動化されたモニタリングツールを使用して、Amazon ECS を監視し、問題が発生したときにレポートできます。

  • Amazon CloudWatch のアラーム – 単一のメトリクスを指定した期間モニタリングし、特定のしきい値に対する複数の期間にわたるメトリクスの値に基づいて、1 つ以上のアクションを実行します。アクションは、Amazon Simple Notification Service (Amazon SNS) のトピックまたは Amazon EC2 Auto Scaling のポリシーに送信される通知です。CloudWatch アラームは、特定の状態にあるという理由だけでアクションを呼び出すことはありません。状態が変更され、指定された期間維持されている必要があります。詳細については、「CloudWatch を使用して Amazon ECS をモニタリングする」を参照してください。

    Fargate 起動タイプを使用するタスクがあるサービスでは、CloudWatch アラームを使用して、CPU やメモリの使用率などの CloudWatch メトリクスに基づいてサービス内のタスクをスケールインおよびスケールアウトできます。詳細については、「Amazon ECS サービスを自動的にスケールする」を参照してください。

    EC2 起動タイプを使用するタスクまたはサービスがあるクラスターでは、CloudWatch アラームを使用して、クラスターのメモリ使用率などの CloudWatch メトリクスに基づいてコンテナインスタンスをスケールインおよびスケールアウトできます。

    Amazon ECS に最適化された Amazon Linux AMI で起動されたコンテナインスタンスの場合は、CloudWatch Logs を使用してコンテナインスタンスのさまざまなログを 1 つの便利な場所で表示できます。CloudWatch エージェントをコンテナインスタンスにインストールする必要があります。詳細については、Amazon CloudWatch ユーザーガイドの「コマンドラインを使用して CloudWatch エージェントをダウンロードおよび設定する」を参照してください。また、ecsInstanceRole ロールに ECS-CloudWatchLogs ポリシーを追加する必要があります。詳細については、「コンテナインスタンスのモニタリングに必要なアクセス許可」を参照してください。

  • Amazon CloudWatch Logs – タスク定義でawslogs ログドライバーを指定することで、Amazon ECS タスクのコンテナからのログファイルをモニタリング、保存、およびアクセスできます。詳細については、「Amazon ECS ログを CloudWatch に送信する 」を参照してください。

    Amazon ECS コンテナインスタンスからのオペレーティングシステムおよび Amazon ECS コンテナエージェントのログファイルをモニタリング、保存、アクセスすることもできます。この方法を使用したログへのアクセスは、EC2 起動タイプを使用するコンテナの場合で使うことができます。

  • Amazon CloudWatch Events - イベントに一致したものを 1 つ以上のターゲットの関数またはストリームに渡して、変更、状態の情報の収集、是正措置を行います。詳細については、このガイドの「EventBridge を使用して Amazon ECS エラーへの対応を自動化する」および「Amazon EventBridge ユーザーガイド」の「EventBridge is the evolution of Amazon CloudWatch Events」を参照してください。

  • Container Insights – コンテナ化されたアプリケーションとマイクロサービスからメトリクスとログを収集、集計、要約します。Container Insights は、埋め込みメトリクス形式を使用して、パフォーマンスログイベントとしてデータを収集します。このパフォーマンスログイベントは、高濃度データを取り込み、大規模に格納することが可能な構造化された JSON スキーマを使用するエントリです。CloudWatch は、このデータから、クラスター、タスク、サービスのレベルで CloudWatch メトリクスとして集計されたメトリクスを作成します。Container Insights が収集するメトリクスは、CloudWatch 自動ダッシュボードで使用でき、CloudWatch コンソールの [メトリクス] セクションでも表示できます。

  • AWS CloudTrail のログのモニタリング – アカウント間でログファイルを共有し、CloudTrail のログファイルを CloudWatch Logs に送信してリアルタイムでモニタリングします。また、ログを処理するアプリケーションを Java で作成し、CloudTrail からの提供後にログファイルが変更されていないことを確認します。詳細については、「AWS CloudTrail を使用して Amazon ECS API コールをログに記録する」と、AWS CloudTrail ユーザーガイドの「CloudTrail ログファイルの操作」を参照してください。

  • ランタイムモニタリング – AWS 環境内のクラスターとコンテナの脅威を検出します。Runtime Monitoring では、ファイルアクセス、プロセス実行、ネットワーク接続などの個々の Amazon ECS ワークロードを実行時に可視化する、GuardDuty セキュリティエージェントを使用します。

手動モニタリングツール

Amazon ECS のモニタリングでもう 1 つ重要な点は、CloudWatch のアラームの対象外の項目を手動でモニタリングすることです。Trusted Advisor、CloudWatch、その他の AWS コンソールのダッシュボードには、AWS 環境の状態が一目でわかるように表示されます。コンテナインスタンスおよびタスクのコンテナのログファイルも確認することをお勧めします。

  • Amazon ECS コンソール:

    • EC2 起動タイプのクラスターメトリクス

    • サービスメトリクス

    • サービスのヘルスステータス

    • サービスデプロイイベント

  • CloudWatch のホームページ:

    • 現在のアラームとステータス

    • アラームとリソースのグラフ

    • サービスのヘルスステータス

    また、CloudWatch を使用して以下のことを行えます。

    • 重要なサービスをモニタリングするためにカスタマイズされたダッシュボードを作成する。

    • メトリクスデータをグラフ化して、問題のトラブルシューティングを行い、傾向を確認する。

    • AWS リソースのすべてのメトリクスを検索およびブラウズする。

    • 問題があることを通知するアラームを作成/編集する。

  • コンテナのヘルスチェック - コンテナ上でローカルに実行され、アプリケーションのヘルスと可用性を検証するコマンドです。これは、タスク定義でコンテナごとに構成します。

  • AWS Trusted Advisor は、AWS リソースのパフォーマンス、信頼性、セキュリティ、費用効率を向上するためのモニタリングに役立ちます。すべてのユーザーは、4 つの Trusted Advisor; チェックを利用できます。ビジネスまたはエンタープライズサポートプランのユーザーは、50 以上のチェックを利用できます。詳細については、「AWS Trusted Advisor」を参照してください。

    Trusted Advisor には Amazon ECS に関連する以下のチェックがあります。

    • 1 つのアベイラビリティーゾーンでサービスが実行されていることを示す耐障害性。

    • 複数のアベイラビリティーゾーンでスプレッド配置戦略を使用していないことを示す耐障害性。

  • AWS Compute Optimizer は、AWS リソースの設定と使用率のメトリクスを分析するサービスです。Compute Optimizer は、リソースが最適かどうかを報告し、最適化に関するレコメンデーションを生成してコストを削減およびワークロードのパフォーマンスを改善します。

    詳細については、「Amazon ECS に関する AWS Compute Optimizer 推奨事項」を参照してください。