【prometheus+Grafana篇】基于Prometheus+Grafana实现Redis数据库的监控与可视化

💫《博主主页》:

🔎 CSDN主页

🔎 IF Club社区主页

**🔥《擅长领域》:**擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(MongoDB)有了解

💖如果觉得文章对你有所帮助,欢迎点赞收藏加关注💖

【周末充电⚡️+摸鱼🐟】刚研究完MySQL的行格式,技术人的周末果然离不开学习与放松的完美平衡!今天这篇文章咱们继续分享------使用Prometheus+Grafana打造专业的Redis监控系统,不仅能实时采集关键指标,还能配置炫酷可视化和智能告警,让数据库健康状态一目了然!

文中会手把手部署redis_exporter、配置Prometheus抓取数据,再通过Grafana设计直观的监控面板,也会分享几个超实用的Redis告警规则,帮各位提前规避线上风险。话不多说,直接上操作,让你的Redis享受24小时的监护!🚀

特别说明💥:

📌 开源仪表盘引用

  • **本文采用的Redis数据库监控仪表盘直接使用了Grafana官网开源项目(Dashboard ID:**763 ),非常感谢原作者(oliver006)的无私分享。关于Grafana的所有配置步骤均基于该开源仪表盘并验证通过,各位可一键导入快速搭建专业级的可视化监控。

⚡ 原创告警规则实现

  • 关于告警部分为博主独立开发完成,针对Redis数据库实现了如下告警:

    • ✅ Redis 实例不可用

    • ✅ Redis 内存使用率过高

🔗 Prometheus+Grafana监控Redis全流程

prometheus+Grafana全系列文章**(实时更新🔥):**

|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | 文章 |
| 1 | 【prometheus+Grafana篇】Prometheus与Grafana:深入了解监控架构与数据可视化分析平台-CSDN博客 |
| 2 | 【prometheus+Grafana篇】从零开始:Linux 7.6 上二进制安装 Prometheus、Grafana 和 Node Exporter_grafana二进制部署-CSDN博客 |
| 3 | 【prometheus+Grafana篇】Prometheus告警规则参数全解析 + Alertmanager实现多平台告警(含电子邮件/企业微信群/飞书群/钉钉群接受方式)_grafana做飞书机器人报警-CSDN博客 |
| 4 | 【prometheus+Grafana篇】基于Prometheus+Grafana实现Linux操作系统的监控与可视化-CSDN博客 |
| 5 | 【prometheus+Grafana篇】基于Prometheus+Grafana实现windows操作系统的监控与可视化_grafana 监控 windows-CSDN博客 |
| 6 | 【prometheus+Grafana篇】基于Prometheus+Grafana实现Oracle数据库的监控与可视化-CSDN博客 |
| 7 | 【prometheus+Grafana篇】基于Prometheus+Grafana实现MySQL数据库的监控与可视化-CSDN博客 |
| 8 | 【prometheus+Grafana篇】基于Prometheus+Grafana实现MongoDB数据库的监控与可视化-CSDN博客 |
| 9 | 【prometheus+Grafana篇】基于Prometheus+Grafana实现Redis数据库的监控与可视化-CSDN博客 |


目录

[一、在Redis 6379实例上的操作](#一、在Redis 6379实例上的操作)

二、安装redis_exporter(redis_exporter:是prometheus的一个插件,抓取和收集redis数据库的各种运行指标用于分析。redis_exporter插件是GitHub开源组织提供的,通过GitHub官网下载redis_exporter)

[1)下载redis_exporter安装包,选择download,然后点击"Exporters and integrations",选择redis exporter](#1)下载redis_exporter安装包,选择download,然后点击“Exporters and integrations”,选择redis exporter)

2)跳转到了gitHub,点击redis_exporter的版本集,选择最新的redis_exporter下载

3)目前redis_exporter最新版本为1.67.0

4)解压二进制redis_exporter包

5)移动并重命名redis_exporter解压出来的目录

6)创建prometheus用户

7)赋权

8)写入linux启动服务项

