프로메테우스와 그라파나를 이용하면 레디스를 쉽게 모니터링 할 수 있습니다.
version: "3.9"
services:
grafana:
image: grafana/grafana
ports:
- 3000:3000
prometheus:
image: prom/prometheus
ports:
- 9090:9090
command:
- '--config.file=/etc/prometheus/prometheus.yml'
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
redis:
image: redis:latest
ports:
- 6379:6379
node-exporter:
image: prom/node-exporter
ports:
- 9100:9100
redis-exporter:
image: oliver006/redis_exporter
ports:
- 9121:9121
environment:
REDIS_ADDR: "redis:6379"
REDIS_USER: null
links:
- redis
- prometheus
redis exporter 와 node exporter를 이용해서 데이터를 끌어모으고 이를 프로메테우스가 pull하는 방식으로 진행됩니다.
이후 해당 값을 그르파나를 이용해서 그래프를 보여주는 방식입니다.
exporter -> prometheus -> grafana
node exporter는 해당 서버의 자원(cpu, memory등)을 수집하는 프로그램이고 redis exporter는 redis 정보를 수집하는 프로그램입니다.
global:
scrape_interval: 15s #
evaluation_interval: 15s #
scrape_configs:
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
- job_name: 'redis-exporter'
static_configs:
- targets: ['redis-exporter:9121']
세부적인 사항 없이 여기서는 그저 값을 가져오게만 하였습니다.
targets를 통해 원하는 메트릭 값을 가져오도록 할 수 있습니다.(다른 메트릭 주소이거나 다른 주기를 갖도록 하고 싶다면 프로메테우스 공식 홈페이지를 통해 확인 할 수 있습니다.)
먼저, docker-compose.yml 파일을 이용해 여러 도커 컨테이너를 한번에 띄울 수 있습니다. 이를 위해 터미널에서 아래의 명령어를 실행합니다.
docker compose up -d
프로메테우스가 정상적으로 실행되고, 메트릭 값을 잘 가져오는지 확인해봅니다.
localhost:9090으로 접속합니다.Status -> Targets를 선택합니다.
각 Target의 상태가 UP이면 메트릭을 잘 가져오고 있는 것입니다.

그라파나를 통해 프로메테우스의 메트릭을 시각화해봅니다.
localhost:3000으로 접속합니다. 초기 아이디와 비밀번호는 admin입니다.
Configuration -> Data Sources를 선택하고, Add data source 버튼을 클릭합니다. 이후 Prometheus를 선택합니다.
http://prometheus:9090를 입력하고, Save & Test 버튼을 클릭합니다. 
Data source is working이라는 메시지가 표시되면 성공적으로 연결된 것입니다.
Create -> Dashboard를 선택하고, Add new panel을 클릭합니다.
Apply 버튼을 클릭합니다.

이제 도커, 프로메테우스, 그라파나를 이용한 모니터링 환경이 완성되었습니다. 이 환경을 통해 서버의 상태를 실시간으로 체크하고, 필요시 알림을 설정하여 시스템의 이상 상황을 빠르게 파악할 수 있습니다.
Home 화면에서 plugins를 검색하과 들어가줍니다.

redis를 검색한 후 가장 첫 번째 Redis로 들어가줍니다.

설치를 해준 후 Add new data source를 눌러줍니다.

위에서 설정한 redis 값들을 입력합니다. 여기서는 아무 설정값을 지정해주지 않았기에 url만 설정해주었습니다.

Dashboards에서 첫 번째 Redis를 Import 해 줍니다. 이 후 해당 칸을 눌러줍니다.

Redis가 연결이 된 것을 확인 할 수 있습니다. 직접 값을 넣어보면 해당 값들이 변하는 것을 확인 할 수 있습니다.(변화가 잘 보이지 않는다면 시간 폭을 5분 단위로 줄여보시면 그 변화를 체감하실 수 있습니다.)
