CloudWatch Application Signals を有効にする - Amazon CloudWatch

CloudWatch Application Signals を有効にする

CloudWatch Application Signals を使用すると、AWS 上でアプリケーションを自動的に計測して、ビジネス目標に照らしてアプリケーションのパフォーマンスを追跡できます。Application Signals では、Java アプリケーションとその依存関係やエッジをアプリケーション中心の統合ビューで把握できます。詳細については、「Application Signals」を参照してください。

CloudWatch Application Signals は、CloudWatch エージェントを利用して、自動計測されたアプリケーションからメトリクスとトレースを受け取ります。必要に応じて、ルールを適用して高基数を減らしてから、処理済みのテレメトリを CloudWatch に公開できます。エージェント設定ファイルを使用すると、設定を特に Application Signals 向けにカスタマイズしてから CloudWatch エージェントに提供できます。エージェント設定ファイルでは logs セクション内の metrics_collected セクションに application_signals セクションがあり、CloudWatch エージェントが自動計測されたアプリケーションからメトリクスを受け取ることを指定しています。同様に、traces セクション内の traces_collected セクションに application_signals セクションがあり、CloudWatch エージェントが自動計測されたアプリケーションからトレースを受け取ることを指定しています。さらに、ここで説明しているように、必要に応じてカスタム設定ルールを渡して、公開する高基数テレメトリを減らすことができます。

  • Amazon EKS クラスターの場合、Amazon CloudWatch Observability EKS アドオンをインストールすると、デフォルトで CloudWatch エージェントが自動計測されたアプリケーションからメトリクスとトレースの両方を受け取るようになります。カスタム設定ルールを渡すことにした場合は、(オプション) その他の設定 で説明しているように、別途必要な設定を行ってそのルールを作成または更新するときに、Amazon EKS アドオンにカスタムエージェント設定を渡します。

  • Amazon EC2 などサポートされているその他のプラットフォームの場合、CloudWatch エージェントを起動するには、Application Signals を有効にするようにエージェントを設定しておく必要があります。そのためにはこの後で説明しているように、application_signals セクションを指定し、さらに必要に応じてカスタム設定ルールを指定します。

次に、CloudWatch エージェント設定ファイルにあるフィールドのうち、CloudWatch Application Signals に関連するフィールドの概要を示します。

  • logs

    • metrics_collected - このフィールドには、エージェントにログ収集を指示するセクションを含めることができます。CloudWatch Application Signals と Container Insights のオブザーバビリティを Amazon EKS 向けに強化するといったユースケースを利用できるようになります。

      注記

      以前このセクションは、エージェントが埋め込みメトリクス形式のログを収集するように指定するためにも使用されていました。それらの設定はもう必要ありません。

      • application_signals (オプション) CloudWatch Application Signals を有効にして、自動計測されたアプリケーションからメトリクスを受け取るよう指定し、CloudWatch Application Signals を利用しやすくします。

        • rules (オプション) 高基数を使用する状況に対応できるように、条件に従ってメトリクスとトレースを選択してアクションを適用する一連のルール。各ルールに次のフィールドの要素を含めることができます。

          • rule_name (オプション) ルールの名前。

          • selectors (オプション) メトリクスとトレースの一連のディメンションマッチャー。各セレクターでは、以下のフィールドを指定する必要があります。

            • dimension selectors が空でない場合は必須です。フィルターとして使用するメトリクスとトレースのディメンションを指定します。

            • match selectors が空でない場合は必須です。指定したディメンションの値のマッチングに使用されるワイルドカードパターン。

          • action (オプション) 指定したセレクターに一致したメトリクスとトレースに適用するアクション。action の値は、次のキーワードのいずれかにする必要があります。

            • keep メトリクスとトレースを selectors に一致した場合にのみ CloudWatch に送信するように指定します。

            • drop selectors に一致するメトリクスとトレースをドロップするように指定します。

            • replace selectors に一致するメトリクスとトレースのディメンションを置き換えるように指定します。replacements セクションに従って置き換えられます。

          • replacements actionreplace の場合は必須です。actionreplace の場合に、指定した selectors に一致するメトリクスとトレースに適用される一連のディメンションと値のペア。置き換えを行うには、以下のフィールドを指定する必要があります。

            • target_dimension replacements が空でない場合は必須です。置き換える必要があるディメンションを指定します。

            • value replacements が空でない場合は必須です。置き換え対象の値 target_dimension をこの値に置き換えます。

        • limiter (オプション) このセクションを使用して、Application Signals が CloudWatch に送信するメトリクスとディメンションの数を制限し、コストを最適化します。

          • disabled (オプション) true の場合、メトリクス制限機能は無効になります。デフォルトは です。false

          • drop_threshold (オプション) 1 つの CloudWatch エージェントがエクスポートできる、1 つのローテーション間隔におけるサービスごとの個別メトリクスの最大数。デフォルトは 500 です。

          • rotation_interval (オプション) リミッターが区別してカウントするためにメトリクスレコードをリセットする間隔。これは、一連の数字と単位サフィックスを使用する文字列として表されます。分数がサポートされています。サポートされている単位サフィックスは、smhmsus、および ns です。

            デフォルトは 1 時間の 1h です。

          • log_dropped_metrics (オプション) Application Signals のメトリクスがドロップされたときに、エージェントが CloudWatch エージェントログにログを書き込む必要があるかどうかを指定します。デフォルト: false

            注記

            このログ記録を有効にするには、agent セクションの debug パラメータも true に設定する必要があります。

  • traces

    • traces_collected

      • application_signals オプション。このフィールドを指定すると、CloudWatch Application Signals を利用しやすくするために、CloudWatch エージェントが自動計測されたアプリケーションからメトリクスを受け取るようにできます。

