AWS Distro for OpenTelemetry를 사용한 메트릭 수집
이 실습에서는 메트릭을 Amazon Managed Service for Prometheus 워크스페이스에 저장할 것이며, 이는 이미 생성되어 있습니다. 콘솔에서 확인할 수 있습니다:
APS 콘솔 열기
워크스페이스를 보려면 왼쪽 제어 패널의 All Workspaces 탭을 클릭하세요. eks-workshop으로 시작하는 워크스페이스를 선택하면 규칙 관리, 알림 관리자 등과 같은 워크스페이스 아래의 여러 탭을 볼 수 있습니다.
Amazon EKS 클러스터에서 메트릭을 수집하기 위해 OpenTelemetryCollector 커스텀 리소스를 배포할 것입니다. EKS 클러스터에서 실행 중인 ADOT 오퍼레이터는 이 리소스의 존재 또는 변경을 감지하고, 이러한 변경 사항에 대해 오퍼레이터는 다음 작업을 수행합니다:
- Kubernetes API 서버에 대한 이러한 생성, 업데이트 또는 삭제 요청에 필요한 모든 연결이 사용 가능한지 확인합니다.
- 사용자가
OpenTelemetryCollector리소스 구성에서 표현한 방식대로 ADOT collector 인스턴스를 배포합니다.
이제 ADOT collector에 필요한 권한을 허용하는 리소스를 생성하겠습니다. collector에 Kubernetes API에 액세스할 수 있는 권한을 부여하는 ClusterRole부터 시작하겠습니다:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: otel-prometheus-role
rules:
- apiGroups:
- ""
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- ingresses
verbs:
- get
- list
- watch
- nonResourceURLs:
- /metrics
verbs:
- get
이 코어 API 그룹 ""은 메트릭 수집을 위해 verbs 아래에 지정된 작업을 사용하여 resources 아래에 나열된 코어 Kubernetes 리소스에 액세스할 수 있는 권한을 역할에 부여합니다
이 확장 API 그룹 extensions는 네트워크 트래픽 메트릭 수집을 위해 verbs 아래에 지정된 작업을 사용하여 ingress 리소스에 액세스할 수 있는 권한을 역할에 부여합니다
nonResourceURLs는 클러스터 수준 운영 메트릭 수집을 위해 verbs 아래에 지정된 작업을 사용하여 Kubernetes API 서버의 /metrics 엔드포인트에 액세스할 수 있는 권한을 역할에 부여합니다
IAM Roles for Service Accounts를 통해 collector에 필요한 IAM 권한을 제공하기 위해 관리형 IAM 정책 AmazonPrometheusRemoteWriteAccess를 사용할 것입니다:
{"AttachedPolicies": [
{"PolicyName": "AmazonPrometheusRemoteWriteAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonPrometheusRemoteWriteAccess"
}
]
}
이 IAM 역할은 collector의 ServiceAccount에 추가됩니다:
apiVersion: v1
kind: ServiceAccount
metadata:
name: adot-collector
annotations:
eks.amazonaws.com/role-arn: ${ADOT_IAM_ROLE}
리소스를 생성합니다:
collector의 사양은 여기에 표시하기에는 너무 길지만, 다음과 같이 볼 수 있습니다:
배포된 내용을 더 잘 이해하기 위해 이를 섹션별로 나누어 보겠습니다. 다음은 OpenTelemetry collector 구성입니다:
이는 다음 구조를 가진 OpenTelemetry 파이프라인을 구성합니다:
- Receivers
- Prometheus receiver Prometheus 엔드포인트를 노출하는 대상에서 메트릭을 수집하도록 설계됨
- Processors
- 이 파이프라인에는 없음
- Exporters
- Prometheus remote write exporter AMP와 같은 Prometheus remote write 엔드포인트로 메트릭을 전송
이 collector는 하나의 collector 에이전트가 실행되는 Deployment로 실행되도록 구성되어 있습니다:
실행 중인 ADOT collector Pod를 검사하여 이를 확인할 수 있습니다:
NAME READY STATUS RESTARTS AGE
adot-collector-6f6b8867f6-lpjb7 1/1 Running 2 11d