news 2026/5/13 3:52:42

手把手教你部署 Redis+redis_exporter+Grafana,实现 Prometheus 监控可视化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你部署 Redis+redis_exporter+Grafana,实现 Prometheus 监控可视化

1、部署redis数据库

安装gcc、gcc-c++等依赖,否则会导致make编译失败:

[root@redisserver ~]# yum install -y gcc gcc-c++ make

安装完成后,可通过gcc --version查看版本,确认依赖安装成功。

这里仍以192.168.38.148主机(almalinux9)为例,从https://redis.io/download下载redis最新版本,然后进行编译安装,过程如下:

[root@redisserver ~]# tar zxvf redis-7.0.11.tar.gz [root@redisserver ~]# cd redis-7.0.11 [root@redisserver redis-7.0.11]# make && make install [root@redisserver redis-7.0.11]# cp redis.conf /etc/

安装完成后,启动数据库即可:

[root@redisserver ~]# sed -i 's#daemonize no#daemonize yes#g' /etc/redis.conf [root@redisserver ~]# redis-server /etc/redis.conf

上面第一个操作命令是修改redis配置文件,将redis-server放在后台运行。第二个命令是启动redis服务。

验证启动成功redis-cli ping

创建systemd服务文件

[root@redisserver ~]# vim /usr/lib/systemd/system/redis.service # 写入以下内容 [Unit] Description=Redis Server After=network.target [Service] Type=simple ExecStart=/usr/local/bin/redis-server /etc/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=on-failure [Install] WantedBy=multi-user.target # 重载服务并设置开机自启 [root@redisserver ~]# systemctl daemon-reload [root@redisserver ~]# systemctl enable redis [root@redisserver ~]# systemctl restart redis

2、监控redis需要关注的几个重要的指标

  • 延迟

延迟数据对使用 Redis 的应用程序至关重要,所以要重点监控。

  • 流量

Redis 每秒处理多少请求,每秒接收多少字节、返回多少字节,在 Redis 里都内置了相关指标,通过 redis-cli 连上 Redis,执行 info all 命令可以看到很多指标。

  • 错误

客户端操作 Redis 返回了错误比较常见,要关注,另外需要关注客户端的最大连接数量。

  • 饱和度

Redis 重度使用内存,内存的使用率、碎片率,以及因为内存不够用而清理的 Key 数量,都是需要重点关注的。可以通过 info memory 命令查看这几个关键指标。

# 开启自动内存碎片整理(总开关) activedefrag yes # 当碎片达到 100mb 时,开启内存碎片整理 active-defrag-ignore-bytes 100mb # 当碎片超过 10% 时,开启内存碎片整理 active-defrag-threshold-lower 10 # 内存碎片超过 100%,则尽最大努力整理 active-defrag-threshold-upper 100 # 内存自动整理占用资源最小百分比 active-defrag-cycle-min 25 # 内存自动整理占用资源最大百分比 active-defrag-cycle-max 75

重启 Redis 生效:

pkill redis-server redis-server /etc/redis.conf

3、获取并部署redis_exporter

redis_exporter并不是prometheus官方提供的,但官方推荐了第三方开发的exporter,搭建可以从https://github.com/oliver006/redis_exporter获取redis_exporter。

从这个地址下载最新版本的redis_exporter,由于安装包是二进制形式的,所以下载后,解压即可使用。

[root@redisserver ~]# tar zxvf redis_exporter-v1.50.0.linux-amd64.tar.gz -C /usr/local [root@redisserver ~]# cd /usr/local [root@redisserver local]# mv redis_exporter-v1.50.0.linux-amd64 redis_exporter

这里将redis_exporter放到了/usr/local/redis_exporter目录下。

4、启动redis_exporter

执行如下命令,即可启动redis_exporter:

[root@redisserver data]# nohup /usr/local/redis_exporter/redis_exporter -redis.addr 127.0.0.1:6379 -web.listen-address :9121 &

