アプリケーションレベルの CloudWatch 設定 - AWS 規範ガイダンス

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

アプリケーションレベルの CloudWatch 設定

アプリケーションログとメトリクスは、実行中のアプリケーションによって生成され、アプリケーション固有です。組織で定期的に使用されるアプリケーションを適切にモニタリングするために必要なログとメトリクスを定義してください。例えば、組織が Web ベースのアプリケーション用の Microsoft インターネットインフォメーションサーバー (IIS) で標準化している場合があります。IIS の標準的なログとメトリクス CloudWatch 構成を作成して、組織全体で使用することもできます。アプリケーション固有の設定ファイルは、一元化された場所 (S3 バケットなど) に格納され、ワークロード所有者または自動取得によってアクセスされ、CloudWatch 設定ディレクトリにコピーされます。CloudWatch エージェントは、各 EC2 インスタンスまたはサーバーの設定ファイルディレクトリにある CloudWatch 設定ファイルをコンポジット CloudWatch 設定に自動的に結合します。その結果、組織の標準的なシステムレベルの設定と、関連するすべてのアプリケーションレベルの CloudWatch 設定を含む CloudWatch 設定が作成されます。

ワークロードの所有者は、すべての重要なアプリケーションおよびコンポーネントのログファイルとメトリクスを特定して構成する必要があります。

アプリケーションレベルのログの設定

アプリケーションレベルのロギングは、アプリケーションが商用オフザシェルフ (COTS) またはカスタム開発アプリケーションのどちらであるかによって異なります。COTS アプリケーションとそのコンポーネントは、ログの詳細レベル、ログファイル形式、ログファイルの場所など、ログの構成と出力に関するいくつかのオプションを提供します。ただし、ほとんどの COTS またはサードパーティアプリケーションは、ロギング (例えば、アプリケーションのコードを更新して、構成できない追加のログステートメントまたは形式を含めるなど) を根本的に変更することを許可しません。少なくとも、警告およびエラーレベルの情報(できれば JSON 形式)をログに記録するには、COTS またはサードパーティアプリケーションのロギングオプションを設定する必要があります。

CloudWatch 設定にアプリケーションのログファイルを含めることで、カスタム開発したアプリケーションを CloudWatch Logs と統合できます。カスタムアプリケーションを使用すると、ログ出力形式をカスタマイズしたり、コンポーネント出力を個別のログファイルに分類したり、必要な詳細を追加したりできるため、ログの品質と制御が向上します。分析と処理が簡単になるように、ロギングライブラリと組織に必要なデータと書式を必ず確認して標準化してください。

CloudWatch Logs PutLogEvents API コールまたは AWS SDK を使用して CloudWatch ログストリームに書き込むこともできます。API または SDK は、分散した一連のコンポーネントおよびサーバーにわたる単一のログストリームへのロギングを調整するなど、カスタムロギング要件に使用できます。ただし、保守が最も簡単で広く適用可能なソリューションは、ログファイルに書き込むようにアプリケーションを設定し、CloudWatch エージェントを使用してログファイルを読み取り、CloudWatch にストリーミングすることです。

また、アプリケーションログファイルから測定するメトリクスの種類も考慮する必要があります。メトリクスフィルターを使用して、CloudWatch ロググループでこのデータを測定、グラフ化、アラームできます。例えば、メトリクスフィルターを使用して、ログで失敗したログイン試行を特定してカウントできます。

アプリケーションログファイルで CloudWatch の埋め込みメトリクス 形式 を使用して、独自のアプリケーションメトリクスを作成することも可能です。

アプリケーションレベルのメトリクスを設定する