9)登录redis_exporter界面管理,默认端口为9121

[三、将当前redis 6379实例加入到prometheus监控,并通过Grafana展示](#三、将当前redis 6379实例加入到prometheus监控,并通过Grafana展示)

1)将reids_exporter的信息加入到prometheus监控的配置文件prometheus.yml中

2)配置告警规则文件

3)检查配置文件

4)prometheus.yml文件添加了信息,所以重启prometheus进程或者重新加载配置文件(二选一)

5)在prometheus查看是否可以看到监控信息

6)登录Grafana界面管理,将当前主机的监控信息做展示

[一、下载一个仪表盘:Grafana官网"http://www.grafana.com"---Dashboard templates,然后选择一个下载量高的自己喜欢的redis_exporter(redis监控)](#一、下载一个仪表盘:Grafana官网“http://www.grafana.com”—Dashboard templates,然后选择一个下载量高的自己喜欢的redis_exporter(redis监控))

[二、将仪表盘添加到Grafana上:Dashboards---New---Import---点击"Upload dashboard JSON file"](#二、将仪表盘添加到Grafana上:Dashboards—New—Import—点击“Upload dashboard JSON file”)

三、仪表盘展示:Dashboards---查看到已经定义好的仪表盘,并且数据源是prometheus监控,点击进去


监控Redis信息如下:

|---------|------------|--------|-------------------|----------------------------|
| 主机名 | IP地址 | 配置 | 系统 | 描述 |
| Redis | 10.2.1.117 | 4C 8G | Red Hat Linux 7.9 | 安装redis_exporter对这台服务器进行监控 |

**redis_exporter:**默认端口9121。抓取和收集Redis数据库的各种运行指标用于分析

一、在Redis 6379实例上的操作

Redis 3.x/ 4.x /5.x , 没有内置的用户权限管理功能 ,也就是没有数据库用户这个概念。 在 Redis 6.x 或更高版本中 支持了用户权限管理功能,才能为数据库创建用户

二、安装redis_exporter (redis_exporter:是p rometheus的一个插件 ,抓取和收集redis数据库的各种运行指标用于分析。 redis_exporter插件是GitHub开源组织提供的,通过GitHub官网下载redis_exporter

1)下载redis_exporter安装包,选择download,然后点击"Exporters and integrations ",选择redis exporter



2)跳转到了gitHub,点击redis_exporter的版本集,选择最新的redis_exporter下载

PS: 也可以直接在gitHub官网下载

一、通过gitHub(官网地址: https://github.com/)下载redis_exporter安装包,在gitHub搜索"redis_exporter"。因为是开源,所以大家都是有时间才会开发,所以选择一个最近更新的

二、点击redis_exporter的版本集,选择最新的redis_exporter下载

3)目前redis_exporter最新版本为1.67.0

4)解压二进制redis_exporter包

sql 复制代码
[root@Redis ~]# tar -zxvf redis_exporter-v1.65.0.linux-amd64.tar.gz

5)移动并重命名redis_exporter解压出来的目录

sql 复制代码
[root@Redis ~]# mkdir -p /opt/prometheus
[root@Redis ~]# mv redis_exporter-v1.65.0.linux-amd64 /opt/prometheus/
[root@Redis ~]# mv /opt/prometheus/redis_exporter-v1.65.0.linux-amd64 /opt/prometheus/redis_exporter

6)创建prometheus用户

sql 复制代码
[root@Redis ~]# groupadd prometheus
[root@Redis ~]# useradd -g prometheus -M -s /usr/sbin/nologin prometheus     ---创建一个名为prometheus的系统账号,该账号没有家目录并且不能登录Shell。这种设置适用于需要运行服务或任务而不需要用户交互的情况。
-M:不为用户创建家目录。对于系统服务账号来说,通常不需要家目录,因此使用 -M 可以跳过家目录的创建步骤。
-s /usr/sbin/nologin:指定用户登录时使用的Shell。将用户prometheus的登录Shell设置为/usr/sbin/nologin。nologin Shell的作用是阻止用户登录系统,但允许该用户拥有有效的系统账号。这通常用于服务账号,因为它们不需要交互式Shell访问,仅用于执行特定服务或任务。

