콘텐츠로 이동






07. Redis 모니터링방법

Redis 모니터링

  • 본 문서는 Zabbix에서 Redis를 Agent 기반으로 모니터링하는 절차를 설명한다.
  • 최신 권장 방식은 Zabbix agent 2와 내장 Redis plugin, 그리고 Redis by Zabbix agent 2 템플릿을 사용하는 방법이다.
  • 이 방식은 별도 외부 스크립트 없이 Redis 상태와 성능 지표를 수집할 수 있다.

구성 개요

  • Zabbix Server 또는 Proxy: 수집 데이터 저장, 트리거 평가, 알림 처리 담당.
  • Redis 서버: 대상 인메모리 데이터 저장소.
  • Zabbix Agent 2: Redis plugin을 통해 Redis 상태를 수집하는 컴포넌트.
  • 통신 포트:
  • Zabbix Server/Proxy -> Agent: 10050/tcp, Passive check.
  • Agent -> Zabbix Server/Proxy: 10051/tcp, Active check.
  • Agent -> Redis: 6379/tcp 또는 Unix socket.

권장 방식

  • 공식 문서는 Redis 모니터링에 Zabbix agent 2의 Redis plugin 사용을 안내한다.
  • Redis plugin은 Agent 2에 기본 포함되어 있으며, 별도 설치 단계가 필요하지 않다.
  • 실무에서는 OS 템플릿과 Redis 템플릿을 동일 Host에 함께 연결하는 구성이 일반적이다.

사전 준비

  • 대상 서버에는 Redis가 정상 실행 중이어야 한다.
  • 대상 서버에는 zabbix-agent2가 설치되어 있어야 한다.
  • Zabbix Web UI에서 Host가 생성되어 있어야 하며, Agent interface가 등록되어 있어야 한다.
  • Redis 인증 비밀번호가 설정된 경우 Agent 2 세션 설정 또는 매크로 값을 함께 준비해야 한다.

Agent 2 설치

  • Rocky Linux 계열 예시는 다음과 같다.
  • 운영체제에 맞는 공식 저장소 패키지를 사용한다.
$> rpm -Uvh https://repo.zabbix.com/zabbix/7.4/release/rhel/9/noarch/zabbix-release-latest.el9.noarch.rpm
$> dnf clean all
$> dnf install -y zabbix-agent2
  • 설치 후 서비스를 활성화한다.
$> systemctl enable --now zabbix-agent2

Redis 접속 설정

  • 공식 Redis plugin은 TCP와 Unix socket 연결을 모두 지원한다.
  • 가장 단순한 방법은 Web UI의 Host macro로 Redis URI를 지정하는 방식이다.
  • 기본 TCP 접속 예시는 아래와 같다.
{$REDIS.CONN.URI}=tcp://127.0.0.1:6379
  • Redis 인증이 필요한 경우 비밀번호 매크로를 함께 설정한다.
{$REDIS.PASSWORD}=StrongPassword
  • Unix socket 방식 예시는 아래와 같다.
{$REDIS.CONN.URI}=unix:///var/run/redis/redis.sock

Agent 2 세션 설정

  • Redis plugin은 Agent 2 설정 파일에서 세션을 정의하는 방식도 지원한다.
  • 다중 Redis 인스턴스나 비밀번호 분리가 필요한 환경에서는 세션 정의 방식이 유용하다.
$> vi /etc/zabbix/zabbix_agent2.conf


ini
Server=<ZABBIX_SERVER_IP>
ServerActive=<ZABBIX_SERVER_IP>

Plugins.Redis.Sessions.Redis1.Uri=tcp://127.0.0.1:6379
Plugins.Redis.Sessions.Redis1.Password=StrongPassword
  • 이 방식을 사용할 경우 Web UI의 {$REDIS.CONN.URI} 매크로에 세션 이름 Redis1을 넣는 구성이 사용된다.
{$REDIS.CONN.URI}=Redis1

Web UI 등록

  • Zabbix Web UI에서 Redis 서버용 Host를 생성하거나 기존 Host를 연다.
  • Templates에서 Redis by Zabbix agent 2를 연결한다.
  • Macros 탭에서 Redis 접속 정보를 환경에 맞게 설정한다.
  • 저장 후 Latest data에서 Redis 관련 항목이 수집되는지 확인한다.