カスタムメトリクスは、 AWS サービスによって CloudWatch に直接提供されず、CloudWatch メトリクスのカスタム名前空間で公開されるメトリクスです。すべてのアプリケーションメトリクスは、カスタム CloudWatch メトリクスと見なされます。アプリケーションメトリクスは、EC2 インスタンス、アプリケーションコンポーネント、API コール、またはビジネス関数に揃える場合があります。また、メトリクスで選択したディメンションの重要性とカーディナリティも考慮する必要があります。カーディナリティの高いディメンションは、多数のカスタムメトリクスを生成し、CloudWatch のコストを増加させる可能性があります。

CloudWatch は、以下を含む複数の方法でアプリケーションレベルのメトリクスをキャプチャするのに役立ちます。

  • procstat プラグイン からキャプチャする個々のプロセスを定義して、プロセスレベルのメトリクスを取得します。

  • アプリケーションは Windows パフォーマンスモニターにメトリクスを公開し、このメトリクスは CloudWatch の設定で定義されます。

  • メトリクスフィルターとパターンは CloudWatch 内のアプリケーションのログに適用されます。

  • アプリケーションは、CloudWatch 組み込みメトリクス形式を使用して CloudWatch ログに書き込みます。

  • アプリケーションは API または AWS SDK を介して CloudWatch にメトリクスを送信します。

  • アプリケーションは、CloudWatch エージェントが設定された 収集された または statsD デーモンにメトリクスを送信します。

procstat を使用して、CloudWatch エージェントで重要なアプリケーションプロセスをモニタリングおよび測定できます。これにより、アプリケーションで重要なプロセスが実行されなくなった場合に、アラームを発生させ、アクション (通知や再起動プロセスなど) を実行するのに役立ちます。また、アプリケーションプロセスのパフォーマンス特性を測定し、特定のプロセスが異常動作している場合にアラームを発生させることもできます。

Procstat モニタリングは、追加のカスタムメトリクスを使用して COTS アプリケーションを更新できない場合にも役立ちます。例えば、my_process を測定しカスタム cpu_time ディメンションを含む application_version メトリクスを作成できます。メトリクスごとに異なるディメンションがある場合は、アプリケーションに対して複数の CloudWatch エージェント設定ファイルを使用することもできます。

アプリケーションが Windows で実行されている場合は、すでに Windows パフォーマンスモニターにメトリクスを公開しているかどうかを評価する必要があります。多くの COTS アプリケーションは Windows パフォーマンスモニタと統合されているため、アプリケーションのメトリクスを簡単にモニタリングできます。CloudWatch は Windows パフォーマンスモニターとも統合され、すでに利用可能なメトリクスをキャプチャできます。

アプリケーションによって提供されるロギング形式とログ情報を確認して、メトリクス・フィルタを使用して抽出できるメトリクスを判別してください。アプリケーションの履歴ログを確認して、エラーメッセージと異常シャットダウンがどのように表示されるかを判断できます。また、以前に報告された問題を確認して、問題が繰り返し発生しないようにメトリクスを取得できるかどうかを判断する必要があります。また、アプリケーションのドキュメントを確認し、アプリケーション開発者にエラーメッセージの識別方法を確認するよう依頼する必要があります。

カスタム開発アプリケーションの場合は、アプリケーションの開発者と協力して、CloudWatch 埋め込みメトリクス形式、 AWS SDK、または AWS API を使用して実装できる重要なメトリクスを定義します。推奨されるアプローチは、埋め込みメトリクスフォーマットを使用することです。必要な形式でステートメントを記述するのに役立つように、 AWS 提供されたオープンソースの組み込みメトリクス形式のライブラリを使用できます。また、アプリケーション固有の CloudWatch 設定 を更新して、埋め込みメトリクスフォーマットエージェントを含める必要があります。これにより、EC2 インスタンスで実行されているエージェントは、組み込みメトリクス形式のメトリクスを CloudWatch に送信するローカル埋め込みメトリクス形式のエンドポイントとして機能します。

アプリケーションが collectd または statsd へのメトリクスの公開をすでにサポートしている場合は、それらを活用して CloudWatch にメトリクスを取り込むことができます。