728x90
반응형
SMALL

레디스를 모니터링 하는 방법은 다양하게 존재한다.

 

redis-cli monitor

가장 간단하고 실용적인 방법이다. 어떤 명령들이 수행되는지 계속해서 올라온다.

 

 

redis-cli --stat

실시간 통계 모니터링 (ops/sec, hit rate 등) Redis 상태를 실시간으로 보고싶을 때 활용한다.

 

redis-cli --bigkeys

가장 큰 키 탐색 (메모리/요소 수 기준). 메모리 많이 먹는 키가 무엇인지 찾고 싶을 때 사용한다.

 

redis-cli --memkeys

메모리 사용량 순으로 키 정렬을 한다. 어떤 키가 메모리를 많이 차지하는지 분석할 때 사용한다.

 

redis-cli --latency

명령어 응답 지연 시간 분석. 성능 병목, 느려진 원인을 찾고 싶을 때 사용한다.

 

명령어 목적 키 기준? 실시간/스냅샷?
--stat 전체 Redis 통계 실시간
--bigkeys 가장 큰 키 찾기 스냅샷 (한번 돌림)
--memkeys 메모리 많이 쓰는 키 정렬 스냅샷
--latency 응답 지연 분석 실시간

 

그런데, 이 명령어들은 운영 환경에서 지속적인 관찰을 하기엔 어려움이 있다. 따라서 끝판왕이 있다.

 

Prometheus / Grafana

이 두가지 도구를 사용하면, 운영환경에서도 지속적으로 모니터링을 하고 문제를 바로 잡을 수 있다. 

프로메테우스는 메트릭을 수집하는 도구, 그라파나는 수집된 메트릭으로 대시보드로 보여주는 시각화 도구이다.

 

  • Redis exporter 라는 Redis에서 수집할 필요가 있는 모든 데이터를 추출한 후 그 데이터를 Prometheus로 보낼 수가 있다.

  • 수집한 메트릭을 기반으로 그라파나에서 뿌려주면 끝이다.

 

도커 컴포즈로 테스트해보기

직접 테스트해보기 위해 도커 컴포즈를 활용하자.

version: '3.8'

services:
  redis:
    container_name: pj2-ticketing-redis
    image: redis:7.4
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    networks:
      - pj2-ticketing

  prometheus:
    image: prom/prometheus:latest
    container_name: pj2-ticketing-prometheus
    user: root
    volumes:
      - ./prometheus/config:/etc/prometheus
      - ./prometheus/data:/prometheus
    ports:
      - "9090:9090"
    networks:
      - pj2-ticketing
    restart: always

  grafana:
    container_name: pj2-ticketing-grafana
    image: grafana/grafana:latest
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_USERS_ALLOW_SIGN_UP=false
    volumes:
      - ./grafana/data:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    ports:
      - "3000:3000"
    depends_on:
      - prometheus
    networks:
      - pj2-ticketing
    restart: always

  redis-exporter:
    container_name: pj2-ticketing-redis-exporter
    image: oliver006/redis_exporter:latest
    environment:
      - REDIS_ADDR=redis://redis:6379
    ports:
      - "9121:9121"
    depends_on:
      - prometheus
    networks:
      - pj2-ticketing
    restart: always

networks:
  pj2-ticketing:
    driver: bridge

volumes:
  redis_data:
  • Redis, Redis Exporter, Prometheus, Grafana를 실행한다.
  • 추가적으로 필요한 작업은 볼륨 작업인데, 다음과 같이 작업하면 된다.

디렉토리 생성

./prometheus/config/prometheus.yaml

./prometheus/data

./grafana/data

./grafana/provisioning

 

./prometheus/config/prometheus.yaml

global:
  scrape_interval: 1m

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 1m
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'redis-exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['redis-exporter:9121']

 

모든 준비가 끝났으면 도커 컴포즈를 띄운다. 참고로 컴포즈 이름은 원하는대로 하면 된다.

docker-compose -p pj2-ticketing up -d

 

 

우선, 프로메테우스로 들어가보자. 

http://localhost:9090

  • 쿼리에 `redis_commands_total` 이 녀석을 추가했다. 이 녀석은 Redis Exporter가 수집하는 메트릭이다.

 

이제 그라파나로 들어가보자.

http://localhost:3000

  • 먼저, 새로운 DataSource를 추가해야한다.
  • 커넥션 정보로는 도커 컴포즈를 활용했으니 서비스명인 `prometheus`를 사용해서 http://prometheus:9090을 입력한다.
  • 아래로 내리면 저장 버튼이 있다.

 

그 다음, 대시보드로 가서 사람들이 잘 만들어놓은 것을 임포트해서 사용하면 된다. 나는 이 대시보드 템플릿을 사용했다.

 

Redis Exporter Quickstart and Dashboard | Grafana Labs

To use this dashboard, please follow the Redis Exporter Quickstart. This quickstart helps you monitor your Redis server by setting up the Prometheus Redis exporter with preconfigured dashboards, alerting rules, and recording rules. This dashboard includes

grafana.com

들어가면 오른쪽에 [Copy ID to Clipboard] 버튼이 있는데 ID를 복사하면 된다.

그 다음, 그라파나로 다시 돌아가서 Import Dashboard - 복사한 ID 집어넣고 저장하면 끝!

 

이렇게 아름다운 대시보드를 볼 수 있다.

728x90
반응형
LIST

'Redis' 카테고리의 다른 글

AWS 환경에서 Redis Sentinel 환경 구축하기  (0) 2025.04.28
Replication  (0) 2025.04.20
Spring Boot + Redis PubSub  (0) 2025.04.20
Spring Boot + Redis Session  (0) 2025.04.20
Keys, Scan  (0) 2025.04.20

+ Recent posts