Amazon CloudWatch로 클러스터 데이터 모니터링하기

Amazon CloudWatch로 클러스터 데이터 모니터링하기

Amazon CloudWatch는 클라우드 리소스에서 지표와 로그를 수집하는 모니터링 서비스예요. CloudWatch는 1.28 이상 버전의 새 클러스터를 사용할 때 몇 가지 기본 Amazon EKS 지표를 무료로 제공해요. 다만 CloudWatch Observability Operator를 Amazon EKS 애드온으로 사용하면 향상된 관찰성 기능을 얻을 수 있어요.

출처: 문서

본문

Amazon CloudWatch의 기본 지표

Kubernetes 1.28 이상 버전의 클러스터에서는 AWS/EKS 네임스페이스에서 CloudWatch vended 지표를 무료로 얻을 수 있어요. 다음 표는 지원 버전에서 사용할 수 있는 기본 지표 목록을 제공해요. 나열된 모든 지표의 빈도는 1분이에요.

지표 이름 설명 단위 유효 통계
apiserver_flowcontrol_current_executing_seats API 요청을 실행하는 데 현재 사용 중인 seat 수. seat 할당은 Kubernetes API Priority and Fairness 기능의 priority_level과 flow_schema 구성에 따라 결정돼요. Count Sum
scheduler_schedule_attempts_total 주어진 기간 동안 스케줄러가 클러스터에서 Pod를 스케줄하려고 시도한 총 횟수. 이 지표는 스케줄러 워크로드를 모니터링하는 데 도움이 되며 스케줄링 압박이나 Pod 배치의 잠재적 문제를 나타낼 수 있어요. Count Sum
scheduler_schedule_attempts_SCHEDULED 주어진 기간 동안 스케줄러가 클러스터의 노드에 Pod를 성공적으로 스케줄한 횟수. Count Sum
scheduler_schedule_attempts_UNSCHEDULABLE 주어진 기간 동안 노드의 CPU 또는 메모리 부족 같은 유효한 제약 때문에 스케줄할 수 없었던 Pod를 스케줄하려고 시도한 횟수. Count Sum
scheduler_schedule_attempts_ERROR 주어진 기간 동안 API 서버 연결 문제 같은 스케줄러 자체의 내부 문제로 인해 실패한 Pod 스케줄링 시도 횟수. Count Sum
scheduler_pending_pods 주어진 기간 동안 클러스터에서 스케줄러가 스케줄할 대기 중인 총 Pod 수. Count Sum
scheduler_pending_pods_ACTIVEQ 주어진 기간 동안 클러스터에서 스케줄되기를 기다리는 activeQ의 대기 중인 Pod 수. Count Sum
scheduler_pending_pods_UNSCHEDULABLE 스케줄러가 스케줄을 시도하고 실패해 재시도를 위해 unschedulable 상태로 유지되는 대기 중인 Pod 수. Count Sum
scheduler_pending_pods_BACKOFF 대기 시간(backoff period)이 만료되기를 기다리는 백오프 상태의 backoffQ에 있는 대기 중인 Pod 수. Count Sum
scheduler_pending_pods_GATED 필수 조건을 충족할 때까지는 스케줄할 수 없어 현재 gated 상태로 대기 중인 Pod 수. Count Sum
apiserver_request_total 클러스터의 모든 API 서버에서 이루어진 HTTP 요청 수. Count Sum
apiserver_request_total_4XX 클러스터의 모든 API 서버에 이루어진 요청 중 4XX(클라이언트 오류) 상태 코드로 끝난 HTTP 요청 수. Count Sum
apiserver_request_total_429 클러스터의 모든 API 서버에 이루어진 요청 중 429 상태 코드로 끝난 HTTP 요청 수. 이는 클라이언트가 속도 제한 임계값을 초과할 때 발생해요. Count Sum
apiserver_request_total_5XX 클러스터의 모든 API 서버에 이루어진 요청 중 5XX(서버 오류) 상태 코드로 끝난 HTTP 요청 수. Count Sum
apiserver_request_total_LIST_PODS 클러스터의 모든 API 서버에 이루어진 LIST Pods 요청 수. Count Sum
apiserver_request_duration_seconds_PUT_P99 클러스터의 모든 API 서버의 모든 요청에서 계산된 PUT 요청의 99번째 백분위수 지연 시간. 모든 PUT 요청의 99%가 완료되는 응답 시간을 나타냄. Seconds Average
apiserver_request_duration_seconds_PATCH_P99 클러스터의 모든 API 서버의 모든 요청에서 계산된 PATCH 요청의 99번째 백분위수 지연 시간. 모든 PATCH 요청의 99%가 완료되는 응답 시간을 나타냄. Seconds Average
apiserver_request_duration_seconds_POST_P99 클러스터의 모든 API 서버의 모든 요청에서 계산된 POST 요청의 99번째 백분위수 지연 시간. 모든 POST 요청의 99%가 완료되는 응답 시간을 나타냄. Seconds Average
apiserver_request_duration_seconds_GET_P99 클러스터의 모든 API 서버의 모든 요청에서 계산된 GET 요청의 99번째 백분위수 지연 시간. 모든 GET 요청의 99%가 완료되는 응답 시간을 나타냄. Seconds Average
apiserver_request_duration_seconds_LIST_P99 클러스터의 모든 API 서버의 모든 요청에서 계산된 LIST 요청의 99번째 백분위수 지연 시간. 모든 LIST 요청의 99%가 완료되는 응답 시간을 나타냄. Seconds Average
apiserver_request_duration_seconds_DELETE_P99 클러스터의 모든 API 서버의 모든 요청에서 계산된 DELETE 요청의 99번째 백분위수 지연 시간. 모든 DELETE 요청의 99%가 완료되는 응답 시간을 나타냄. Seconds Average
apiserver_current_inflight_requests_MUTATING 클러스터의 모든 API 서버에서 현재 처리 중인 변경 요청(POST, PUT, DELETE, PATCH) 수. 이 지표는 처리 중이고 아직 완료되지 않은 요청을 나타냄. Count Sum
apiserver_current_inflight_requests_READONLY 클러스터의 모든 API 서버에서 현재 처리 중인 읽기 전용 요청(GET, LIST) 수. 이 지표는 처리 중이고 아직 완료되지 않은 요청을 나타냄. Count Sum
apiserver_admission_webhook_request_total 클러스터의 모든 API 서버에서 이루어진 admission webhook 요청 수. Count Sum
apiserver_admission_webhook_request_total_ADMIT 클러스터의 모든 API 서버에서 이루어진 변경(mutating) admission webhook 요청 수. Count Sum
apiserver_admission_webhook_request_total_VALIDATING 클러스터의 모든 API 서버에서 이루어진 검증(validating) admission webhook 요청 수. Count Sum
apiserver_admission_webhook_rejection_count 클러스터의 모든 API 서버에서 거부된 admission webhook 요청 수. Count Sum
apiserver_admission_webhook_rejection_count_ADMIT 클러스터의 모든 API 서버에서 거부된 변경 admission webhook 요청 수. Count Sum
apiserver_admission_webhook_rejection_count_VALIDATING 클러스터의 모든 API 서버에서 거부된 검증 admission webhook 요청 수. Count Sum
apiserver_admission_webhook_admission_duration_seconds 클러스터의 모든 API 서버의 모든 요청에서 계산된 제3자 admission webhook 요청의 99번째 백분위수 지연 시간. 모든 제3자 admission webhook 요청의 99%가 완료되는 응답 시간을 나타냄. Seconds Average
apiserver_admission_webhook_admission_duration_seconds_ADMIT_P99 클러스터의 모든 API 서버의 모든 요청에서 계산된 제3자 변경 admission webhook 요청의 99번째 백분위수 지연 시간. 모든 제3자 변경 admission webhook 요청의 99%가 완료되는 응답 시간을 나타냄. Seconds Average
apiserver_admission_webhook_admission_duration_seconds_VALIDATING_P99 클러스터의 모든 API 서버의 모든 요청에서 계산된 제3자 검증 admission webhook 요청의 99번째 백분위수 지연 시간. 모든 제3자 검증 admission webhook 요청의 99%가 완료되는 응답 시간을 나타냄. Seconds Average
etcd_mvcc_db_total_size_in_bytes 실제 물리적으로 할당된 기본 데이터베이스의 총 크기(바이트). 이 지표는 물리 디스크 할당을 측정하며 할당량 적용에는 사용되지 않아요(apiserver_storage_size_bytes라고도 함). Bytes Maximum
etcd_mvcc_db_total_size_in_use_in_bytes 조각 모음(defragmentation)을 기다리는 여유 공간을 제외한 etcd 데이터베이스의 실제 데이터 크기. 이 지표는 현재 데이터베이스 사용량을 나타내며 클러스터가 데이터베이스 크기 할당량을 초과해 읽기 전용 모드로 전환될지 여부를 결정해요. Bytes Maximum

