[프로메테우스 #9] Redis Exporter로 Redis 메트릭 수집하기

도람·2025년 12월 8일
post-thumbnail

이번 포스팅에서는 Kubernetes 환경에서 Redis 메트릭을 Prometheus로 수집하는 방법을 정리한다.

Prometheus는 기본적으로 애플리케이션 내부 상태는 알 수 없기 때문에,
Redis 내부 정보를 가져오려면 Redis Exporter가 필요하다.

이번 실습에서는 다음을 구현한다:

  • Redis Deployment + Service
  • Redis Exporter Deployment + Service
  • Prometheus가 Redis Exporter를 자동으로 수집하도록 ServiceMonitor 생성

Redis 배포하기

먼저 Redis를 Kubernetes에 배포한다.
이번 실습에서는 monitoring 네임스페이스에 배포했다.

파일명: redis.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  namespace: monitoring
  labels:
    app: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - image: redis:7.0.4
        name: redis
        args:
        - --maxmemory 80mb
        ports:
        - containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:
  name: redis
  namespace: monitoring
  labels:
    app: redis
spec:
  type: ClusterIP
  ports:
  - name: redis
    port: 6379
    targetPort: 6379
  selector:
    app: redis

배포 명령어

kubectl apply -f redis.yaml

2. Redis Exporter 배포하기

Redis Exporter는 Redis 내부의 상태를 Prometheus 포맷으로 변환해준다.

핵심은 다음 2가지다:

  • Redis 주소: redis.monitoring.svc.cluster.local:6379
  • Exporter 포트: 9121

파일명: redis-exporter.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-exporter
  namespace: monitoring
  labels:
    app: redis-exporter
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis-exporter
  template:
    metadata:
      labels:
        app: redis-exporter
    spec:
      containers:
      - image: oliver006/redis_exporter:v1.43.0
        name: redis-exporter
        ports:
        - containerPort: 9121
        args:
        - "--redis.addr=redis.monitoring.svc.cluster.local:6379"
---
apiVersion: v1
kind: Service
metadata:
  name: redis-exporter
  namespace: monitoring
  labels:
    app: redis-exporter
spec:
  type: ClusterIP
  ports:
  - port: 9121
    targetPort: 9121
    name: metrics
  selector:
    app: redis-exporter
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: redis-exporter
  namespace: monitoring
  labels:
    release: kube-prom-stack
spec:
  selector:
    matchLabels:
      app: redis-exporter
  namespaceSelector:
    matchNames:
      - monitoring
  endpoints:
  - port: metrics
    interval: 15s

배포 명령어

kubectl apply -f redis-exporter.yaml


이렇게 두 yaml 파일을 배포해준다.

3. 정상 동작 확인

Redis / Exporter 파드 확인

kubectl get pods -n monitoring | grep redis

정상이라면 다음과 같은 상태가 나온다:

Prometheus Target 확인

Prometheus UI → Status → Targets

redis-exporter target이 UP이면 정상이다.

이렇게 redis 관련된 것이 up인 상태인 것을 확인할 수 있다.


4. 메트릭 조회 예시

Prometheus Graph에서 다음과 같은 Redis 메트릭을 조회할 수 있다:

  • redis_connected_clients
  • redis_commands_processed_total
  • redis_memory_used_bytes
  • redis_uptime_in_seconds

ex)

redis_memory_used_bytes


profile
정도를 걷는 엔지니어

0개의 댓글