DevOps/쿠버네티스

[쿠버네티스] 쿠버네티스 로깅 & 모니터링

인프라베어 2023. 11. 29. 23:41

쿠버네티스의 로깅과 모니터링 툴에 대해 알아보자

필자는 쿠버네티스에 대한 개념과 구성정도만 알고 있다. 그런데 쿠버네티스 운영시 관련된 모니터링툴이 기술스택에 항상 등장하여 이를 정리해보고자 한다.

EFK스택

 

가장 먼저 쿠버네티스는 내장하고 있는 로깅, 모니터링 툴이 없다 그렇기때문에 이러한 툴들을 직접 구성해 주어야 하는데 보통 로깅에는 EFK(Elasticsearch, Fluentd, Kibana), ELK(Elasticsearch, Logstash, Kibana)  스택을 사용하고 모니터링에는 프로메테우스, 그라파나를 사용한다.

 

쿠버네티스 환경에서는 컨테이너 런타임이 표준화 되어있어 애플리케이션의 로그기록과 메트릭을 그대로 가져와 모니터링이 가능하다.

 

쿠버네티스에서 로그를 확인하기 위해 참조하는 리소스는 다음과 같다

kubectl log

  • 로그를 CLI에서 바로 확인가능하나 파드가 죽거나 1회성 배치작업의 경우 파드가 사라져 로그기록도 같이 사라진다.
  • kubelet과 같은 시스템 컴포넌트 로그도 통합하여 확인할 수 있다.

docker log

  • 컨테이너 로그는 사실 host의 특정 폴더에 저장된다(/var/lib/docker/containers/<ContainerID>/<ContainerID>-json.log
  • 로깅수집기가 /var/log/containers/*.log 디렉토리의 정보를 수집하여 중앙저장소로 보내면 클러스터 레벨의 로깅이 가능하다.

Elasticsearch

텍스트 검색에 최적화된 오픈소스 검색엔진이다. JSON형식으로 데이터를 저장하여 비정형 데이터 저장 및 검색에 유리하다. JSON문서를 파싱 및 인덱싱하여 저장하므로 빠른검색이 가능하다.

 

엘라스틱서치의 구성요소는 아래와 같다.

  • Index (인덱스)
    엘라스틱서치에서 인덱스는 유사한 특성을 가진 데이터의 집합을 나타낸다. 일반적으로 하나의 인덱스는 특정 유형의 문서들을 저장하고 관리하는데 예를 들어, '고객' 데이터를 저장하는 인덱스, '주문' 데이터를 저장하는 인덱스 등이 있을 수 있다.
  • Shard (샤드)
    샤드는 인덱스 데이터의 분할된 부분이다. 엘라스틱서치는 큰 데이터 집합을 여러 샤드로 나누어 저장하며, 이를 통해 데이터를 수평적으로 확장할 수 있다. 각 샤드는 자체적으로 완전한 검색 엔진 기능을 수행하며, 이는 전체 시스템의 성능과 가용성을 향상시킨다.
  • Document
    Document는 엘라스틱서치에서 정보를 저장하는 기본 단위이다. JSON 형식으로 저장되며, 각 문서는 다양한 필드를 포함할 수 있다. 예를 들어, 하나의 문서는 하나의 고객 정보나 하나의 제품 정보 등을 나타낸다.
  • Field (필드)
    Document내에서 데이터의 가장 작은 단위이다. 필드에는 문자열, 숫자, 날짜 등 다양한 유형의 데이터가 저장될 수 있으며, 검색과 분석에 사용된다.

Fluentd(or Fluent Bit, Fluentd의 경량버전)

여러 소스로부터 로그수집 및 집계기능을 한다. 이후 다른 target으로 라우팅을 수행한다.

/var/log/containers/*.log의 로그를 수집하여 엘라스틱서치로 전달하면 모든 컨테이너에 대한 로깅을 수행할 수 있다.

Kibana

웹을 통해 대시보드를 제공하는 데이터 시각화 플랫폼이다. 엘라스틱서치에 보관되어있는 데이터를 조회하면 다양한 Visual Component로 표현된다.

  • KQL(Kibana Query Language)
    helm차트를 통해 EFK 스택을 구축할 수 있다(or 컴포넌트 설정값을 서로 연결하여 스택을 구성할 수 있다.)

로그수집흐름

Worker Node(Pod - Container) Fluent-bit → Elasticsearch(로그통합) → Kibana(로그시각화)

(Default 수집기 → logstash비활성 → Fluent-bit활성화)

 

리소스(CPU, MEM) 모니터링(Prometheus, Grafana)

기존의 모니터링은 앱과 에이전트로 구성되어 이를 Push하는 Push based기반의 모니터링 시스템이었다.

 

하지만 쿠버네티스 모니터링에서는 모니터링 Agent를 통해 모니터링 시스템이 수집해야하는 대상을 찾아 직접 메트릭을 수집하는 Pull based기반의 모니터링 시스템이다.

Prometheus

SoundCloud의 오픈소스 모니터링 알람툴이다. Service Discovery로부터 수집 대상을 질의하여 직접 메트릭을 수집한다.

Grafana

그라파나란 오픈소스 시각화 웹 어플리케이션으로 데이터가 저장된 위치에 상관없이 메트릭을 쿼리, 시각화, 경고등을 생성할 수 있다.

그라파나는 플러그인을 통해 다양한 시계열 데이터베이스를 지원한다.

이와 유사한 솔루션으로는 DataDog이 있다.