OpenTelemetry を使用してメトリクスとトレースを収集する
一般的なオープンソースソリューションである OpenTelemetry Protocol (OTLP) で CloudWatch エージェントを使用し、アプリケーションまたはサービスからメトリクスおよびトレースを収集できます。任意の OpenTelemetry SDK を使用し、メトリクスおよびトレースを CloudWatch エージェントに送信できます。利用可能な OpenTelemetry SDKs の詳細については、「OpenTelemetry がサポートする言語 API と SDK
OpenTelemetry メトリクスおよびトレースを収集するには、CloudWatch エージェント設定ファイルに otlp
セクションを追加します。セクションには次のフィールドが含まれます。
-
grpc_endpoint
- オプション。gRPC リモートプロシージャコールを使用して送信された OpenTelemetry メトリクスまたはトレースをリッスンするために使用する CloudWatch エージェントのアドレスを指定します。形式はip:port
です。このアドレスは、OpenTelemetry SDK の gRPC エクスポーター用に設定されたアドレスと一致する必要があります。このフィールドを省略した場合、127.0.0.1:4317
のデフォルトが使用されます。 -
http_endpoint
- オプション。HTTP 経由で送信される OpenTelemetry メトリクスまたはトレースをリッスンするために CloudWatch エージェントが使用するアドレスを指定します。形式はip:port
です。このアドレスは、OpenTelemetry SDK の HTTP エクスポーター用に設定されたアドレスと一致する必要があります。このフィールドを省略した場合、127.0.0.1:4318
のデフォルトが使用されます。 -
tls
- オプション。サーバーが TLS で設定されることを指定します。-
cert_file
– TLS が必要な接続に使用する TLS 証明書へのパス。 -
key_file
– TLS が必要な接続に使用する TLS キーへのパス。
-
メトリクスおよびトレースを送信する方法および場所に応じて、otlp
セクションは CloudWatch エージェント設定ファイル内の複数のセクションに配置することができます。各 otlp
セクションには一意のエンドポイントが必要です。メトリクスとトレースエンドポイントの分割の詳細については、OpenTelemetry SDK ドキュメントの「OTLP Exporter Configuration
CloudWatch または Amazon Managed Service for Prometheus にメトリクスを送信するには、metrics
セクション内の metrics_collected
に otlp
セクションを追加します。さまざまな送信先にメトリクスを送信する方法の詳細については、「CloudWatch エージェント設定ファイルを手動で作成または編集する」を参照してください。次の例では、CloudWatch にメトリクスを送信する設定が示されています。
{ "metrics": { "metrics_collected": { "otlp": { "grpc_endpoint": "127.0.0.1:4317", "http_endpoint": "127.0.0.1:4318" } } } }
埋め込みメトリクス形式 (EMF) を使用して Amazon CloudWatch Logs にメトリクスを送信するには、logs
セクション内の metrics_collected
セクションに otlp
セクションを追加します。これにより、デフォルトで EMF ログが /aws/cwagent
ロググループおよび生成されたログストリームに送信されます。デフォルトでは、メトリクスは CWAgent
名前空間に抽出されます。次の例では、メトリクスを EMF ログとして CloudWatch Logs に送信する設定が示されています。
{ "logs": { "metrics_collected": { "otlp": { "grpc_endpoint": "127.0.0.1:4317", "http_endpoint": "127.0.0.1:4318" } } } }
トレースを AWS X-Ray に送信するには、traces
セクション内の traces_collected
に otlp
セクションを追加します。次の例では、X-Ray にトレースを送信する設定が示されています。
{ "traces": { "traces_collected": { "otlp": { "grpc_endpoint": "127.0.0.1:4317", "http_endpoint": "127.0.0.1:4318" } } } }