안녕하세요. 이 글은 EKS 컨트롤 플레인 로그수집 방법을 설명합니다.
EKS 컨트롤 플레인 로그란?
컨트롤 플레인 발생한 이벤트를 EKS 옵션을 설정하여 로그로 남길 수 있습니다. 디폴트 설정은 로깅이 비활성화 되어 있습니다. 수집된 컨트롤 플레인 로그는 cloudwatch에서 볼 수 있습니다.
로그 활성화 방법
디폴트로 비활성화 되어 있으므로 수동으로 로그옵션을 활성화해야 합니다.
콘솔에서 로그 활성화
EKS대시보드에서 Logging필드에서 로깅을 활성화할 수 있습니다.
컨트롤 플레인 로그는 총 5개 로깅을 선택해서 수집합니다.
eksctl으로 활성화
로깅 설정은 CloudWatch필드로 설정합니다.
cloudWatch:
clusterLogging:
enableTypes: ["api", "audit", "authenticator", "controllerManager", "scheduler"]
logRetentionInDays: 1
EKS클러스터를 처음 생성하는 경우 create인자로 로깅을 설정합니다.
eksctl create cluster --config-file=<path>
클러스터가 기존에 있을 경우 utils인자로 로깅 설정을 업데이트합니다.
eksctl utils update-cluster-logging --config-file=<path>
로깅 탐색
수집된 컨트롤 플레인 로그는 cloudwatch “Log groups”에서 볼 수 있습니다. Log group이름은 EKS 클러스터 이름입니다.
EKS로깅설정에서 선택한 로그가 Log stream으로 저장됩니다.
log stream을 선택하면 시간대별로 쌓인 로그가 있습니다.
로그 검색
로그는 Log insights에서 검색할 수 있습니다. Log insight는 쿼리를 사용하여 로그를 조회하는 기능입니다. 검색할 EKS클러스터를 선택하고 쿼리를 실행하면 원하는 컨트롤 플레인 로그를 찾을 수 있습니다.
예제: 비정상 Managed 노드를 검색
컨트롤 플레인 로그를 검색하여 장애상태를 확인할 수 있습니다. 예를 들어 데이터 Managed 노드가 NotReady상태를 로그로 조회 가능합니다.
Managed 노드를 강제로 삭제하여 NodeNotReady상태를 발생시켜보겠습니다. EC2 Instnace를 선택하고 Instance를 삭제합니다. Instance가 삭제되면 Auto Scaling Group이 다시 EC2 Instance를 생성합니다.
Log insight메뉴로 이동해서 아래 쿼리를 실행합니다. 강제로 종료한 EC2 Instance때문에 NodeNotReady상태 로그가 검색됩니다. 만약 조회가 안된다면 약 5분정도 기다린 후 다시 검색하시면 됩니다. 아직 로그 수집이 안되어서 몇 분 기다려야 합니다.
fields @timestamp, @message
| filter @message like /NodeNotReady/
| sort @timestamp desc
'연재 시리즈' 카테고리의 다른 글
EKS 스터디 - 4주차 3편 - AMP에 EKS메트릭 저장 (0) | 2023.05.14 |
---|---|
EKS 스터디 - 4주차 2편 - pod로깅 (2) | 2023.05.07 |
EKS 스터디 - 3주차 2편 - EKS Fargate와 원리 (0) | 2023.04.30 |
EKS 스터디 - 3주차 1편 - EKS가 AWS스토리지를 다루는 원리 (0) | 2023.04.28 |
EKS 스터디 - 2주차 3편 - ALB Controller (2) | 2023.04.23 |