[ 모니터링 ] - k8s 모니터링 (1)

김정욱·2021년 10월 24일
0
post-thumbnail
  • 이 내용은 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 책을 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 사용
profile
Developer & PhotoGrapher

0개의 댓글