モニタリング - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

モニタリング

モニタリングは、CPU やメモリなどのさまざまなメトリクスを収集し、Amazon Managed Service for Prometheus などの時系列データベースに保存するためのプロセスです。モニタリングシステムは、プッシュベースまたはプルベースにすることができます。プッシュベースのシステムでは、ソースはメトリクスを定期的に時系列データベースにプッシュします。プルベースのシステムでは、スクレイパーはさまざまなソースからメトリクスをスクレイプし、時系列データベースに保存します。デベロッパーは、メトリクスを分析し、メトリクスをフィルタリングし、経時的にプロットしてパフォーマンスを視覚化できます。モニタリングを正常に実装するには、アプリケーションとインフラストラクチャの 2 つの分野に分けることができます。

アプリケーションデベロッパーにとって、以下のメトリクスが重要です。

  • レイテンシー — レスポンスを受信するのにかかる時間

  • リクエストスループット — 1 秒あたりに処理されたリクエストの合計数

  • リクエストエラー率 — エラーの合計数

ビジネストランザクションに関係する各リソース (アプリケーションコンテナ、データベースなど) のリソース使用率、飽和度、エラー数をキャプチャします。例えば、CPU 使用率をモニタリングする場合、パフォーマンステストの実行中に平均 CPU 使用率、平均負荷、ピーク負荷を追跡できます。ストレステスト中にリソースが飽和状態に達したが、パフォーマンスの実行中に短時間飽和状態に達しない場合があります。

メトリクス

