prometheus监控redis

SRE技术栈  ·  2020-12-05

0、redis监控原理

redis本身没有提供metric, prometheus监控redis是通过redis_exporter来实现的.

一个redis_exporter负责所有采集所有的redis数据(当然也可以部署多个exporter).

当redis密码不同时,必须要部署多个exporter, 并配置好exporter使其使用对应的redis密码;

目前grafana的redis dashboard对多个exporter的支持不完善, 如果有多密码的情况,建议还是改成一致.

这里不深入讨论多个exporter.

关于多个exporter的请关注官方https://github.com/oliver006/redis_exporter#prometheus-configuration-to-scrape-multiple-redis-hosts

1、准备工作-搭建redis

我们搭建2个redis: 6379和6380
# cat docker-compose.yaml
version: '3.7'
services:
  redis6379:
    image: redis:3.0.5
    restart: always
    container_name: redis6379
    command: /usr/local/bin/redis-server /usr/local/etc/redis/redis.conf
    ports:
      - 6379:6379
      
  redis6380:
    image: redis:3.0.5
    restart: always
    container_name: redis6380
    command: /usr/local/bin/redis-server /usr/local/etc/redis/redis.conf
    ports:
      - 6380:6379

# docker-compose up -d   # 启动

2、部署redis-exporter

如果redis有密码, entrypoint需要开启-redis.password选项.

多个redis时,且密码不一样时, 这里需要部署多个redis-exporter

# cat docker-compose.yaml
version: '3.7'
services:
  redis-exporter:
    image: oliver006/redis_exporter
    container_name: redis_exporter
    entrypoint: ["/redis_exporter","-debug"]
    # redis有密码时
    # entrypoint: ["/redis_exporter","-debug", "-redis.user admin", "-redis.password xxxx"]
    hostname: redis_exporter
    restart: always
    ports:
        - "9121:9121"

# docker-compose up -d   # 启动

3、prometheus配置文件添加上redis

使用自动发现sd_config, 以后有新的redis要监控,需要手动添加进来

由于本篇文章主要是讲解如何配置prometheus监控redis的,所以就不再这里继续解读配置文件.

关于配置文件的详细解读, 请参考我的另一篇文章, 墙裂建议阅读,或许可以解释你的很多问题.

# 自动发现的配置
# vim /etc/prometheus/redis_sd_config.yaml 
- targets:
  - redis://redis6379:6379   #也可以使用ip
  - redis://redis6380:6379

// 或者json格式
# vim targets-redis-instances.json
[
  {
    "targets": [ "redis://redis6379:6379", "redis://redis6380:6379"],
    "labels": { }
  }
]
# vim /etc/prometheus/prometheus.yml
...
scrape_configs:

  ## 抓取exporter本身的数据
  - job_name: 'redis_exporter'
    static_configs:
      - targets:
          # http://redis_exporter:9121/metrics # prometheus服务上测试该地址
        - redis_exporter:9121
        # - redis_exporter2:9121  #配置多个exporter

# 多个exporter时,需要配置多个不同的job
- job_name: 'redis_exporter_targets'
    file_sd_configs:
      - files:
        - /etc/prometheus/redis_sd_config.yaml
    metrics_path: /scrape
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target  # redis://redis6379:6379  # target=1.2.3.4

      - source_labels: [__param_target]  # redis://redis6379:6379  # target=1.2.3.4  instance=1.2.3.4
        target_label: instance

      - target_label: __address__
        replacement: redis_exporter:9121   #这里是exporter的地址
        # http://redis_exporter:9121/scrape?target=redis://redis6379:6379
...

grafana上导入redis dashboard

Redis Dashboard ID: 11835

 
评论
Glab. All Rights Reserved. Theme Jasmine by Kent Liao.