Amazon CloudWatch Observability Operator

Amazon CloudWatch Observability는 실시간 로그, 지표, 트레이스 데이터를 수집해요. 이를 Amazon CloudWatch와 AWS X-Ray로 보내요. 이 애드온을 설치하면 Amazon EKS에 대한 향상된 관찰성을 갖춘 CloudWatch Application Signals와 CloudWatch Container Insights를 모두 활성화할 수 있어요. 이는 인프라와 컨테이너화된 애플리케이션의 상태와 성능을 모니터링하는 데 도움을 줘요. Amazon CloudWatch Observability Operator는 필요한 구성 요소를 설치하고 구성하도록 설계됐어요.

Amazon EKS는 CloudWatch Observability Operator를 Amazon EKS 애드온으로 지원해요. 이 애드온을 사용하면 클러스터의 Linux와 Windows 워커 노드 모두에서 Container Insights를 사용할 수 있어요. Windows에서 Container Insights를 활성화하려면 Amazon EKS 애드온 버전이 1.5.0 이상이어야 해요. 현재 CloudWatch Application Signals는 Amazon EKS Windows에서 지원되지 않아요.

다음 토픽은 Amazon EKS 클러스터에서 CloudWatch Observability Operator 사용을 시작하는 방법을 설명해요.

  • 이 애드온 설치 지침은 Amazon CloudWatch 사용자 가이드의 Amazon CloudWatch Observability EKS 애드온 또는 Helm 차트로 CloudWatch 에이전트 설치하기를 참고하세요.
  • CloudWatch Application Signals에 대한 자세한 내용은 Amazon CloudWatch 사용자 가이드의 Application Signals를 참고하세요.
  • Container Insights에 대한 자세한 내용은 Amazon CloudWatch 사용자 가이드의 Using Container Insights를 참고하세요.

더 알아보기 (Learn more)