- 이 내용은
컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커
책을 ref 합니다
컨테이너 인프라 환경 모니터링
- 배포된 애플리케이션은 상용환경에서 여러 예외 상황이 발생할 수 있다
- 노드의 하드웨어(
H/W
) 문제
- 컨테이너 보유 리소스 < 요청 리소스 상태
- 등등
=> 인프라 환경을 안정적으로 관리 & 운영하기 위해 모니터링
이 필요
- 컨테이너 인프라 환경에서 가장 권장되는 모니터링 도구는 프로메테우스 & 그라파나 조합
- 프로메테우스(
prometheus
) : 데이터 수집
& 통합
- 그라파나(
Grafana
) : 데이터 시각화
모니터링 도구 선택
오픈소스 모니터링 도구
는 단일 도구
에서 단일 기능
구현
을 선호
-> 즉, 데이터 수집 & 통합
과 시각화
과정을 따로 구현한다는 것
-> why ?
1) 비용 : 모니터링 대상마다 라이선스 관련 비용
이 발생하기 때문
2) 보안 : 서비스형 모니터링 도구는 대부분 외부에 데이터
를 저장
하기 때문
데이터 수집 & 통합 도구
- 종류
- 데이터독(
Datadog
)
- 뉴 렐릭(
New Relic
)
- 인플럭스DB(
InfluxDB
)
- 프로메테우스(
prometheus
)
- 데이터를 수집 & 통합 하는 완전한 오픈소스 모델
- 시계열 데이터베이스 내장
- 자체 질의 페이지 외 시각화 기능이 없어서, 그라파나와 연계해서 시각화 강화해서 사용
- 중앙서버에서 에이전의 데이터를 수집하는 풀(pull)방식을 사용
-> 쿠버네티스 환경에 설치된 에이전트를 통해 노드와 컨테이너 상태 모두 수집
데이터 시각화 도구
- 종류
- 크로노그래프(
chronograf
)
- 키바나(
Kibana
)
- Elasticsearch에서 개발한 엘라스틱에서 만든 시각화 도구
- ES의 데이터만을 시각화 할 수 있다
-> 프로메테우스에서 사용시 데이터를 ES에 저장한 뒤 확인해야 한다
- 시각화 기능이 강력해서 시각화를 중점적으로 다루는 경우에 좋다
- 그라파나(
Grafana
)
- 특정 소프트웨어에 종속되지 않은 독립적인 시각화 도구
- 30가지 이상의 다양한 수집 도구 및 DB와 연계 가능
- 주로, 시계열 데이터의 시각화에 많이 쓰이지만, RDB를 표로 시각화 가능
- 오픈소스라서 사용자의 요구 사항에 맞게 수정 가능
- 필요에 따라
설치형
/ 서비스형
모두 가능
k8s 환경에 적합한 모니터링 데이터 수집 방법
- k8s 모니터링 파이프라인
- 리소스 메트릭 파이프라인(
Resource Metric Pipeline
)
kubectl top
명령에 있는 수집된 정보로 제한적 메트릭을 제공
- 단기 인메모리 저장소인 metrics-server에 의해 매트릭 수집
-> 메트릭 상태 값을 영구한 저장소에 저장하지 않는다
-> 현재 시점의 데이터만 출력 가능
- 완전한 모니터링 파이프라인(
Full Monitoring Pipeline
)
- 메트릭 데이터를 저장 공간(
시계열DB
등)에 따로 저장하는 방식
- 누적된 메트릭 데이터로 k8s 인프라의 상태 변화를 파악할 수 있다
- 리소스 메트릭보다
- 이 설계 방식을 반영한 도구 -> 프로메테우스
- cAdvisor ?
- 구글이 만든 컨테이너 메트릭 수집 도구
- kubelet에 내장되어서 배포된 여러 컨테이너 메트릭 정보를 수집 & 가공해서 kubelt에 전달
- k8s 노드
- kublet을 통해 파드를 관리
- 파드의 CPU나 메모리 같은 메트릭 정보를 수집하기 위해 cAdvisor 사용