[root@Redis ~]# passwd prometheus
[root@Redis ~]# id prometheus

7)赋权

sql 复制代码
[root@Redis ~]# chown -R prometheus:prometheus /opt/prometheus/redis_exporter

8)写入linux启动服务项

sql 复制代码
[root@Redis ~]# cd /usr/lib/systemd/system
[root@Redis ~]# vi redis6379_exporter.service
[Unit]
Description=redis_exporter
After=network.target

[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=on-failure
ExecStart=/opt/prometheus/redis_exporter/redis_exporter -redis.addr "redis://10.2.1.117:6379" -redis.password eXql3MDpww --web.listen-address=0.0.0.0:9121

[Install]
WantedBy=multi-user.target
[root@Redis ~]# systemctl daemon-reload
[root@Redis ~]# systemctl start redis6379_exporter.service
[root@Redis ~]# systemctl enable redis6379_exporter.service
[root@Redis ~]# systemctl status redis6379_exporter.service

**###-redis.addr:**要抓取的Redis实例的地址(默认"redis://localhost:6379")

**###-redis.password:**指定连接redis的密码。在 Redis 3.x/4.x/5.x中,没有内置的用户权限管理功能,也就是没有数据库用户这个概念。在 Redis 6.x 或更高版本中支持了用户权限管理功能,才能为数据库创建用户

**###--web.listen-address=<address>:<port>:**指定服务端口。Redis的抓取默认通过9121端口访问redis_exporter管理界面,可以修改成其他端口用于访问redis_exporter管理界面(如果没有修改端口的需求可以不设置这个参数)。此参数只能在redis_exporter命令启动时指定,不可以在配置文件prometheus.yml中指定。如果服务器上有多个实例,比如还有6380实例,那么需要再写一个linux启动项,并且通过-redis.addr参数指定redis数据源

9)登录redis _exporter 界面管理,默认端口为9121

http://10.2.1.117:9121/metrics

三、将当前redis 6379实例加入到prometheus监控,并通过Grafana展示

注意: 如下操作是在安装了prometheus和Grafana的主机上进行操作

1)将reids _exporter 的信息加入到prometheus监控的配置文件prometheus.yml中

sql 复制代码
[root@prometheus ~]# vi /opt/prometheus/prometheus.yml     
在scrape_configs下面新增如下内容:

# redis_exporter配置              
  - job_name: "Redis监控"              ###job_name 用来唯一标识一个监控任务。在同一个 prometheus.yml 文件中,不同的 scrape_config可以有不同的job_name,以便 Prometheus 能够区分和管理不同的监控目标和配置,用来将不同的监控目标分组。单位为监控redis数据库设置一个独立的job_name
    scrape_interval: 15s               ###指定这个job_name每隔多久从每个目标(如 Exporter、应用端点)拉取一次指标数据。优先级:会覆盖全局的 global:scrape_interval(如果存在)。
    file_sd_configs:
      - files:
        - /data/prometheus/conf.d/redis_targets.json            # redis需要监控的实例都单独写在了redis_targets.json文件中,是为了避免prometheus.yml内容过多,看起来更简洁
  
[root@prometheus ~]# vi /data/prometheus/conf.d/redis_targets.json        ###因为使用的是16974 json模版,16974模版没有定义太多的选项,所以只定义目标(targets)、实例信息(instance)即可
[
  {
    "targets": [ "10.2.1.117:9121" ],
    "labels": { "instance": "Redis数据库(IP:10.2.1.117,端口:6379)" }
  }
]

2)配置告警规则文件

除了如下告警规则之外,还需要单独配置一个Targets目标不可达(up)的相关规则,因为up 是一个布尔值指标,表示 Prometheus 是否能够成功地 scrape(抓取)到指定的目标(targets)数据,用于判断目标node-exporter相关进程是否在目标主机存活。关于up的规则文件参考:【prometheus+Grafana篇】从零开始:Linux 7.6 上二进制安装 Prometheus、Grafana 和 Node Exporter_grafana二进制安装-CSDN博客

