서비스 모니터링은 서비스를 운영하는데 매우 중요한 요소이다.
Redis는 캐시 용도로 사용되기도 하지만, 빠른 접근이 필요하지만 다소 중요하지 않는 정보를 저장하는 저장소로도 사용이 될 수 있다.
이러한 경우에는 데이터가 저장되기 때문에 redis 장애 시 시스템에 문제가 생길 수도 있다.
이러한 상황을 빠르게 탐지하고, 사전에 차단하기 위해서는 모니터링 시스템이 필요하다.
기본 구성은 Prometheus, Grafana를 활용한다.
Redis Exporter 설치
prometheus doc의 다양한 exporter : https://prometheus.io/docs/instrumenting/exporters/
redis-exporter : https://github.com/oliver006/redis_exporter
바이너리 다운 및 준비
wget https://github.com/oliver006/redis_exporter/releases/download/v1.24.0/redis_exporter-v1.24.0.linux-amd64.tar.gz # Redis Exporter gzip 파일
tar -zxvf redis_exporter-v1.24.0.linux-amd64.tar.gz # 압축해제
ln -s ./redis_exporter-v1.24.0.linux-amd64/ redis_exporter # 폴더명 수정
서비스 등록
/etc/systemd/system/redis_exporter.service
[Unit]
Description=Redis Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
Type=simple
ExecStart={{$PATH}}/redis_exporter/redis_exporter \
-web.listen-address ":9121" \
-redis.addr "redis://localhost:6379" \
-redis.password "redis-pas"
[Install]
WantedBy=multi-user.target
실행 명령어
sudo systemctl daemon-reload
sudo systemctl start redis_exporter
sudo systemctl status redis_exporter
sudo systemctl enable redis_exporter
Prometheus target 등록
각 환경에 맞는 ip 주소 입력
scrape_configs:
## config for the multiple Redis targets that the exporter will scrape
- job_name: 'redis_exporter_targets'
static_configs:
- targets:
- redis://localhost:6379
- redis://127.0.0.2:6379
- redis://localhost:6380
- redis://localhost:6381
metrics_path: /scrape
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9121
grafana datasource 등록
redis의 정보를 prometheus를 통해서 가져와서 화면을 구성하는 dashboard가 있고(위에 케이스)
추가적으로 grafana에 등록된 redis 정보를 가져와 화면을 구성하는 dashboard가 있다(아래 케이스)
아래의 단계를 거쳐서 할 수 있다.
- grafana redis plugin 설치
- grafana redis datasource 추가