Redis is a popular open-source in-memory database which can also be used as a message broker. It can be scaled (lineraly) to handle large volumes and throughputs of an order of 50 million ops per second. Redis can be considered as a key-value store, but the uniqueness in its design approach is that various data structures like List, Set, ZSET, and Hyperloglog among others. Monitoring REDIS is a key requirement in production environments. In this blog, we outline the basic steps to monitor a REDIS cluster using Prometheus REDIS Metric Exporter, Prometheus and Grafana. Around 100 different metrics are generated by REDIS instance. A detailed list of these can be found here.

The diagram below shows a high-level archicture of the components

Installing Prometheus


Exporter Configuration

Prometheus REDIS exporter can be downloaded from https://github.com/oliver006/redis_exporter/releases. Optionally you can clone the repository https://github.com/oliver006/redis_exporter/ and follow the build operations mentioned in the README file. Once downloaded you can run the binary

/redis_exporter –redis.addr= [IP ADDRESS OF THE REDIS HOST] –redis.user [USERNAME] –redis.password [REDIS PASSWORD]

Other command line options can be seen within the README file of the redis_exporter. Once the redis_exporter starts and connects to the REDIS instance, it can capture the metrics being exposed by the REDIS instance. Thereafter, we can configure prometheus to scrape values from the redis_exporter by specifying the configurations in prometheus.yml as shown below:

scrape_configs: ## config for the multiple Redis targets that the exporter will scrape – job_name: ‘redis_exporter_targets’ static_configs: – targets: – redis://first-redis-host:6379 – redis://second-redis-host:6379 – redis://second-redis-host:6380 – redis://second-redis-host:6381 metrics_path: /scrape relabel_configs: – source_labels: [address] target_label: param_target – source_labels: [param_target] target_label: instance – target_label: address replacement: [REDIS-EXPORTER-HOSTNAME]:9121

## config for scraping the exporter itself
- job_name: 'redis_exporter'
  static_configs:
    - targets:
      - <<REDIS-EXPORTER-HOSTNAME>>:9121

The Redis instances are listed under targets, the Redis exporter hostname is configured via the last relabel_config rule.

Grafana Dashboards

There are various dashboards available out of the box from the Grafana site [hhttps://grafana.com/grafana/dashboards/?search=REDIS], select the one which suits your monitoring requirements and copy its dashboard ID.

Inside Grafana you can import the dashboard using Import option as seen in the figures below:

Once imported you can view the dashboard as shown in figure below and start monitoring your REDIS installation.