DEV Community

Cover image for How to monitor Redis with Prometheus and Grafana | Docker
Nelson Hernández
Nelson Hernández

Posted on • Edited on

8 4 1 1 1

How to monitor Redis with Prometheus and Grafana | Docker

For this example we will use Docker compose to be able to run all the services

  1. Docker Compose


version: "3.9"
services:
  grafana:
    image: grafana/grafana
    ports:
      - 3000:3000
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    ports:
      - 9090:9090
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
  redis:
    image: "bitnami/redis:latest"
    ports:
      - 6379:6379
    environment:
      - REDIS_REPLICATION_MODE=master
      - REDIS_PASSWORD=my_master_password

  redis-exporter:
    image: oliver006/redis_exporter
    ports:
      - 9121:9121
    restart: unless-stopped
    environment:
      REDIS_ADDR: "redis:6379"
      REDIS_USER: null
      REDIS_PASSWORD: my_master_password
    links:
      - redis
      - prometheus



Enter fullscreen mode Exit fullscreen mode

2.Prometheus File Settings (prometheus.yml)



global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
  - job_name: redis-exporter
    static_configs:
      - targets: ['redis-exporter:9121']



Enter fullscreen mode Exit fullscreen mode

3.Run Docker Compose



docker-compose up


Enter fullscreen mode Exit fullscreen mode

4.Check status of Prometheus and Redis Exporter



http://localhost:9090/targets


Enter fullscreen mode Exit fullscreen mode

Image description

5.Visit Grafana Dashboard

Default

User: admin
Password: admin



http://localhost:3000


Enter fullscreen mode Exit fullscreen mode

Image description

6.Add data source

Image description

Save and test

Image description

7.Import Redis Dashboard for Prometheus

For this we will use a Dashboard created by the community

Redis Dashboard for Prometheus

https://grafana.com/grafana/dashboards/763

8.Import JSON or code

Image description

Import JSON of code

Code: 763

JSON:
https://grafana.com/api/dashboards/763/revisions/3/download

9.Dashboard

Image description

Code of example (GitHub Gist)
https://gist.github.com/nelsoncode019/722727fdba11d846e39dc99f8064f7fe

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (5)

Collapse
 
ianvaughan profile image
Ian Vaughan

Step 6 I get:
Error reading Prometheus: Post "localhost:9090/api/v1/query": dial tcp 127.0.0.1:9090: connect: connection refused

Collapse
 
nelsonmendezz_ profile image
Nelson Hernández

you must write prometheus:9090
to access the Internal Docker network

Collapse
 
ianvaughan profile image
Ian Vaughan

Ah I missed that, thanks a lot!

Collapse
 
railsstudent profile image
Connie Leung

Very useful. Just did a POC based on this blog post.
Now, I need to pitch to my cloud engineer lead to implement it.

Collapse
 
railsstudent profile image
Connie Leung

Found a mistake in docker-compose.yaml. It should be redis_exporter:

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

Retry later