几个参数含义如下:

  • -redis.addr: 指定redis服务的ip地址和端口号
  • -web.listen-address: 指定当前redis-exporter启动使用的端口信息
  • -redis.password: redis服务若是有密码的话,可用此参数指定redis的密码

可以将启动redis_exporter的服务写个脚本,内容如下:

[root@redisserver local]# vim /usr/lib/systemd/system/redis_exporter.service [Unit] Description=redis_exporter After=network.target [Service] Type=simple User=root ExecStart=/usr/local/redis_exporter/redis_exporter -redis.addr 127.0.0.1:6379 -web.listen-address :9121 Restart=on-failure [Install] WantedBy=multi-user.target

最后,重启redis_exporter服务即可:

[root@redisserver ~]# systemctl daemon-reload [root@redisserver ~]# systemctl start redis_exporter

redis_exporter服务启动之后,就可以通过http://ip:9121/metrics 访问到redis_exporter收集到的redis状态数据。

redis监控指标含义:

redis_active_defrag_running:活动碎片整理是否运行[lw] redis_allocator_active_bytes:分配器活动••字节[lw] redis_active_allocated_bytes:活动分配的字节[lw] redis_assocator_frag_bytes:关联碎片字节[lw] redis_allocator_frag_ratio:分配器碎片比率[lw] redis_allocator_resident_bytes:分配器常驻字节[lw] redis_allocator_rss_bytes:分配器RSS字节[lw] redis_allocator_rss_ratio:分配器RSS比率[lw] redis_aof_current_rewrite_duration_sec:aof当前重写持续时间sec[lw] redis_aof_enabled:是否启用aof[lw] redis_aof_last_bgrewrite_status:最近一次AOF重写操作是否执行成功[lw] redis_aof_last_cow_size_bytes:在执行AOF重写期间,分配给COW的大小[lw] redis_aof_last_rewrite_duration_sec:最近一次AOF重写操作消耗的时间[lw] redis_aof_last_write_status:aof上次写入状态[lw] redis_aof_rewrite_in_progress:是否在进行AOF的重写操作[lw] redis_aof_rewrite_scheduled:是否有AOF操作等待执行[lw] redis_blocked_clients:被阻止的客户[lw] redis_client_recent_max_input_buffer_bytes:客户端最近最大输入缓冲区字节[lw] redis_client_recent_max_output_buffer_bytes:客户端最近最大输出缓冲区字节[lw] redis_cluster_enabled:是否启用集群[lw] redis_commands_duration_seconds_total:命令持续时间总秒数[lw] redis_commands_processed_total:命令处理总数[lw] redis_commands_total:命令总数[lw] redis_config_maxclients:配置最大客户端[lw] redis_config_maxmemory:配置最大内存[lw] redis_connected_clients:连接的客户[lw] redis_connected_slave_lag_seconds:连接的从节点延迟秒[lw] redis_connected_slave_offset_bytes:连接的从节点偏移字节[lw] redis_connected_slaves:连接的从节点[lw] redis_connections_received_total:收到的连接总数[lw] redis_cpu_sys_children_seconds_total:由后台进程消耗的系统CPU[lw] redis_cpu_sys_seconds_total:由Redis服务器消耗的用户CPU[lw] redis_cpu_user_children_seconds_total:由后台进程消耗的用户CPU[lw] redis_cpu_user_seconds_total:由Redis服务消耗的用户CPU[lw] redis_db_avg_ttl_seconds:db平均ttl秒[lw] redis_db_keys:数据库key的数量[lw] redis_db_keys_expiring:即将过期的key[lw] redis_defrag_hits:碎片整理命中[lw] redis_defrag_key_hits:碎片整理命中key[lw] redis_defrag_key_misses:碎片整理未命中key[lw] redis_evicted_keys_total:被驱逐的key总数[lw] redis_expired_keys_total:过期key总数[lw] redis_expired_stale_percentage:过期陈旧key占百分比[lw] redis_expired_time_cap_reached_total:已达到总时间上限[lw] redis_exporter_build_infor:redis_exporter信息[lw] redis_exporter_last_scrape_connect_time_seconds:redis_exporter最后一次采集时间[lw] redis_exporter_last_scrape_duration_seconds:redis_exporter次抓取持续时间秒[lw] redis_exporter_last_scrape_error:redis_exporter次抓取错误[lw] redis_exporter_scrape_duration_seconds_count:redis_exporter采集续时间秒数[lw] redis_exporter_scrape_duration_seconds_sum:redis_exporter持续时间秒总和[lw] redis_exporter_scrapes_total:redis_exporter抓取总数[lw] redis_instance_info:实例信息[lw] redis_keyspace_hits_total:键空间命中总数[lw] redis_keyspace_misses_total:键空间未命中总数[lw] redis_last_key_groups_scrape_duration_milliseconds:最后一个键组抓取持续时间毫秒[lw] redis_last_slow_execution_duration_seconds:最后一个慢执行持续时间秒[lw] redis_latest_fork_seconds:最新fork时间[lw] redis_lazyfree_pending_objects:惰性删除或延迟释放的对象[lw] redis_loading_dump_file:加载转储文件[lw] redis_master_last_io_seconds_ago:master最后io过去时间[lw] redis_master_repl_offset:主节点累加偏移量(判断主从是否同步)[lw] redis_master_sync_in_progress:正在进行主同步[lw] redis_mem_clients_normal:[lw] redis_mem_clients_slaves:[lw] redis_mem_fragmentation_bytes:内存碎片字节[lw] redis_mem_fragmentation_ratio:内存碎片率[lw] redis_mem_not_counted_for_eviction_bytes:内存不计入驱逐的字节数[lw] redis_memory_max_bytes:内存最大字节[lw] redis_memory_used_lua_bytes:lua脚本使用内存字节数[lw] redis_memory_used_overhead_bytes:维护数据集的内部机制所需的内存开销[lw] redis_memory_used_peak_bytes:内存使用峰值[lw] redis_memory_used_rss_bytes:rss占用内存的字节数[lw] redis_memory_used_scripts_bytes:脚本占用内存的字节数[lw] redis_memory_used_startup_bytes:启动占用内存的字节数[lw] redis_migrate_cached_sockets_total:[lw] redis_net_input_bytes_total:网络input总数[lw] redis_net_output_bytes_total:网络output总数[lw] reids_process_id:进程号[lw] redis_pubsub_channels:发布订阅频道[lw] redis_pubsub_patterns:发布订阅模式[lw] redis_rdb_bgsave_in_progress:[lw] redis_rdb_changes_since_last_save:自上次保存以来的rdb更改[lw] redis_rdb_current_bgsave_duration_sec:rdb当前bgsave持续时间[lw] redis_rdb_last_bgsave_duration_sec:rdb上次bgsave持续时间[lw] redis_rdb_last_bgsave_status:rdb上次bgsave状态[lw] redis_rdb_last_cow_size_bytes:rdb上次cow的大小[lw] redis_rdb_last_save_timestamp_seconds:rdb最后保存时间戳[lw] redis_rejected_connections_total:拒绝的连接总数[lw] redis_repl_backlog_first_byte_offset:复制起始偏移量[lw] redis_repl_backlog_history_bytes:repl_backlog历史数据大小[lw] redis_repl_backlog_is_active:repl_backlog是否开启[lw] redis_replica_partial_resync_accepted:[lw] redis_replica_partial_resync_denied:[lw] redis_replica_resyncs_full:[lw] redis_replication_backlog_bytes:[lw] redis_second_repl_offset:[lw] redis_slave_expires_tracked_keys:[lw] redis_slave_info:从节点信息[lw] redis_slave_priority:从节点优先级[lw] redis_slave_repl_offset:从节点累加偏移量(判断主从是否同步)[lw] redis_slowlog_last_id:慢查询日志最后一个的id[lw] redis_slowlog_length:慢查询日志长度[lw] redis_start_time_seconds:开始时间秒[lw] redis_target_scrape_request_errors_total:[lw] redis_up:运行时间[lw] redis_uptime_in_seconds:正常运行时间[lw]