注記

カスタムの application_signals ルールは、logs セクションに含まれている metrics_collected セクションの下に指定している場合でも、traces_collected セクションに暗黙的に適用されます。同じルールセットがメトリクスとトレースの両方に適用されます。

アクションの異なるルールが複数ある場合は、keepdropreplace という順序で適用されます。

次に、CloudWatch エージェント設定ファイルでカスタムルールを適用する場合の設定例を示します。

{ "logs": { "metrics_collected": { "application_signals": { "rules": [ { "rule_name": "keep01", "selectors": [ { "dimension": "Service", "match": "pet-clinic-frontend" }, { "dimension": "RemoteService", "match": "customers-service" } ], "action": "keep" }, { "rule_name": "drop01", "selectors": [ { "dimension": "Operation", "match": "GET /api/customer/owners/*" } ], "action": "drop" }, { "rule_name": "replace01", "selectors": [ { "dimension": "Operation", "match": "PUT /api/customer/owners/*/pets/*" }, { "dimension": "RemoteOperation", "match": "PUT /owners" } ], "replacements": [ { "target_dimension": "Operation", "value": "PUT /api/customer/owners/{ownerId}/pets{petId}" } ], "action": "replace" } ] } } }, "traces": { "traces_collected": { "application_signals": {} } } }

この例の設定ファイルの場合、rules は以下のように処理されます。

  1. ルール keep01 により、ディメンション Servicepet-clinic-frontend で、ディメンション RemoteServicecustomers-service であるメトリクスとトレースが保持されます。

  2. keep01 の適用後、処理されたメトリクスとトレースを対象にルール drop01 が適用され、ディメンション OperationGET /api/customer/owners/* であるメトリクスとトレースがドロップされます。

  3. drop01 の適用後、処理されたメトリクスとトレースを対象にルール replace01 が適用され、ディメンション OperationPUT /api/customer/owners/*/pets/* で、ディメンション RemoteOperationPUT /owners であるメトリクスとトレースが更新されます。その結果、Operation ディメンションが PUT /api/customer/owners/{ownerId}/pets{petId} に変更されます。

メトリクスの制限を 100 に変更し、ドロップされたメトリクスのログ記録を有効にして、ローテーション間隔を 2 時間に設定することで、Application Signals の基数を管理する CloudWatch 設定ファイルの完全な例を以下に示します。

{ "logs": { "metrics_collected": { "application_signals": { "limiter": { "disabled": false, "drop_threshold": 100, "rotation_interval": "2h", "log_dropped_metrics": true } } }, "traces": { "traces_collected": { "application_signals": {} } } } }