sql 复制代码
[root@prometheus ~]# cd /opt/prometheus/rules/    ###在prometheus.yml文件中定义了告警规则文件rule_files参数
[root@prometheus rules]# vi redis_alerts.yml 

3)检查配置文件

sql 复制代码
[root@prometheus ~]# cd /opt/prometheus/
[root@prometheus ~]# ./promtool check config prometheus.yml      ###用于检查 Prometheus 配置文件(prometheus.yml)的语法和格式是否正确。

执行这条命令会执行以下操作:

  1. 验证配置文件的语法:检查 prometheus.yml 文件是否符合 Prometheus 配置格式规范。
  2. 检测潜在的错误或警告:如果配置文件中存在拼写错误、格式问题、无效的配置项等问题,它会提供相关的错误信息或警告。比如告警规则写的不对,就会有提示
  3. 输出有用的诊断信息:如果配置文件存在问题,promtool 会输出详细的错误信息。

4)prometheus.yml文件添加了信息,所以重启prometheus进程或者重新加载配置文件(二选一)

#重载:前提是在prometheus.service启动服务项中加了--web.enable-lifecycle参数: --web.enable-lifecycle:###启用Prometheus的生命周期接口,允许通过HTTP请求来动态重新加载配置等操作。 这对于在运行时更新配置或执行其他管理操作非常有用,当修改了prometheus的配置后,可以通过curl命令来重新加载配置文件,而不需要重启prometheus (推荐方式)

sql 复制代码
[root@prometheus ~]# curl -X POST http://localhost:9090/-/reload

#重启

sql 复制代码
[root@prometheus ~]# systemctl restart prometheus.service

5)在prometheus查看是否可以看到监控信息

网址:http://110.120.100.21:9090

菜单栏:Status---Targets

6)登录Grafana界面管理,将当前主机的监控信息做展示

地址:http://110.120.100.21:3000

默认用户:admin

默认密码:admin

一、下载一个仪表盘:Grafana官网"http://www.grafana.com"---Dashboard templates,然后选择一个下载量高的自己喜欢的 redis _exporter (redis监控)

注意: 不需要再增加数据源了。因为在第一次搭建prometheus+Grafana的时候就已经加好了,在添加数据源时,有个配置项是Connection,这里添加的是prometheus的地址,指的是prometheus监控服务器的地址,而不是node-exporter的地址

以763为例,涵盖Redis多个维度的指标项

二、将仪表盘添加到Grafana上: Dashboards---New---Import---点击"Upload dashboard JSON file"

Name: 定义名称,最好定义为主机ip加用途

Prometheus: 选择prometheus源

....

然后import

三、仪表盘展示: Dashboards---查看到已经定义好的仪表盘,并且数据源是prometheus监控,点击进去

**仪表盘Name:**大族机房Redis数据库监控

数据源Name: prometheus监控

instance: 这里其实就是当时已经在配置prometheus.yml时,定义的instance,也就是说Grafana会自动识别到


部署完成,欢迎取用。下期将带来其他数据库的监控实战,敬请期待!持续学习,共同进步,我们下次见!🚀

相关推荐
一只自律的鸡42 分钟前
【MySQL】第二章 基本的SELECT语句
数据库·mysql
liliangcsdn2 小时前
如何使用python创建和维护sqlite3数据库
数据库·sqlite
TDengine (老段)8 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)8 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
RoboWizard8 小时前
扩容刚需 金士顿新款Canvas Plus存储卡
java·spring·缓存·电脑·金士顿
安当加密9 小时前
云原生时代的数据库字段加密:在微服务与 Kubernetes 中实现合规与敏捷的统一
数据库·微服务·云原生
爱喝白开水a9 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
想ai抽9 小时前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
武子康9 小时前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql
longgyy9 小时前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