OpenTelemetry Collector Contrib을 사용하여 CloudWatch에서 OpenTelemetry를 시작할 수 있습니다.
전제 조건
CloudWatch에서 트랜잭션 검색이 활성화되어 있는지 확인합니다. 자세한 내용은 트랜잭션 검색 섹션을 참조하세요.
OpenTelemetry Collector Contrib 다운로드
OpenTelemetry Collector Contrib 배포판
OpenTelemetry Collector Contrib 설치
모든 운영 체제 및 플랫폼에 OpenTelemetry Collector Contrib을 설치합니다. 자세한 정보는 Install the Collector
Amazon EC2 또는 온프레미스 호스트에서 AWS 자격 증명 설정
Amazon EC2 또는 온프레미스 호스트에서 AWS 자격 증명을 설정할 수 있습니다.
아래 절차에 따라 Amazon EC2 인스턴스의 CloudWatchAgentServerPolicy
IAM 역할에 IAM 정책을 연결합니다.
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. 역할을 선택하고 Amazon EC2 인스턴스에서 사용하는 역할을 선택합니다.
권한 탭에서 권한 추가, 정책 연결을 선택합니다.
검색 상자를 사용하여
CloudWatchAgentServerPolicy
정책을 검색합니다.CloudWatchAgentServerPolicy 정책을 선택하고 권한 추가를 선택합니다.
Amazon EKS 또는 Kubernetes 클러스터에 대한 AWS 자격 증명 설정
Amazon EKS 또는 Kubernetes 클러스터에 대해 AWS 자격 증명을 설정하여 CloudWatch로 원격 측정을 전송하도록 하려면 아래 절차를 따릅니다.
다음 명령을 사용하여 클러스터의 IAM OIDC ID 공급자를 생성합니다.
eksctl utils associate-iam-oidc-provider --cluster ${
CLUSTER_NAME}
--region ${REGION
} --approve다음 명령을 사용하여 OTel Collector의 Kubernetes 서비스 계정에 IAM 역할을 할당합니다.
eksctl create iamserviceaccount \ --name ${
COLLECTOR_SERVICE_ACCOUNT
}\ --namespace ${NAMESPACE
} \ --cluster ${CLUSTER_NAME
} \ --region ${REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
OpenTelemetry Collector 구성
아래 콘텐츠를 복사 및 붙여 넣어 로그 및 추적을 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_endpoint
headers: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint:traces_otlp_endpoint
auth: 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