매크로 예시

  • {$REDIS.CONN.URI} = tcp://127.0.0.1:6379
  • {$REDIS.PASSWORD} = StrongPassword

수집 항목 예시

  • Redis availability
  • Ping 응답
  • Connected clients
  • Used memory
  • Maxmemory 정책 관련 상태
  • Instantaneous operations per second
  • Keyspace hit/miss 비율
  • Replication role 및 replica 상태
  • RDB/AOF 관련 상태값, 구성에 따라 다름

Passive / Active 선택

  • OS Agent 통신은 Passive 또는 Active 중 하나 또는 둘 다 사용할 수 있다.
  • Redis 메트릭 자체는 Agent 2가 Redis에 직접 접속해 가져오므로, 핵심은 Agent <-> Zabbix 경로와 Agent -> Redis 경로가 모두 정상이어야 한다.
  • 대규모 환경에서는 Agent 쪽은 Active check 중심으로 운영하고, Redis 접속은 로컬 또는 Unix socket 기반으로 제한하는 구성이 안정적이다.

방화벽 및 접근 제어

  • Zabbix Agent 포트는 기존 Agent 운영 정책과 동일하게 적용한다.
  • Passive: 10050/tcp
  • Active: 10051/tcp
  • Redis는 기본적으로 6379/tcp를 사용한다.
  • 가능하면 Agent와 Redis를 같은 서버에 두고 127.0.0.1 또는 Unix socket으로 접속하게 구성하는 편이 보안상 유리하다.
  • Redis protected-mode, bind 설정, ACL 또는 requirepass 설정을 함께 검토해야 한다.

대용량 운영 추천값

  • 대규모 Redis 환경에서는 Agent 2 + Active check + Proxy 조합이 확장성 측면에서 유리하다.
  • Redis 인스턴스가 여러 개라면 세션 이름과 Host group 정책을 표준화하는 것이 중요하다.
  • 추천 시작 기준은 아래와 같다.
항목 추천값
Agent 방식 Zabbix agent 2
템플릿 Redis by Zabbix agent 2
OS 수집 방식 Active 우선, Passive 보조
Redis 접속 경로 가능하면 localhost 또는 Unix socket
인증 방식 비밀번호 또는 ACL 적용
세션 구성 다중 인스턴스는 Plugins.Redis.Sessions.* 사용
Host 그룹 Cache / Redis 계열로 분리

구방식 참고

  • 과거에는 redis-cli, UserParameter, 외부 Python 스크립트 기반으로 모니터링하는 방식이 많이 사용되었다.
  • 현재는 공식 Agent 2 Redis plugin과 기본 템플릿 사용이 훨씬 단순하고 유지보수도 쉽다.
  • 기존 스크립트 기반 환경은 즉시 제거하기보다 Agent 2 기반 템플릿 방식으로 단계적으로 전환하는 것이 현실적이다.

점검 항목

  • zabbix-agent2 서비스가 정상 실행 중인지 확인한다.
  • Agent에서 Redis 6379 또는 Unix socket 접속이 가능한지 확인한다.
  • Web ㅂUI 매크로 값 또는 세션 이름이 정확한지 확인한다.
  • Latest data에서 Redis 관련 항목이 들어오는지 확인한다.
  • 인증 실패, 잘못된 URI, protected-mode, Hostname 불일치는 가장 흔한 원인이므로 우선 점검한다.

운영 팁

  • OS 템플릿과 Redis 템플릿을 같은 Host에 함께 연결하면 운영이 단순해진다.
  • Redis가 Sentinel, Replica, Cluster 구조라면 역할별 Host group과 템플릿 적용 기준을 분리하는 것이 좋다.
  • 비밀번호는 템플릿 하드코딩보다 Host macro 또는 Secret/Vault 연계 방식으로 관리하는 편이 안전하다.
  • 먼저 기본 상태와 메모리 지표부터 수집한 뒤, 이후 replication, persistence, evicted key, latency 중심으로 확장하는 방식이 안정적이다.