티스토리 뷰

1.  모니터링 구성요소

1) 노드 수준 메트릭

- 노드 상태 메트릭: 클러스트 내 노드의 수와 각 노드의 상태

- 리소스 사용량: CPU, 메모리, 디스크 I/O, 네트워크 대역폭 등의 사용량

2) 파드 수준 메트릭

- 파드 수 : 실행 중인 파드의 수

- 리소스 사용량: 각 파드의 CPU 및 메모리 사용량, 재시작 횟수, 상태(실행 중, 대기 중 등)

3) 컨트롤 플레인 매트릭

- API 서버나 스케줄러와 같은 컨트롤 플레인 구성요소에는 발생하는 메트릭은 시스템 작동 상태를 보여줌 

- 스케줄링 지연 시간이나 대기중 인 파드 수 등을 확인 

4) 주요 모니터링 도구

(1) Metrics Server : 경령화된 실시간 모니터링 솔루션

- 노드와 파드의 CPU 및 메모리 사용량 데이터를 수집

- kubectl top node, kubectl top pod 명령어로 확인 가능 

(2) Prometheus 

- Prometheus: 오픈 소스 기반의 강력한 모니터링 도구로, 장기 데이터 저장 및 쿼리 기능을 제공. Grafana와 통ㅎ바하여 시각화 대시보드를 구성. 알림 설정도 가능

(3) Elastick Search

- Elastic Stack은 중앙 집중식 로깅 및 모니터링 솔루션으로 강력한 검색 기능을 제공. 하지만 Pormetheus에 비해 설정이 더 복잡 

5) 메트릭 생성과정

(1) kubelet: 각 노드에서 실행되며 파드를 관리하고 kubernetes API서버와 통신

(2) cAdivisor(Container Advisor): Kubelet의 하위 구성 요소로, 컨테이너 단위의 성능 데이터를 수집하여 Metrics Server에 제공

(3) Metrics Server: Kubelet에서 데이터를 받아 이를 집계하고 Kubernetes Metrics API를 통해 노출

 

2. 어플리케이션 로그 

- 컨테이너화된 어플리케이션의 상태 및 동작을 이해하고 디버깅 하는데 중요한 역할을 함

1) Docker에서의 로깅

- Docker 컨테이너는 어플리케이션 로그를 표준 출력과 표준에러로 스트리밍 

- 이를 통해 실행 중인 컨테이너의 로그를 쉽게 확인 

(1) 로그 확인: docker logs <container id> 명령어를 사용하여 특정 컨테이너의 로그를 확인 가능

(2) 실시간 로그 스트리밍: docker logs -f <container id> 옵션을 사용하면 실시간으로 로그를 확인 가능 

(3) 백그라운드 실행: 컨테이너를 백그라운드 모드로 실행(-d 옵션)하면 로그가 터미널에 표시되지 않으므로 위 명령어로 확인 

2) 쿠버네티스에서의 로깅 

- Dcoker와 유사한 방식으로 파드와 컨테이너 로그를 관리 

- 단일 컨테이너 파드: kubectl logs <pod_name> 명령어로 해당 파드의 컨테이너 로그를 확인 가능

- 실시간 로그 스트리밍: kubectl logs -f <pod_name> 명령어를 사용하면 실시간으로 로그를 스트리밍 

- 다중 컨테이너 파드: 파드에 여러 컨테이너가 있는 경우, kubectl logs <pod_name> -c <container_name> 명령어로 특정 컨테이너의 로그를 지정해야 하며, 그렇지 않으면 오류 메시지가 표시됨 .

3) 한계

- 쿠버네티스에서 제공하는 기본 로깅은 단기적인 디버깅에는 적합하지만, 오래된 로그는 보존되지 않은 점에서 장기적인 관리에는 부적합하다. 

- 여러 노드에서 파드에서 생성된 로그는 각각 별도로 관리되므로 중앙 집중화가 부족

- ELK, Prometheus와 같은 중앙 집중식 로깅 솔루션을 통합하여 장기 보존 및 분석 기능을 추가해서 보완해야 한다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함