Kubernetes 환경에서 모니터링을 구축하려면, 기본적인 리소스 사용량을 모니터링할 수 있는 Metrics Server와 함께 다양한 오픈소스 모니터링 도구를 구축하여 환경을 구성하는 것이 일반적이다.
Metrics Server
Metrics Server는 Kubernetes 클러스터에서 CPU와 메모리 사용량과 같은 기본적인 메트릭을 수집하는 역할을 한다.
이는 Pod의 오토스케일링(Horizontal Pod Autoscaling) 및 리소스 모니터링을 위해 사용된다.
그러나 Metrics Server는 Persistent Storage, 네트워크 트래픽, 애플리케이션 수준의 메트릭 등은 제공하지 않습니다.
따라서 보통 여기서 위의 기능들을 구현하기 위해 추가적인 오픈소스 모니터링 도구를 구축한다.
추가 모니터링 도구
Prometheus + Grafana
Prometheus와 Grafana는 Kubernetes 클러스터에서 모니터링 및 시각화를 위한 가장 널리 사용되는 오픈소스 도구이다.
이 두 도구를 함께 사용하면 리소스 모니터링, 애플리케이션 성능 추적, 경고(alerting) 등 다양한 모니터링 요구 사항을 충족할 수 있다. Prometheus는 데이터를 수집하고 저장하며, Grafana는 그 데이터를 시각화한다.
Prometheus
Kubernetes 모니터링에서 가장 많이 사용되는 오픈소스로 시계열 데이터를 수집하고, 사용자의 요구에 따라 Custom Metrics를 모니터링할 수 있다.
따라서 Metrics Server가 제공하지 못하는 다양한 모니터링이 가능합니다.
Grafana
Prometheus로 수집한 데이터를 시각화하는 오픈소스로, 사용자 정의 대시보드를 만들어 실시간으로 클러스터와 애플리케이션의 상태를 모니터링한다.
EFK Stack (Elasticsearch, Fluentd, Kibana)
EFK 스택은 로그 모니터링을 위한 솔루션이다.
EFK 스택은 다음 4단계로 작동한다.
1. Kubernetes 클러스터에서 각 Pod나 노드에서 생성되는 애플리케이션 로그, 시스템 로그 등을 Fluentd가 수집한다.
2. Fluentd는 수집된 로그를 특정 형식으로 변환하고, 필요에 따라 필터링을 적용하여 Elasticsearch로 전달한다.
3. Elasticsearch는 Fluentd로부터 전달받은 로그를 인덱스로 저장하고, 이를 빠르게 검색할 수 있도록 준비한다.
4. Kibana를 통해 Elasticsearch에 저장된 로그 데이터를 다양한 차트와 대시보드로 시각화한다.
Elasticsearch
로그 데이터를 저장하고 검색할 수 있는 강력한 검색 엔진이다.
Fluentd
로그 수집기 역할을 하며, 클러스터에서 발생하는 로그를 Elasticsearch로 전달한다.
Kibana
Elasticsearch에서 수집한 로그 데이터를 시각화하고 분석하는 도구이다.
Loki + Grafana + Promtail
ELK 스택처럼 로그 모니터링을 제공하지만 보다 경량적으로 서비스를 제공한다.
ELK 스택의 Elasticsearch는 로그 내용을 완전히 인덱싱하여 검색할 수 있는 구조이기에 많은 리소스를 소모하고 비용이 많이 든다.
반면에, Loki는 메타데이터만 인덱싱하여 훨씬 가볍게 동작한다.
Loki
경량 로그 모니터링 도구로, Promtail과 함께 Kubernetes 환경에서 발생하는 로그를 수집한다.
Grafana
Prometheus와 함께 사용되던 것과 똑같이 Loki와 함께 로그 데이터를 시각화하고 분석하는 데 사용된다.
Promtail
Loki에 로그를 보내는 로그 수집 에이전트로, 각 노드의 컨테이너 로그를 수집하고 Loki에 전달한다.
추후 목표
지난 번 프로젝트에서 EKS 환경에서 Monitoring을 구축하기 위해 Prometheus와 Loki 그리고 Grafana을 사용했었다.
하지만 Monitoring 부분을 다른 팀원이 담당하였고, 따라서 이론적으로 각각의 도구들이 어떠한 역할을 하는지는 알고 있지만 직접 구축을 하는 부분은 경험하지 못하였다.
따라서 추후 Local Kubernetes 환경에서 Prometheus와 Loki 그리고 Grafana를 구축하여 직접 메트릭을 작성하고 대시보드를 그려보고자 한다.
'DevOps > Kubernetes' 카테고리의 다른 글
Kubernetes 환경 변수(Configmap, secret) 설정 (0) | 2024.10.22 |
---|---|
Kubernetes Metrics Server 구축 (0) | 2024.10.20 |
Kubernetes Static Pod & Control Plane (0) | 2024.10.18 |
Pod, Deployment 수정 시 유의사항 (0) | 2024.10.17 |
CKA 명령형(Imperative) 명령어 팁 (1) | 2024.10.16 |