[AWS] MSK 클러스터에 프로메테우스와 그라파나를 활용한 모니터링 연동하기

2024. 9. 22. 22:47·AWS

 

 

들어가며

AWS MSK에서 제공하는 기본적인 모니터링 지표 외에는 추가적인 과금을 통해서 여러 모니터링을 할 수 있습니다.

그러나 생각보다 비용이 쌔다고 판단하여....

MSK에서 별도로 프로메테우스 플랫폼과 연동할 수 있는 JMX Exporter, Node Exporter를 제공하므로

해당 정보를 통해 카프카 브로커의 모니터링 지표와 브로커 인스턴스 지표(CPU, 메모리, 네트워크)를 수집하여

그라파나를 사용하여 대시보드를 구성한 모니터링 환경을 구축하고자 합니다.

 

현재 내용과 관련해서 추상적인 아키텍처를 아래와 같이 만들어보았습니다.

 

해당 페이지에서는 기록용으로 프로메테우스와 그라파나 관련 설치 및 연동에 관련한 글만 작성하였으며,

위와 같은 구성을 진행하면서 발생했던 문제들은 아래 게시글에 작성하였습니다.

  • Nginx Reverse Proxy로 Private Subnet의 Grafana에 연결 중 발생한 CORS 등의 오류와 해결                                       https://kjungw1025.tistory.com/71

 

 

 

 

프로메테우스 설치

https://prometheus.io/download

 

wget https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz
tar -xvf prometheus-2.54.1.linux-amd64.tar.gz
cd prometheus-2.54.1.linux-amd64

 

 

prometheus.yml 파일에는 프로메테우스 동작을 설정해줍니다.

global:
  scrape_interval: 15s
scrape_configs:
  - job_name: "prometheus"
    static_configs:
    - targets: ["localhost:9090"]
      
  - job_name: "broker"
    file_sd_configs:
    - files:
      - "targets.json"

 

 

targets.json 파일은 익스포터 위치를 명시적으로 선언해줍니다.

현재 폴더에 targets.json 파일을 새로 생성해줍니다.

MSK 클러스터에서 실행 중인 JMX Exportor와 Node Exporter는 각각 11001, 11002 포트로 통신한다고합니다.

그러므로 현재 저의 경우 2개의 브로커로 이루어진 클러스터를 익스포터로 모니터링하기 위해서는

JMX Exporter 두 개의 정보와 Node Exporter 두 개의 정보가 필요하니, 해당 정보를 아래 targets.json 파일에 적용해줍니다.

[
  {
    "labels": {
      "job": "jmx"
    },
    "targets": [
      "브로커 엔드포인트:11001",
      "브로커 엔드포인트:11001",
    ]
  },

  {
    "labels": {
      "job": "node"
    },
    "targets": [
      "브로커 엔드포인트:11002",
      "브로커 엔드포인트:11002",
    ]
  }
]

 

 

그 다음은 해당 폴더에 있는 prometheus 파일을 실행시켜줍니다.

백그라운드로 실행하기 위해서 nohup 명령어를 사용해주었습니다.

 

 

 

 

그라파나 설치

https://grafana.com/grafana/download

 

 

wget https://dl.grafana.com/oss/release/grafana-11.2.0.linux-amd64.tar.gz
tar -zxvf grafana-11.2.0.linux-amd64.tar.gz
cd grafana-v11.2.0

 

아래와 같이 스크립트 파일을 만들어 백그라운드로 그라파나를 실행하였습니다.

#!/usr/bin/env bash
nohup sh -c 'bin/grafana-server web' > grafana.log &
exit 0;
grafana-v11.2.0 $ chmod +x start-grafana.sh

 

 

 

그라파나가 설치된 인스턴스에서 CLI를 사용하여 비밀번호 변경

sudo grafana-cli admin reset-admin-password {변경할 비밀번호}

 

 

 

 

그라파나 접속

 

 

직접 대시보드 구성하기

대시보드를 구성하는 방법은 여러가지가 존재합니다. 우선은 직접 몇 가지 지표들을 가지고 대시보드를 구성하고,

import 해서 대시보드를 구성하는 방법에 대해 작성해보겠습니다.

 

 

process_cpu_seconds_total

해당 지표로는 서버의 CPU 사용량을 나타낼 수 있습니다.

 

 

kafka_server_BrokerTopicMetrics_OneMinuteRate

해당 지표로는 카프카 브로커로 들어가고 나가는 데이터의 양을 포함한 지표입니다.

  • BytesInPerSec 레이블 : 토픽별로 들어오는 데이터 지표
  • BytesOutPerSec 레이블 : 토픽별로 나가는 데이터 지표

 

 

위와 같이 여러 지표들을 가지고 모니터링을 구성할 수 있습니다.

 

 

 

Import를 통한 대시보드 구성하기

직접 커스터마이징 하는 방법 외에 오픈소스로 다른분들이 만든 대시보드를 import 해올 수 있습니다.

저의 경우, 아래와 같이 데이터소스를 프로메테우스로 하는 MSK 클러스터를 위한 모니터링 대시보드를 import 해왔습니다.

 

아래와 같이 MSK 클러스터에 대해서 여러 지표들을 가진 대시보드를 확인할 수 있습니다.

 

 

import 한 대시보드를 기반으로 기본적인 내용을 구성하고

추가적인 부분에 대해서는 직접 추가하여 커스터마이징하는게 가장 베스트 일 것 같다는 생각이 들었습니다.

 

 

 

 

'AWS' 카테고리의 다른 글

[AWS] MSK로 Apache Kafka 환경 구축하기  (0) 2024.09.22
[AWS] ElastiCache로 Redis 클러스터 모드 생성 및 적용해보기  (0) 2024.08.17
[AWS] Lambda와 Private Subnet에 있는 RDS 연결하기  (0) 2024.08.06
[AWS] IAM 개념 및 IAM 사용자 추가하기 + IAM 정책 시뮬레이터  (0) 2024.06.18
'AWS' 카테고리의 다른 글
  • [AWS] MSK로 Apache Kafka 환경 구축하기
  • [AWS] ElastiCache로 Redis 클러스터 모드 생성 및 적용해보기
  • [AWS] Lambda와 Private Subnet에 있는 RDS 연결하기
  • [AWS] IAM 개념 및 IAM 사용자 추가하기 + IAM 정책 시뮬레이터
개발이조아용
개발이조아용
IT 개발에서 배운 성장의 기록을 작성합니다.
  • 개발이조아용
    계속 하다 보면?!
    개발이조아용
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • Tibero DB (Tmax AI Bigdata .. (7)
      • Git (2)
      • CI CD (2)
      • Redis (3)
      • SpringBoot (16)
      • SQL 문제 풀이 (8)
      • Apache Kafka (8)
        • 오류 해결 (3)
        • 개념 정리 (4)
        • 보안 (1)
      • Nginx (3)
      • SW마에스트로 (3)
      • Kubernetes (4)
      • AWS (5)
      • gRPC (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQL
    grpc
    redis
    Kafka 개념
    K8S
    SASL 인증
    MSA
    KAFKA
    Kafka 오류
    DynamoDB 연동
    Kafka SASL
    leetcode
    sql 문제
    Redis 개념
    Tibero
    redis script
    nginx
    소프트웨어 마에스트로
    SpringBoot
    Git
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
개발이조아용
[AWS] MSK 클러스터에 프로메테우스와 그라파나를 활용한 모니터링 연동하기
상단으로

티스토리툴바