别忘记了,还要在Prometheus server上添加redis 这个监控节点,实现数据对接到Prometheus 。

5、在grafana上出图展示redis数据

编辑Prometheus配置文件,默认配置文件路径为/usr/local/prometheus/prometheus.yml,编辑该文件:

[root@redisserver ~]# vim /usr/local/prometheus/prometheus.yml

scrape_configs节点下,添加Redis监控任务,完整配置示例如下:

global: scrape_interval: 15s # 全局抓取间隔,每15秒抓取一次指标 evaluation_interval: 15s # 全局评估间隔 rule_files: # - "first_rules.yml" # - "second_rules.yml" scrape_configs: # 监控Prometheus自身 - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] # 新增Redis监控任务,job_name自定义(建议为redis) - job_name: 'redis' static_configs: # 目标地址:redis_exporter的地址和端口(192.168.38.148:9121) - targets: ['192.168.38.148:9121'] scrape_interval: 10s # 单独设置Redis指标抓取间隔,10秒一次,更及时 scrape_timeout: 5s # 抓取超时时间,避免阻塞

重启Prometheus生效

[root@redisserver ~]# systemctl restart prometheus

验证Prometheus对接成功

在Prometheus查询框中输入核心指标(如redis_connected_clients),查看指标数据是否正常采集。

