View a markdown version of this page

Amazon EKS의 Container Insights 문제 해결 - Amazon CloudWatch

Amazon EKS의 Container Insights 문제 해결

이 섹션에서는 Amazon EKS에서 Container Insights를 설정하거나 운영할 때 발생할 수 있는 일반적인 문제를 다룹니다. 다음 표와 진단 명령을 사용하여 OTel 또는 Classic 접근 방식을 사용하는지 여부에 관계없이 문제를 식별하고 해결합니다.

접근 방식별 설정 지침은 빠른 시작: Amazon EKS의 OTel Container Insights 또는 설정 안내서(AWS CLI) 섹션을 참조하세요. 접근 방식을 비교하려면 Container Insights 접근 방식 비교 섹션을 참조하세요.

CloudWatch에 지표가 표시되지 않음

ContainerInsights 네임스페이스에 지표가 표시되지 않는 경우 다음 표를 사용하여 원인을 식별합니다.

증상 원인 해결 방법
ContainerInsights 네임스페이스에 지표가 없음 IAM 역할에 cloudwatch:PutMetricData 권한이 없음 CloudWatchAgentServerPolicy 관리형 정책을 에이전트 IAM 역할에 연결합니다.
지표가 일부 노드에는 표시되지만 다른 노드에는 표시되지 않음 테인트로 인해 에이전트 DaemonSet가 모든 노드에 예약되지 않음 테인팅된 노드에 대한 예약을 허용하도록 에이전트 DaemonSet에 허용치를 추가합니다.
지표 표시가 중지됨 에이전트 포드가 OOMKilled 또는 재시작 중임 에이전트 포드 리소스 사양의 메모리 제한을 늘립니다.
지표가 오래되었거나 0임 네트워크 연결이 차단됨 VPC 보안 그룹을 확인하고 CloudWatch VPC 엔드포인트가 존재하는지 확인합니다.
향상된 지표가 누락됨 향상된 관찰성을 위해 에이전트가 구성되지 않음 에이전트 구성에서 enhancedObservability: true를 설정합니다.

에이전트 포드가 시작되지 않음

에이전트 포드가 시작되지 않거나 실행 중이 아닌 상태로 유지되는 경우 다음 표를 사용하여 문제를 진단합니다.

증상 원인 해결 방법
ImagePullBackOff Amazon ECR에 연결할 수 없거나 이미지 태그가 잘못됨 이미지 URI를 확인하고 노드가 Amazon ECR에 액세스할 수 있는지 확인합니다.
Pending 노드의 CPU 또는 메모리 부족 에이전트 포드 사양에서 노드 그룹을 확장하거나 리소스 요청을 줄입니다.
CrashLoopBackOff 잘못된 구성 또는 볼륨 마운트 누락 영향을 받는 포드에서 kubectl logs를 실행하여 포드 로그에 구성 오류가 있는지 확인합니다.
FailedScheduling 노드 선호도 또는 테인트로 인해 예약되지 않음 DaemonSet 사양의 nodeSelector 및 허용치를 검토합니다.
종료 코드 1 서비스 계정에 IRSA 주석이 없음 서비스 계정에 eks.amazonaws.com/role-arn 주석이 있는지 확인합니다.

추가 기능 설치 실패

amazon-cloudwatch-observability 추가 기능을 설치하지 못하거나 비정상 상태를 보고하는 경우 다음 표를 사용하여 문제를 해결합니다.

증상 원인 해결 방법
CREATE_FAILED 이전 설치와 충돌하는 리소스 충돌하는 리소스를 삭제하고 추가 기능을 생성할 때 --resolve-conflicts OVERWRITE를 사용합니다.
OIDC 공급자를 찾을 수 없음 클러스터에 대한 IAM OIDC ID 공급자가 없음 eksctl utils associate-iam-oidc-provider를 실행하여 공급자를 생성합니다.
버전 충돌 추가 기능 버전이 Kubernetes 버전과 호환되지 않음 aws eks describe-addon-versions를 실행하여 호환되는 버전을 나열합니다.
DEGRADED 상태 권한 누락으로 인해 상태 확인이 실패함 포드 로그를 확인하고 IRSA 역할에 필수 정책이 연결되어 있는지 확인합니다.

로그 전송 문제

컨테이너 로그가 Amazon CloudWatch Logs에 표시되지 않는 경우 다음 표를 사용하여 원인을 식별합니다.

