본문 바로가기
스터디/쿠버네티스 & 도커

[쿠버네티스 / 도커] 06. 쿠버네티스 모니터링 방법, 프로메테우스와 그라파나

by 디토20 2022. 7. 20.
반응형

 

 

 

 

[쿠버네티스 / 도커] 06. 쿠버네티스 모니터링 방법, 프로메테우스와 그라파나

 

 

1. 컨테이너 인프라 환경 모니터링하기

거의 모든 모니터링 도구는 수집 -> 통합 -> 시각화 구조로 되어있다. 컨테이너 인프라 환경에서는 모니터링 데이터를 프로메테우스로 수집하고 수집한 정보를 한곳에 모아(통합), 그라파나로 시각화 할 수 있다.

 

 

1.1 모니터링 도구 선택하기

프로메테우스그라파나오픈 소스 도구이다. 오픈 소스는 가능한 단일 도구에서 단일 기능만을 구현한다. 데이터 수집과 통합, 시각화는 서로 다른 영역이므로 이를 함께 구현하지 않으려는 경향이 있다. 물론 서비스형 모니터링 도구는 사용자의 편의를 위해 이러한 기능을 모아서 한꺼번에 제공한다.

 

오픈소스는 왜 하나의 도구로 처리하지 않고 혼합 구조를 사용할까?

1. 비용

- 모니터링 대상마다 라이선스 관련 비용이 발생하고, 클라우드 같은 과금제 서비스를 이용하면 네트워크와 저장 공간에 따른 추가 비용이 발생하므로 비용에 민감한 조직에는 도입하기 어렵다.

 

2. 보안

- 서비스형 모니터링 도구들은 대부분 외부에 데이터를 저장해 모니터링 한다. 보안에 민감해서 내부에서 모든 데이터를 처리하려는 경우에는 사용하기 어렵다.

 

 

데이터 수집과 통합 도구
구분 프로메테우스 데이터독 뉴 렐릭 인플럭스DB
가격 무료 유료 유료 유/무료
형태 설치형 서비스형 서비스형 서비스형/설치형
참고 자료 매우 많음 많음 많음 많음
기능 확장성 매우 좋음 좋음 좋음 좋음

 

 

데이터 시각화 도구
구분 그라파나 키바나 크로노그래프
가격 유/무료 유/무료 유/무료
형태 서비스형/설치형 서비스형/설치형 서비스형/설치형
시각화 대상 다양한 대상 시각화 가능 엘라스틱서치 인플럭스DB
정보량 많음 많음 적음
기능 확장성 좋음 좋음 적음

 

 

1.2 쿠버네티스 환경에 적합한 모니터링 데이터 수집 방법

리소스메트릭 파이프라인
  • 메트릭 서버를 설치해 HPA와 같은 기능을 구현하고 쿠버네티스 대시보드를 설치해 현재 상태를 확인할 수 있게 하는 것.
  • 메트릭 서버는 집계한 데이터를 메모리에만 저장하므로 데이터를 영구적으로 보존하기 어렵고 현재 시점의 데이터만 출력된다.

 

완전한 모니터링 파이프라인
  • 메트릭 데이터를 저장 공간에 따로 저장하는 방식(ex. 프로메테우스)
  • 메트릭 데이터를 모아 시계열 데이터베이스에 저장해서 시간이 지나도 확인할 수 있는 영속적인 데이터로 만듬
  • 누적된 메트릭 데이터로 쿠버네티스 인프라의 상태변화를 파강하고 적절한 위험 감지 및 조치 가능

 

 

 

 

2. 프로메테우스로 모니터링 데이터 수집과 통합하기

프로메테우스는 프로메테우스 서버, 노드 익스포터, 쿠버 스테이트 메트릭, 얼럿매니저, 푸시게이트웨이등 많은 종류의 오브젝트를 설치한다. 오브젝트를 통해 설치된 요소로 모니터링에 필요한 데이터를 수집하고 저장한다.

 

프로메테우스 서버
  • 프로메테우스의 주요 기능을 수행하는 요소로, 3가지 역할을 맡는다.
  • 노드 익스포터 외 여러 대상에서 공개된 메트릭을 수집해 오는 수집기
  • 수집한 시계열 메트릭 데이터를 저장하는 시계열 데이터베이스
  • 저장된 데이터를 질의하거나 수집 대상의 상태를 확인할 수 있는 웹 UI

 

노드 익스포터
  • 노드의 시스템 메트릭 정보를 HTTP로 공개하는 역할
  • 설치된 노드에서 특정 파일들을 읽고, 이를 프로메테우스 서버가 수집할 수 있는 메트릭 데이터로 변환 후에 노드 익스포터에서 HTTP 서버로 공개한다.

 

