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
action
がreplace
の場合は必須です。action
がreplace
の場合に、指定したselectors
に一致するメトリクスとトレースに適用される一連のディメンションと値のペア。置き換えを行うには、以下のフィールドを指定する必要があります。target_dimension
replacements
が空でない場合は必須です。置き換える必要があるディメンションを指定します。value
replacements
が空でない場合は必須です。置き換え対象の値target_dimension
をこの値に置き換えます。
limiter
(オプション) このセクションを使用して、Application Signals が CloudWatch に送信するメトリクスとディメンションの数を制限し、コストを最適化します。disabled
(オプション)true
の場合、メトリクス制限機能は無効になります。デフォルトは です。false
drop_threshold
(オプション) 1 つの CloudWatch エージェントがエクスポートできる、1 つのローテーション間隔におけるサービスごとの個別メトリクスの最大数。デフォルトは 500 です。rotation_interval
(オプション) リミッターが区別してカウントするためにメトリクスレコードをリセットする間隔。これは、一連の数字と単位サフィックスを使用する文字列として表されます。分数がサポートされています。サポートされている単位サフィックスは、s
、m
、h
、ms
、us
、および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
セクションに暗黙的に適用されます。同じルールセットがメトリクスとトレースの両方に適用されます。
アクションの異なるルールが複数ある場合は、keep
、drop
、replace
という順序で適用されます。
次に、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
は以下のように処理されます。
ルール
keep01
により、ディメンションService
がpet-clinic-frontend
で、ディメンションRemoteService
がcustomers-service
であるメトリクスとトレースが保持されます。keep01
の適用後、処理されたメトリクスとトレースを対象にルールdrop01
が適用され、ディメンションOperation
がGET /api/customer/owners/*
であるメトリクスとトレースがドロップされます。drop01
の適用後、処理されたメトリクスとトレースを対象にルールreplace01
が適用され、ディメンションOperation
がPUT /api/customer/owners/*/pets/*
で、ディメンションRemoteOperation
がPUT /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": {} } } } }