アプリケーションは、バネブートアクチュエータなど、さまざまなアクチュエータを使用してアプリケーションをモニタリングできます。これらの本番稼働用ライブラリは通常、実行中のアプリケーションに関する情報をモニタリングするための REST エンドポイントを公開します。ライブラリは、基盤となるインフラストラクチャ、アプリケーションプラットフォーム、およびその他のリソースをモニタリングできます。デフォルトのメトリクスのいずれかが要件を満たしていない場合、開発者はカスタムメトリクスを実装する必要があります。カスタムメトリクスは、デフォルトの実装のデータでは追跡できないビジネスキーパフォーマンス指標 (KPIsを追跡するのに役立ちます。例えば、サードパーティー API 統合のレイテンシーや完了したトランザクションの合計数などのビジネスオペレーションを追跡できます。

カーディナリティ

カーディナリティとは、メトリクスの一意の時系列の数を指します。メトリクスには、追加情報を提供するためにラベルが付けられます。例えば、特定の API のリクエスト数を追跡する REST ベースのアプリケーションは、カーディナリティが 1 であることを示します。ユーザーごとのリクエスト数を識別するユーザーラベルを追加すると、カーディナリティはユーザー数に比例して増加します。カーディナリティを作成するラベルを追加することで、さまざまなグループでメトリクスをスライスおよびダイスできます。カーディナリティはバックエンドモニタリング時系列データベースのメトリクスシリーズ数を増やすため、適切なユースケースに適したラベルを使用することが重要です。

解決方法

一般的なモニタリング設定では、モニタリングアプリケーションはアプリケーションからメトリクスを定期的にスクレイプするように設定されています。スクレイピングの周期性は、モニタリングデータの粒度を定義します。より短い間隔で収集されたメトリクスは、より多くのデータポイントが利用できるため、パフォーマンスをより正確に把握できる傾向があります。ただし、時系列データベースの負荷は、保存されるエントリが増えるにつれて増加します。通常、粒度は 60 秒が標準解像度で、1 秒が高解像度です。

DevOps チーム

アプリケーションデベロッパーは、インフラストラクチャとアプリケーションのメトリクスを視覚化するためのモニタリング環境を設定するように DevOps エンジニアに依頼することがよくあります。 DevOps エンジニアは、スケーラブルで、アプリケーション開発者が使用するデータ視覚化ツールをサポートする環境を設定する必要があります。これには、さまざまなソースからモニタリングデータをスクレイピングし、そのデータを Amazon Managed Service for Prometheus などの中央時系列データベースに送信することが含まれます。

バックエンドのモニタリング

モニタリングバックエンドサービスは、メトリクスデータの収集、保存、クエリ、視覚化をサポートします。これは通常、Amazon Managed Service for Prometheus や InfluxData InfluxDB などの時系列データベースです。サービス検出メカニズムを使用すると、モニタリングコレクターはさまざまなソースからメトリクスを収集して保存できます。パフォーマンステストでは、後で検索できるようにメトリクスデータを保存することが重要です。メトリクスには、少なくとも 15 日間のデータを保存することをお勧めします。ただし、メトリクスを長期間保存しても大きなメリットは得られず、不要なストレージコストが発生します。パフォーマンステストでは大量のメトリクスを生成できるため、メトリクスインフラストラクチャは高速なクエリパフォーマンスを提供しながらスケーリングすることが重要です。モニタリングバックエンドサービスは、メトリクスデータの表示に使用できるクエリ言語を提供します。

視覚化

アプリケーションデータを表示して有意義なインサイトを提供できる視覚化ツールを提供します。 DevOps エンジニアとアプリケーションデベロッパーは、モニタリングバックエンドのクエリ言語を学習し、緊密に連携して再利用できるダッシュボードテンプレートを生成する必要があります。ダッシュボードには、レイテンシーとエラーを含め、インフラストラクチャとアプリケーションリソース全体のリソース使用率と飽和度も表示します。

モニタリングインフラストラクチャの自動化

ログ記録と同様に、モニタリングインフラストラクチャのインストールと運用を自動化して、さまざまなアプリケーションのさまざまな要件に対応できるようにすることが重要です。IaC ツールを使用して、モニタリングインフラストラクチャのバックエンドをプロビジョニングします。その後、モニタリングインフラストラクチャを共有サービスとして、または特定のアプリケーションの独立したカスタムデプロイとしてプロビジョニングできます。

CD パイプラインを使用して以下を自動化します。

  • モニタリングインフラストラクチャをオンデマンドでデプロイし、不要な場合は削除します。

  • メトリクスをフィルタリングまたは集計するようにモニタリング設定を更新します。

  • アプリケーションダッシュボードをデプロイします。

モニタリングツール

Amazon Managed Service for Prometheus は、コンテナインフラストラクチャ用の Prometheus 互換のモニタリングサービスであり、コンテナのアプリケーションメトリクスを使用して、コンテナ環境を大規模に安全にモニタリングできます。詳細については、ブログ記事「Amazon Managed Service for Prometheus の開始方法」を参照してください。

Amazon CloudWatch は、 でフルスタックのモニタリングを提供します AWS。 は、ネイティブソリューションとオープンソースソリューションの両方 CloudWatch AWS をサポートしているため、テクノロジースタック全体で何が起こっているかをいつでも把握できます。

ネイティブ AWS ツールには以下が含まれます。

Amazon CloudWatch は、 CloudWatch Container Insights によるコンテナモニタリングなど、特定のユースケースに対応する専用機能を提供しています。これらの機能は に組み込まれ CloudWatch ているため、ログ、メトリクスの収集、モニタリングを設定できます。

コンテナ化されたアプリケーションとマイクロサービスの場合は、Container Insights を使用してメトリクスとログを収集、集約、要約します。Container Insights は、Amazon Elastic Compute Cloud (Amazon EC2) 上の Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Kubernetes Service (Amazon EKS)、および Kubernetes プラットフォームで使用できます。Container Insights は、埋め込みメトリクス形式のパフォーマンスログイベントとしてデータを収集します。これらのパフォーマンスログイベントエントリは、高カーディナリティデータの取り込みと大規模なストレージをサポートする構造化された JSON スキーマを使用します。

Amazon EKS で Container Insights を実装する方法については、ブログ記事「Introducing Amazon CloudWatch Container Insights for Amazon EKS Fargate using AWS Distro for OpenTelemetry」を参照してください。