OpenTelemetry Collector
OpenTelemetry Collector는 텔레메트리 데이터를 수신 및 처리하고 내보내는 공급업체에 구애받지 않는 오픈 소스 에이전트입니다. 애플리케이션과 Amazon CloudWatch 간의 중앙 파이프라인 역할을 하면서 여러 소스로부터 지표, 로그 및 트레이스를 수집하고 OTLP(OpenTelemetry Protocol)를 사용하여 CloudWatch로 전송합니다.
CloudWatch에서 OpenTelemetry Collector를 사용하는 경우 다음과 같은 이점이 있습니다.
-
단일 에이전트를 통해 여러 애플리케이션 및 호스트에서 텔레메트리를 수집하여 CloudWatch에 대한 연결 수를 줄입니다.
-
속성 추가 또는 제거, 데이터 일괄 처리, 트레이스 샘플링을 포함하여 CloudWatch로 전송하기 전에 텔레메트리를 처리하고 필터링합니다.
-
AWS, 온프레미스 및 기타 클라우드 환경에서 동일한 수집기 구성을 사용하여 애플리케이션이 실행되는 위치와 무관하게 일관된 텔레메트리 파이프라인을 제공합니다.
-
CloudWatch Query Studio에서 PromQL(Prometheus Query Language)을 사용하여 쿼리할 수 있는 보강된 레이블이 포함된 지표를 CloudWatch로 전송합니다.
지원되는 수신기
OpenTelemetry Collector는 텔레메트리 데이터를 수집하기 위한 다양한 수신기를 지원합니다. OpenTelemetry SDK로 계측되는 애플리케이션용 OTLP 수신기와 같은 OpenTelemetry 수신기, 또는 Prometheus 수신기를 사용하여 기존 Prometheus 내보내기 도구에서 지표를 스크레이핑할 수 있습니다. CloudWatch와 함께 사용되는 일반적인 Prometheus 수신기:
-
Prometheus 수신기(Prometheus 호환 엔드포인트 스크레이핑에 사용)
-
호스트 지표 수신기(호스트에서 시스템 수준 지표 수집에 사용)
-
Kubernetes 클러스터 수신기(Kubernetes API 서버에서 클러스터 수준 지표 수집에 사용)
단일 수집기에서 여러 수신기를 구성할 수 있으므로 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 샘플링 구성으로 구성하여 CloudWatch Application Signals를 통해 스팬 100%를 안정적으로 기록하고, 중요 애플리케이션에 대한 전체 가시성을 확보할 수 있도록 합니다. 자세한 내용은 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]