OpenTelemetry Collector Contrib
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 자격 증명을 설정할 수 있습니다.
- Setup IAM permissions for Amazon EC2
-
아래 절차에 따라 Amazon EC2 인스턴스의 CloudWatchAgentServerPolicy
IAM 역할에 IAM 정책을 연결합니다.
https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.
역할을 선택하고 Amazon EC2 인스턴스에서 사용하는 역할을 선택합니다.
권한 탭에서 권한 추가, 정책 연결을 선택합니다.
검색 상자를 사용하여 CloudWatchAgentServerPolicy
정책을 검색합니다.
CloudWatchAgentServerPolicy 정책을 선택하고 권한 추가를 선택합니다.
- Setup IAM permissions for on-premise hosts
-
온프레미스 호스트에 권한을 제공하는 데 사용할 IAM 사용자를 생성할 수 있습니다.
https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.
사용자, 사용자 생성을 선택합니다.
사용자 세부 정보의 사용자 이름에 새 IAM 사용자의 이름을 입력합니다. 이는 호스트를 인증하는 데 사용되는 AWS의 로그인 이름입니다.
다음을 선택합니다.
권한 설정 페이지의 권한 옵션 아래에서 정책 직접 연결을 선택합니다.
권한 정책 목록에서 사용자에게 추가할 CloudWatchAgentServerPolicy 정책을 선택합니다.
다음을 선택합니다.
검토 및 생성 페이지에서 사용자 이름이 만족스러운지, CloudWatchAgentServerPolicy 정책이 권한 요약에 있는지 확인합니다.
사용자 생성을 선택합니다.
AWS 액세스 키 및 보안 암호 키 생성 후 검색 - IAM 콘솔의 탐색 창에서 사용자를 선택한 다음 이전 단계에서 생성한 사용자의 이름을 선택합니다.
사용자의 페이지에서 보안 자격 증명 탭을 선택합니다.
액세스 키 섹션에서 액세스 키 생성을 선택합니다.
액세스 키 생성 1단계에서 명령줄 인터페이스(CLI)를 선택합니다.
액세스 키 만들기 2단계에서 필요에 따라 태그를 입력하고 다음을 선택합니다.
액세스 키 생성 3단계에서 .csv 파일 다운로드를 선택하여 IAM 사용자의 액세스 키 및 비밀 액세스 키와 함께 .csv 파일을 저장합니다. 다음 단계에 이 정보가 필요합니다.
완료를 선택합니다.
다음 명령을 입력하여 온프레미스 호스트에서 AWS 자격 증명을 구성합니다. ACCESS_KEY_ID와 SECRET_ACCESS_ID를 이전 단계에서 다운로드한 .csv 파일에서 새로 생성된 액세스 키와 시크릿 액세스 키로 바꿉니다.
$ aws configure
AWS Access Key ID [None]: ACCESS_KEY_ID
AWS Secret Access Key [None]: SECRET_ACCESS_ID
Default region name [None]: MY_REGION
Default output format [None]: json
Amazon EKS 또는 Kubernetes 클러스터에 대한 AWS 자격 증명 설정
Amazon EKS 또는 Kubernetes 클러스터에 대해 AWS 자격 증명을 설정하여 CloudWatch로 원격 측정을 전송하도록 하려면 아래 절차를 따릅니다.
- Setup IAM permissions for Amazon EKS
-
다음 명령을 사용하여 클러스터의 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
- Setup IAM permissions for Kubernetes
-
다음 명령을 입력하여 온프레미스 호스트에서 AWS 자격 증명을 구성합니다. ACCESS_KEY_ID
와 SECRET_ACCESS_ID
를 이전 단계에서 다운로드한 .csv 파일에서 새로 생성된 액세스 키와 시크릿 액세스 키로 바꿉니다. 기본적으로 자격 증명 파일은 /home/user/.aws/credentials에 저장됩니다.
aws configure
AWS Access Key ID [None]: ACCESS_KEY_ID
AWS Secret Access Key [None]: SECRET_ACCESS_ID
Default region name [None]: MY_REGION
Default output format [None]: json
OpenTelemetry Collector 리소스를 편집해 kubectl edit OpenTelemetryCollector otel_collector
명령을 사용하여 새로 생성된 AWS 보안 인증 암호를 추가합니다.
파일 편집기를 사용해서 배포판의 상단에 다음 구성을 추가하여 AWS 자격 증명을 OpenTelemetryCollector 컨테이너에 추가합니다. 경로 /home/user/.aws/credentials
를 로컬 AWS 자격 증명 파일의 위치로 바꿉니다.
spec:
volumeMounts:
- mountPath: /rootfs
volumeMounts:
- name: aws-credentials
mountPath: /root/.aws
readOnly: true
volumes:
- hostPath:
path: /home/user/.aws/credentials
name: aws-credentials
아래 콘텐츠를 복사 및 붙여 넣어 로그 및 추적을 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]