OpenTelemetry Collector
OpenTelemetry Collector は、テレメトリデータを受信、処理、エクスポートするオープンソースのベンダーに依存しないエージェントです。アプリケーションと Amazon CloudWatch 間の中央パイプラインとして機能し、複数のソースからメトリクス、ログ、トレースを収集し、OpenTelemetry Protocol (OTLP) を使用して CloudWatch に送信します。
CloudWatch で OpenTelemetry Collector を使用すると、次の利点があります:
-
単一のエージェントを介して複数のアプリケーションとホストからテレメトリを収集し、CloudWatch への接続数を減らします。
-
属性の追加または削除、データのバッチ処理、トレースのサンプリングなど、CloudWatch に送信する前にテレメトリを処理およびフィルタリングします。
-
AWS、オンプレミス、およびその他のクラウド環境全体で同じコレクター設定を使用し、アプリケーションの実行場所に関係なく一貫したテレメトリパイプラインを提供します。
-
CloudWatch Query Studio の Prometheus クエリ言語 (PromQL) を使用してクエリを実行できるリッチラベルを使用して、メトリクスを CloudWatch に送信します。
サポートされているレシーバー
OpenTelemetry Collector は、テレメトリデータの取り込み用に幅広いレシーバーをサポートします。OpenTelemetry SDK で計測されたアプリケーションの OTLP レシーバーなどの OpenTelemetry レシーバー、または Prometheus レシーバーを使用して、既存の Prometheus エクスポーターからメトリクスをスクレイプできます。CloudWatch で使用される一般的な Prometheus レシーバーは次のとおりです:
-
Prometheus 互換エンドポイントをスクレイピングするための Prometheus レシーバー
-
ホストからシステムレベルのメトリクスを収集するためのホストメトリクスレシーバー
-
Kubernetes API サーバーからクラスターレベルのメトリクスを収集するための Kubernetes クラスターレシーバー
1 つのコレクターで複数のレシーバーを設定できるため、OpenTelemetry メトリクスと Prometheus メトリクスの両方を収集し、同じパイプラインを介して CloudWatch に送信できます。使用可能なレシーバーの完全なリストについては、OpenTelemetry Collector リポジトリ
開始方法
前提条件 – トレースに OTLP エンドポイントを使用する場合は、トランザクション検索が有効になっていることを確認します。
手順:
-
OpenTelemetry Collector ディストリビューションの最新リリースをダウンロードします。詳細については、OpenTelemetry Collector のリリース
を参照してください。 -
ホストに OpenTelemetry Collector をインストールします。コレクターは、任意のオペレーティングシステムとプラットフォームで実行されます。詳細については、「Install the Collector
」を参照してください。 -
Amazon EC2 またはオンプレミスホストで AWS 認証情報を設定します。コレクターは、テレメトリデータの送信時にこれらの認証情報を使用して CloudWatch で認証します。詳細については以下を参照してください。
-
Amazon EKS または Kubernetes クラスターの AWS 認証情報を設定します。Amazon EKS の使用を開始する最も簡単な方法は、EKS OTel Container Insights アドオンを使用することです。OpenTelemetry Collector を直接使用したい場合は、以下の手順に従って、Amazon EKS または Kubernetes クラスターの AWS 認証情報を設定してテレメトリを CloudWatch に送信します。
-
CloudWatch エンドポイントにテレメトリを送信するようにコレクター設定で OTLP エクスポーターを設定します。以下の例を参照してください。
コレクター設定の例
以下のコンテンツをコピーして貼り付け、OTLP エンドポイントにログとトレースを送信するようにコレクターを設定します。
receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint:logs_otlp_endpointheaders: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint:traces_otlp_endpointauth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "region" service: "logs" sigv4auth/traces: region: "region" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
sigv4 を使用してログとトレースを us-east-1 に送信する例を次に示します。
receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: https://logs.us-east-1.amazonaws.com/v1/logs headers: x-aws-log-group: MyApplicationLogs x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: https://xray.us-east-1.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "us-east-1" service: "logs" sigv4auth/traces: region: "us-east-1" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
注記
OpenTelemetry SDK を always_on サンプリング設定に設定して、100% のスパンを確実に記録し、CloudWatch Application Signals を使用して重要なアプリケーションを完全に可視化します。詳細については、「OpenTelemetry Java SDK sampler configuration
以下のコンテンツをコピーして貼り付け、OTLP エンドポイントにメトリクスを送信するようにコレクターを設定します。
receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint:metrics_otlp_endpointauth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "region" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]
sigv4 を使用してメトリクスを us-east-1 に送信する例を次に示します。
receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics:443" auth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "us-east-1" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]