ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로메테우스
    Data Engineer 2024. 3. 3. 21:43
    728x90

    Prometheus

     

    • K8s 환경에 들어오며, 전체 인프라 환경과 Application에 대한 모니터링을 하는 것이 매우 중요해졌다
    • 인프라에 대한 전체적인 가시성을 확보해야 k8s 내에 돌아가는 Application에 대한 가용성과 안정성을 확보
    • 모니터링 결과를 통해 고도화된 Cloud Native 시스템을 구축할 사용하는 지표로 활용

    • 기존 레거시 환경은 고사양 서버에 application을 크게 운영하는 방식으로 운영
    • 고사양 서버에 Monitoring Agent 서버에 설치한 , Agent OS 메트릭을 수집하여 Backend 직접 전송하는 방식을 사용

    • Cloud native : 컨테이너 기반의 Application을 작게 운영하고 필요할 때마다 확장, 파괴하는 방식 선택
    • 동적으로 확장하는 서버에 agent를 일일이 설치하는 것이 불가하므로, Kubernetes API를 통해 동적으로 확장된 서버 endpoint를 discovery하는 방식으로 운영
    • Monitoring backend에서 discovery한 endpoint를 통해 metric을 수집

     

    K8s Monitoring Pipeline

    • Core Metric Pipeline / Monitoring 

    • Core Metric Pipeline : 쿠버네티스 관련 구성 요소를 직접 관리하는 파이프라인
    • Kubelet, metrics-server, metric API 등으로 구성되어 있으며, 쿠버네티스의 핵심 동작 요소에 대한 모니터링을 담당
    • 현재 상태가 Desired State가 되는 것을 모니터링
    • Kubelet에 저장된 cadvisor를 통해 노드/포드/컨테이너의 사용량 정보를 수집하며, 동적으로 확장된 노드에 관련된 정보도 같이 수집
    • Kubelet에 저장된 정보는 metric server가 수집되어 메모리에 저장, 이때 메모리에 저장하기 때문에 짧은 기간의 데이터만 저장
    • Kubernetes Master Metric API 통해 다른 시스템 Component 조회 가능하게 한다.

    • Monitoring Pipeline : k8s에서 제공하는 기본 메트릭 외 다양한 메트릭 수지 
    • 사용자가 직접 설치하여 Monitoring 파이프라인 구축

     

    Prometheus?

    • 현재 쿠버네티스 상에서 가장 많이 사용하는 오픈 소스 기반 모니터링 시스템
    • CNCF에 소속되어 있으며, Kubernetes 클러스터 및 Docker 컨테이너들을 손쉽게 모니터링 가능
    • 간단한 텍스트 형식으로 메트릭을 쉽게 노출 가능하며, 데이터 모델은 key-value 형태로 레이블을 집계한 후, Grafana와 같은 대시보드 시스템에서 그래프로 쉽고 간단하게 Dashboard를 만들 수 있다.
    • 이해하기 쉬운 PromQL 쿼리 언어를 사용해 간단하게 경고와 Ruleset을 정의 가능

     

    Architecture

    • 대부분의 모니터링 도구가 push 방식, 각 서버에 클라이언트를 설치하고 이 클라이언트가 메트릭 데이터를 수집하여 서버로 보내면 서버가 모니터링 상태를 보여주는 방식을 취한다
    • Prometheus Pull 방식을 사용하여, 서버에 클라이언트가 있으면 서버가 주기적으로 클라이언트에 접속하여 데이터를 가져오는 방식을 취한다
    •  

    • Service discovery : Prometheus는 기본적으로 모니터링 대상 목록을 유지하고 있으며, 대상에 대한 IP나 기타 접속 정보를 설정 파일에 주어서 모니터링 정보를 가져오는 방식을 사용한다.
    • 이러한 환경에 대처하기 위해 서비스 디스커버리를 사용하나, Auto Scaling 환경에서는 ip가 동적으로 변경되는 경우가 많기 때문에 모니터링 대상이 등록되어 있는 저장소에서 목록을 받아 그 대상을 모니터링하는 형태를 취한다.
    • Push gateway : Proxy Forwarding을 해서 접근할 수 없는 곳에 데이터가 존재하는 경우에 사용할 수 있는 대안
    • Exporter & job : Exporter는 Prometheus에게 메트릭을 가져가도록 특정 Service에 metric을 노출하게 하는 Agent
    • Alert Manager : metric에 대한 어떠한 지표를 걸어놓고 그 규칙을 위반하는 사항에 대해 알람을 전송하는 역할
    • Data Visualization : 다양한 모니터링 Dashboard를 위한 visualization 제공
    728x90

    'Data Engineer' 카테고리의 다른 글

    Git action - 이론  (0) 2024.03.08
    App Update  (0) 2024.03.08
    Dockerfile & Docker-compose  (0) 2024.02.20
    [Security] Microsoft Defender  (0) 2024.02.19
    CBD 방법론  (1) 2024.01.11
Designed by Tistory.