Prometheus_监控Redis

redis_exporter

redis_exporter监控redis的组件,可与redis不在同一台机器,能与redis通信即可

部署方式

  1. 通过relabel_configs来替换标签 实现一个redis_exporter实列 收集不同的redis信息
  2. 也可通过一个redis一个redis_exporter实列来实现,如果是集群模式的redis 配置一个节点的信息即可,exporter会自动收集整个集群的信息,下文介绍的为此种方式部署的

部署

  1. 在GitHub上下载对应系统的安装包,解压能看到有执行文件即可,如果编译安装 请下载对应的源码包。
    下载地址:https://github.com/oliver006/redis_exporter/releases/tag/v1.25.0

  2. 配置启动脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    [root@centos redis_exporter]# ls
    LICENSE README.md redis_exporter redis_exporter-v1.25.0.linux-amd64.tar.gz
    [root@centos redis_exporter]# cat /usr/lib/systemd/system/redis_exporter.service
    [Unit]
    Description=The redis exporter server
    After=syslog.target network.target

    [Service]
    Type=simple
    WorkingDirectory=/data/redis_exporter
    ExecStart=/data/redis_exporter/redis_exporter -redis.addr ip:port -redis.password 'password' -web.listen-address localhostip:9121
    KillMode=process

    [Install]
    WantedBy=multi-user.target
    [root@centos redis_exporter]# systemctl daemon-reload
    [root@centos redis_exporter]# systemctl start redis_exporter
    [root@centos redis_exporter]# systemctl enable redis_exporter
    _______________________________________________________________

    参数解释
    -redis.addr ip:port #redis的IP地址和端口
    -redis.password 'password' #redis的密码
    -web.listen-address localhostip:9121 #exporter本地监听地址

    #可通过前台执行启动命令 来检查链路
    /data/redis_exporter/redis_exporter -redis.addr ip:port -redis.password 'password' -web.listen-address localhostip:9121
    KillMode=process
    curl localhostip:9121
    #一个redis集群从其中一个节点收集信息即可,多个redis集群 可配置多个启动脚本 指定不同的redis信息
    #如果想使用自定义用户和对应的密码 需要redis是6.0版本以上,云redis低版本使用自定义用户名的与exporter不适配
    #可查看readme或者查看github上的手册
    https://github.com/oliver006/redis_exporter

prometheus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#添加Prometheus的redis收集任务
[root@OS ~]# tail -7 /etc/prometheus/prometheus.yml
#redis指标
- job_name: "prod_redis_exporter"
metrics_path: /metrics
file_sd_configs:
- refresh_interval: 30s
files:
- "/etc/prometheus/conf.d/prod/redis_node.yml
#添加收集的节点信息
#多个exporter的话 多个target即可
[root@OS ~]# cat /etc/prometheus/conf.d/prod/redis_node.yml
- targets:
- "链接IP:PORT"
labels:
instance: 标识IP
project: redisname
- targets:
- "链接IP:PORT"
labels:
instance: 标识IP
project: redisname

#添加redis相关的告警策略,下列只有内存使用率和出入流量告警,可自己定义规则实现告警
[root@OS ~]# tail -28 /etc/prometheus/rules.yml
#redis相关告警策略
- name: alert_redis
rules:
- alert: 监控告警-Redis-内存使用率
expr: (redis_memory_used_bytes{job="prod_redis_exporter"} / redis_memory_max_bytes)*100 > 90
for: 2m
labels:
serverity: critical
level: 严重
environment: ops
annotations:
summary: "{{$labels.project}} {{$labels.instance}}:{{$labels.project}} 内存使用率超过90%!"
description: "{{$labels.project}} {{$labels.instance}}:{{$labels.project}} 内存使用率超过90%!"
resolved: "{{$labels.project}} {{$labels.instance}}:{{$labels.project}} 内存使用率超过90%,已恢复!"
grafana_url: "http://grafana.a.com"

- alert: 监控告警-Redis-出入流量
expr: rate(redis_net_input_bytes_total{job="prod_redis_exporter"}[5m])/1024/1024 > 10 or rate(redis_net_output_bytes_total{job="prod_redis_exporter"}[5m])/1024/1024 > 10
for: 2m
labels:
serverity: critical
level: 严重
environment: ops
annotations:
summary: "{{$labels.project}} {{$labels.instance}}:{{$labels.project}} 流量持续2分钟超过10M!"
description: "{{$labels.project}} {{$labels.instance}}:{{$labels.project}} 流量持续2分钟超过10M!"
resolved: "{{$labels.project}} {{$labels.instance}}:{{$labels.project}} 流量持续2分钟超过10M!已恢复!"
grafana_url: "http://grafana.a.com"

grafana

  1. 选择合适的模板
    在grafana网站上找到对应的模板,这里我选择的是11823
    url:https://grafana.com/grafana/dashboards/11835
  2. 调整模板默认的过滤项:可以看到上面我们定义了project字段,需要添加字段的过滤

  3. 默认模板没有cpu的图表,添加一个

Prometheus_监控Redis
https://imwang77.github.io/2021/08/20/Prometheus_监控Redis/
作者
imwang77
发布于
2021年8月20日
更新于
2021年8月20日
许可协议