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
评论