쿠버 스테이트 메트릭
  • API 서버로 쿠버네티스 클러스터의 여러 메트릭 데이터를 수집한 후, 이를 프로메테우스 서버가 수집할 수 있는 메트릭 데이터로 변환해 공개하는 역할

 

얼럿매니저
  • 프로메테우스에 경보 규칙을 설정
  • 경보 이벤트가 발생하면 설정된 경보 메시지를 대상에게 전달하는 기능을 제공

 

푸시게이트웨이
  • 배치와 스케줄 작업 시 수행되는 일회성 작업들의 상태를 저장하고 모아서 프로메테우스가 주기적으로 가져갈 수 있게 공개

 

 

2.1 서비스 디스커버리로 수집 대상 가져오기

프로메테우스는 수집 대상을 자동으로 인식하고 필요한 정보를 수집한다. 정보를 수집하려면 일반적으로 에이전트를 설정해야 하지만, 쿠버네티스는 서버가 수집 대상을 가져오는 방법인 서비스 디스커버리 덕분에 사용자가 에이전트에 추가로 입력할 필요 없이 자동으로 메트릭스를 수집할 수 있다.

 

서비스 디스커버리는 다음 순서로 동작하며 프로메테우스 서버와 API 서버가 주기적으로 데이터를 주고받아 수집 대상을 업데이트하고, 수집 대상에서 공개되는 메트릭을 자동으로 수집한다.

 

1. 프로메테우스 서버는 컨피그맵에 기록된 내용을 바탕으로 대상을 읽어온다.

2. 읽어온 대상에 대한 메트릭을 가져오기 위해 API 서버에 정보를 요청한다.

3. 요청을 통해 알아온 경로로 메트릭 데이터를 수집한다.

 

 

 

 

3. PromQL로 메트릭 데이터 추출하기

현업에서는 수집된 메트릭 데이터를 그대로 사용하기보다는 필요한 메트릭 데이터를 다시 한 번 가공해서 추출하는 경우가 더 많다. 필요한 메트릭 데이터를 정확하게 추출하려면 PromQL을 알아야 한다.

 

3.1 메트릭 데이터의 구조

3.1.1 메트릭 값의 종류

카운터
  • 누적된 값을 표현하는데 사용하는 메트릭 타입
  • 구간별로 변화율을 파악해 해당 값의 증가 추세를 알 수 있음
  • 이벤트나 오류 등이 급증하는 구간을 파악하는데 적합
  • 순간의 데이터를 표현하는데는 적합하지 않음

 

게이지
  • 특정 시점의 값을 표현하는 데 사용하는 메트릭 타입
  • 시점별로 증가나 감소를 모두 표현할 수 있다.
  • CPU 온도나 메모리 사용량등은 순간의 값이 중요하므로 게이지 타입 사용

 

히스토그램
  • 사전에 미리 정의한 구간 안에 있는 메트릭 값의 빈도를 측정
  • 익스포터를 구현하는 단계에서 정의한 구간을 버킷이라고 한다.

 

서머리
  • 히스토그램과 비슷하게 구간 내에 있는 메트릭 값의 빈도를 측정
  • But 히스토그램과 달리 구간이 지정되는 것이 아니라 프로메테우스 자체에서 0~1 사이로 구간을 미리 정해놓는다.

 

 

 

4. 그라파나로 모니터링 데이터 시각화하기

메트릭 데이터를 시각화할 때 가장 많이 언급되는 도구가 그라파나다. 그라파나는 프로메테우스뿐만 아니라 엘라스틱서치, 인플럭스DB등 여러 종류의 데이터 소스를 시각화할 수 있고, 높은 범용성을 가진 오픈 소스 도구이다. 프로메테우스와 다르게 그라파나는 매우 복잡한 설정이나 구성 없이 편하게 시작할 수 있다.

 

 

 

 

5. 좀 더 견고한 모니터링 환경 만들기

그라파나 대시보드를 사람이 항상 관찰할 수 없으니 시스템에서 이상 신호를 감지하고 메시지를 받게 할 수 있다. 또한 대시보드를 다른 사용자에게 전달해 그라파나 대시보드와 패널을 작성하는 방법을 알지 못해도 바로 사용할 수 있게 한다.

 

 

5.1 얼럿매니저로 이상 신호 감지하고 알려주기

대시보드는 설정된 모든 상태를 확인할 때는 효율적이지만, 특정 내용을 감지해서 따로 알려주지는 않는다. 그래서 현재 시스템에서 사용자가 이상 신호가 담긴 경보 메시지를 받으려면 그라파나의 얼럿 메뉴 또는 프로메테우스의 얼럿매니저로 수신해야 한다. 그라파나 얼럿 메뉴는 오직 시각화 그래프에만 존재하기 때문에 제한적이라 프로메테우스의 얼럿매니저가 더 다양한 기능을 갖고 있다.

728x90
반응형

댓글