증상 원인 해결 방법
로그 그룹이 존재하지 않음 logs:CreateLogGroup 권한 누락 에이전트 IAM 역할에 Amazon CloudWatch Logs 권한을 추가합니다.
로그 그룹이 존재하지만 비어 있음 로그 또는 리전 불일치에 대해 에이전트가 구성되지 않음 에이전트 구성에 로그 수집이 포함되어 있고 리전이 클러스터 리전과 일치하는지 확인합니다.
로그가 5분 이상 지연됨 플러시 간격이 너무 높거나 노드에 과부하가 걸림 에이전트 구성의 force_flush_interval 값을 줄입니다.
성능 로그 누락 에이전트가 애플리케이션 로그에 대해서만 구성됨 에이전트 구성에 Container Insights 성능 로그 섹션이 있는지 확인합니다.

마이그레이션 관련 문제

Container Insights 접근 방식 간에 마이그레이션하는 동안 문제가 발생하는 경우 다음 표를 사용합니다. 전체 마이그레이션 워크플로는 마이그레이션 안내서 섹션을 참조하세요.

증상 원인 해결 방법
병렬 실행 중 지표가 중복됨 두 접근 방식 모두 지표를 동시에 게시함 이 동작은 병렬 실행 중에 예상되는 동작입니다. 새 접근 방식을 검증한 후 레거시 접근 방식을 비활성화합니다.
접근 방식 간에 지표 값이 서로 다름 서로 다른 계산 방법 약간의 차이(5% 미만)는 예상됩니다. 큰 차이는 접근 방식 간의 구성 불일치를 나타냅니다.
롤백 실패 사용자 지정 구성이 다시 적용되지 않음 롤백할 때 전체 구성 값을 다시 적용합니다.
마이그레이션 중 경보 발생 전환 기간 동안의 지표 누락 영향을 받는 경보에서 누락된 데이터 처리를 notBreaching으로 일시적으로 설정합니다.

OTel Container Insights 문제

다음 문제는 OTel Container Insights 접근 방식과 관련이 있습니다. 일반적인 설정 지침은 빠른 시작: Amazon EKS의 OTel Container Insights 섹션을 참조하세요.

증상 원인 해결 방법
403 금지된 내보내기 오류 IAM 역할에 CloudWatch 권한이 없음 CloudWatchAgentServerPolicy가 에이전트 역할에 연결되어 있는지 확인합니다.
지표 엔드포인트에서 연결이 거부됨 수집기가 kubelet에 도달할 수 없음 hostNetwork: true가 포드 사양에 설정되어 있는지 확인하거나 서비스 계정에 필요한 권한이 있는지 확인합니다.
높은 메모리 사용량 배치 프로세서 대기열이 너무 큼 수집기 구성에서 batch/timeoutbatch/send_batch_size 값을 줄입니다.
사용자 지정 지표가 표시되지 않음 애플리케이션 엔드포인트에 대해 수신기가 구성되지 않음 수집기 구성에서 애플리케이션 지표 포트를 대상으로 하는 Prometheus 수신기를 추가합니다.

일반 진단 명령

다음 명령을 사용하여 Container Insights 배포에 대한 정보를 수집합니다.

에이전트 포드 상태를 확인하려면 다음 명령을 실행합니다.

kubectl get pods -n amazon-cloudwatch

에이전트 포드 로그를 확인하려면 다음 명령을 실행합니다.

kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=50

에이전트 DaemonSet 상태를 확인하려면 다음 명령을 실행합니다.

kubectl get daemonset -n amazon-cloudwatch

서비스 계정에서 IAM 역할을 확인하려면 다음 명령을 실행합니다.

kubectl get serviceaccount -n amazon-cloudwatch -o yaml

클러스터 추가 기능 상태를 확인하려면 다음 명령을 실행합니다. cluster-name을 Amazon EKS 클러스터의 이름으로 바꿉니다.

aws eks describe-addon --cluster-name cluster-name --addon-name amazon-cloudwatch-observability

Container Insights 로그 그룹을 나열하려면 다음 명령을 실행합니다. cluster-name을 Amazon EKS 클러스터의 이름으로 바꿉니다.

aws logs describe-log-groups --log-group-name-prefix "/aws/containerinsights/cluster-name"

Amazon EKS에서 Container Insights를 설정하고 운영하는 방법에 대한 자세한 내용은 다음 주제를 참조하세요.