ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kafka Monitoring with Prometheus & Grafana : 1
    엔지니어링/Kafka 2022. 4. 28. 17:37
    728x90

    하기 포스팅은 카프카 서버의 status를 모니터링하기 위해 prometheus와 grafana를 구축하는 절차이다. 


    가장 먼저 프로메테우스가 무엇인지, 관련 애플리케이션에는 어떤 것이 있는지 살펴보겠다. 

    개요

    - 프로메테우스와 그라파나는 현재 가장 많이 사용되고 있는 모니터링 툴이다. 

    - 별도의 agent 개발 없이도, 다양한 export 등을 활용하여 현재 사용하고 있는 서비스에 최적화된 모니터링 환경을 구성할 수 있다. 

     

    구성요소 

    구성요소 역할
    Prometheus 메트릭 수집 및 규칙 확인
    Grafana 데이터 시각화 
    Alertmanager 알림발송 
    Exporter 메트릭 수집 및 포트 오픈
    Pushgateway PUSH 방식으로 데이터 수집

    좀 더 상세히 살펴보자. 

    - Prometheus : 타겟이 되는 서버로부터 메트릭을 수집하고, 특정 규칙에 부합하는 메트릭에 대한 정보를 알람매니저에게 알려준다. 

    - Grafana : PromQL을 이용하여 프로메테우스(데이터 소스)에 쿼리를 전송하고, 받은 결과값을 토대로 시각화한다.

    - Alertmanager : 설정한 규칙을 토대로 프로메테우스로부터 메트릭 정보를 받고, 해당 사항에 대해 알고있어야 하는 서비스 팀이나 엔지니어에게 메일이나 슬랙을 보낸다. 

    - Exporter : 타겟 서버 내에서 정보를 수집하고 특정 포트를 오픈하여, 프로메테우스가 해당 서버로부터 메트릭을 가져갈 수 있도록 도와주는 에이전트 역할을 하는 애플리케이션이다. 

    - Pushgateway : 기본적으로 프로메테우스는 pull 방식을 통해 타겟 서버로부터 메트릭을 가져간다. 한편 사용자의 필요에 따라 push 방식을 사용해야 하는 경우가 생길 수 있는데, 이때 푸시게이트웨이를 통해 데이터를 푸시하고 프로메테우스가 이를 가져가는 방식으로 사용할 수 있다. 

     

    아키텍처

    - 기본적인 동작방식은 다음과 같다. 

      프로메테우스는 서비스 디스커버리 설정에 위치한 타겟 서버로 접근하여 데이터를 pull 방식으로 가져온다. 가장 일반적인 방식은 파일을 이용하여 타겟 서버에 접근하는 것이고, 환경에 따라 k8s, EC2 등을 활용할 수 있다. 

    - 프로메테우스는 HTTP 프로토콜을 사용하여 타겟 서버에 접근한다. 

       이때 타겟 서버에는 해당 서버의 시스템 혹은 애플리케이션에 대한 메트릭을 수집하고, 프로메테우스가 그 정보를 가져가도록 LISTEN 상태로 포트를 열어놓는 Exporter가 필요하다. 

       프로메테우스에서는 다양한 익스포터를 제공하고 있으며, 필요에 따라 프로메테우스 클라이언트 라이브러리를 활용하여 직접 익스포터를 만들 수 도 있다. 

    https://prometheus.io/docs/instrumenting/exporters/

     

    Exporters and integrations | Prometheus

    An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

    prometheus.io

     

        

     

    다음 포스팅에서는 프로메테우스 및 그라파나 설치 절차와, JMX exporter를 통해 kafka의 메트릭을 수집하는 방법에 대해 알아보겠다. 

    728x90

    '엔지니어링 > Kafka' 카테고리의 다른 글

    Kafka consumer group  (0) 2022.03.04
    Apache Kafka Streams 예제코드  (0) 2022.03.03
    Zero copy transfer  (0) 2022.02.24
    Jabba Utility  (0) 2022.02.15
    [구성] Mongo Sink Connector  (0) 2021.12.22

    댓글

Designed by Tistory.