6、在grafana上出图展示redis数据

从https://grafana.com/grafana/dashboards/进入模板详情页,复制模板ID(如14091),或下载JSON模板文件,导入到grafana即可。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 3:50:41

3步掌握透明悬浮浏览器:终极多任务效率提升指南

3步掌握透明悬浮浏览器:终极多任务效率提升指南 【免费下载链接】glass-browser A floating, always-on-top, transparent browser for Windows. 项目地址: https://gitcode.com/gh_mirrors/gl/glass-browser 你是否厌倦了在多个窗口间频繁切换?是…

作者头像 李华
网站建设 2026/5/13 3:44:04

第五:BurpSuite功能使用-BurpSuite·代理功能

一.代理:传递信息的角色,可以篡改、重复发送请求等操作 1.Proxy-代理模块2.连接手机抓包教程:https://www.jianshu.com/p/ce6aa44c9d2f3.设置监听器规则-Option二.截断-Intercept 1.功能:拦截浏览器和服务器之间的网络报文2.后续行…

作者头像 李华
网站建设 2026/5/13 3:42:07

大模型AI学习资料免费分享,抓住程序员高薪风口,速收藏!

大模型AI学习资料免费分享,抓住程序员高薪风口,速收藏! 随着大模型技术的快速发展,大模型算法工程师成为技术圈的热门岗位,薪资待遇远超传统技术岗位。本文介绍了如何学习大模型AI,包括学习路线、书籍文档、…

作者头像 李华
网站建设 2026/5/13 3:40:43

基于Rust构建AI智能体平台:架构设计与工程实践

1. 从零到一:构建你自己的AI智能体平台最近几年,大语言模型(LLM)的爆发式发展,让“智能体”(Agent)从一个学术概念,迅速变成了提升工作效率的利器。你可能用过一些现成的AI工具&…

作者头像 李华
网站建设 2026/5/13 3:40:42

03-管道常见螺纹和气缸常用压力-见大纲6:行业知识

03-01:常用螺纹:PT螺纹、G、BSPP、NPT、ZG1.G螺纹(55非密封管螺纹) GB/T7307-2001 BSPP(英)牙型角55,内外螺纹均为圆柱形不具密封性,需加垫圈进行密封eg:G1/82.R螺纹&#xf…

作者头像 李华