DEV Community

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

Posted on • Updated on

 

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

Top comments (3)

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
 
nelsoncode 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!

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.