如何查看redis运行状态

如何查看redis运行状态
最新回答
爱过方知情重

2023-03-04 06:10:10

查看 Redis 运行状态可通过以下方法实现,涵盖命令行工具、监控系统、进程检查及日志分析等维度

1. 使用 Redis 原生命令

通过 Redis 客户端(如 redis-cli)直接执行命令获取实时状态信息:

  • INFO 命令返回服务器统计信息的完整列表,包括:

    基础信息:Redis 版本(redis_version)、运行时间(uptime_in_days)、当前连接数(connected_clients)。

    内存使用:已用内存(used_memory)、内存碎片率(mem_fragmentation_ratio)。

    持久化:RDB 持久化状态(rdb_last_save_time)、AOF 开关状态(aof_enabled)。

    复制状态(若启用主从):主从延迟(master_repl_offset)、从节点数量(connected_slaves)。

    命令统计:总命令数(total_commands_processed)、每秒命令数(instantaneous_ops_per_sec)。

    示例命令:redis-cli INFO # 获取全部信息redis-cli INFO memory # 仅查看内存相关指标

  • SENTINEL 命令(针对 Sentinel 模式)若 Redis 配置了高可用 Sentinel,可通过以下命令检查监控状态:

    redis-cli -p 26379 SENTINEL masters # 查看所有被监控的主节点redis-cli -p 26379 SENTINEL slaves mymaster # 查看特定主节点的从节点状态
2. 部署监控工具

通过第三方工具实现可视化监控与告警:

  • RedisInsight

    功能:官方提供的 GUI 工具,支持实时监控、性能分析、慢查询日志查看。

    使用:下载安装后连接 Redis 实例,在 Dashboard 页面查看关键指标(如内存、QPS、命中率)。

  • Prometheus + Grafana

    步骤

    部署 Redis Exporter 暴露指标(如 redis_memory_used_bytes)。

    配置 Prometheus 抓取 Exporter 数据。

    在 Grafana 中导入 Redis 官方仪表板模板(ID:763)。

    优势:支持历史数据存储、自定义告警规则。

  • 其他工具

    Datadog/New Relic:商业 SaaS 工具,提供开箱即用的 Redis 监控模板。

    ELK Stack:通过日志分析(如 redis.log)结合 Kibana 可视化。

3. 检查系统进程信息

在 Linux 系统中通过进程状态快速判断 Redis 是否运行:

  • 命令:ps aux | grep redis # 查看进程是否存在及资源占用top -p $(pgrep -o redis-server) # 动态监控 CPU/内存使用
  • 关键指标

    CPU 使用率:持续过高可能表示存在阻塞命令(如 KEYS *)。

    内存占用:接近系统物理内存时可能触发 OOM Killer。

4. 分析日志文件

Redis 默认将错误日志写入配置文件指定的路径(如 /var/log/redis/redis.log):

  • 查看最新日志:tail -n 50 /var/log/redis/redis.log # 查看最后 50 行journalctl -u redis --no-pager -n 20 # 若使用 systemd 管理
  • 关键错误类型

    OOM 错误:Can't save in background: fork: Cannot allocate memory。

    主从同步失败:MASTER <-> SLAVE synchronization failed。

    连接拒绝:Connection refused by server(可能因配置绑定地址错误)。

5. 高级场景:集群状态检查
  • Redis Cluster:使用 CLUSTER NODES 命令查看节点健康状态:

    redis-cli CLUSTER NODES | grep -E "master|slave" | awk '{print $1,$2,$3,$8,$9}'

    关键字段:connected(节点连接状态)、fail(故障标记)。

  • Twemproxy/Codis:若使用代理层,需同时检查代理日志与后端 Redis 实例状态。

最佳实践建议
  • 定期监控:结合 INFO 命令与 Prometheus 监控,设置内存使用率、连接数等关键指标的告警阈值。
  • 日志轮转:配置 logrotate 避免日志文件过大,例如:/var/log/redis/redis.log { daily rotate 7 compress missingok notifempty}
  • 性能基准测试:使用 redis-benchmark 模拟负载,验证系统稳定性。

通过上述方法,可全面掌握 Redis 的运行状态,从实时指标到历史趋势,从单机到集群,确保服务高可用与性能优化。