들어가며
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 |