Redis Server 监控
- redis存活监控:redis本地监控使用ping,如果指定时间内返回PONG表示存活,否则redis不能响应请求,可能阻塞或死亡。
[root@localhost redis]# redis-cli -p 7001 -a 123456 ping PONG
- 连接个数(connected_clients):客户端连接个数,如果连接数过高,影响redis吞吐量。
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep connected_clients connected_clients:3
- 连接数使用率:连接数使用百分比,通过(connected_clients/maxclients)计算;如果达到1,redis开始拒绝新连接创建,告警
- 拒绝的连接个数(rejected_connections):redis连接个数达到maxclients限制,拒绝新连接的个数。告警
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep rejected_connections rejected_connections:0
- redis分配的内存大小(used_memory):reids真实使用内存,不包含内存碎片
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep -w used_memory used_memory:2492368
- redis进程使用内存大小(used_memory_rss):进程实际使用的物理内存大小,包含内存碎片;如果rss过大导致内部碎片大,内存资源浪费,fork的耗时和cow内存都会增大。
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep -w used_memory_rss used_memory_rss:9986048
- redis内存碎片率(mem_fragmentation_ratio):表示(used_memory_rss/used_memory),碎片率过大,导致内存资源浪费,不设置告警。小于1,表示redis已使用swap分区,则告警
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep -w mem_fragmentation_ratio mem_fragmentation_ratio:4.01
- 键个数(keys):redis实例包含的键个数。单实例键个数过大,可能导致过期键回收不及时。
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep -w keys db0:keys=2,expires=0,avg_ttl=0
- redis处理的命令数(total_commands_processed):监控采集周期内平均qps
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep -w total_commands_processed total_commands_processed:709602
- redis当前的qps(instantaneous_ops_per_sec):redis内部较实时的每秒执行的命令数
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep -w instantaneous_ops_per_sec instantaneous_ops_per_sec:1
- 请求键被命中次数:keyspace_hits,请求键未被命中次数:keyspace_misses。请求键的命中率使用keyspace_hits/(keysapce_hits+keysapce_misses)计算所得,命中率低于50%告警
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep -w keyspace_hits; keyspace_hits:3162 [root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep -w keyspace_misses; keyspace_misses:1577
- 最近一次fork阻塞的微妙数(latest_fork_usec):最近一次fork操作阻塞redis进程的耗时
[root@localhost redis]# redis-cli -p 7001 -a 123456 info |grep -w latest_fork_usec latest_fork_usec:809
redis-cli info命令中各数值的含义
redis-cli | |
Server | |
redis_version:3.2.12 | redis版本 |
redis_git_sha1:00000000 | |
redis_git_dirty:0 | |
redis_build_id: ee1865197f3392ce | |
redis_module:cluster | 运行模式(standalone,cluster) |
os:Linux 3.10.0-514.el7.x86_64 x86_64 | 运行系统内核版本 |
arch_bits:64 | 字长 |
multiplexing_api:epoll | redis使用的事件处理机制 |
gcc_version:4.8.5 | 编译redis时所使用的GCC版本 |
process_id:4589 | redis进程PID |
run_id:8800328e4eb3cbbc0ea316e6a68c4f7fd2142b9f | redis服务器的编号(用于集群) |
tcp_port:7001 | 监听的端口 |
uptime_in_seconds:690926 | 已运行秒数 |
uptime_in_days:6 | 已运行天数 |
hz:10 | 用于执行后台任务的函数被调用的频率 |
lru_clock:9876371 | 用于LRU管理的计时器,单位为分钟 |
executable:/home/redis/redis7001/./redis-server | bin文件的位置 |
config_file:/home/redis/redis7001/redis.conf | 配置文件位置 |
Clients | |
connected_clients:3 | 连接的客户端个数 |
client_longest_output_list:0 | 当前客户端连接中最长的输出列表 |
client_biggest_input_buf:0 | 当前客户端连接中最大的输入缓存 |
blocked_clients:0 | 阻塞的客户端数 |
Memory | |
used_memory:2492368 | 消耗的内存 |
used_memory_human:2.38M | |
used_memory_rss:9986048 | 操作系统分配给redis的内存 |
used_memory_rss_human:9.52M | |
used_memory_peak:2754864 | 内存消耗的峰值 |
used_memory_peak_human:2.63M | |
total_system_memory:6088867840 | 系统总内存 |
total_system_memory_human:5.67G | |
used_memory_lua:41984 | Lua脚本消耗的内存 |
used_memory_lua_human:41.00K | |
maxmemory:0 | 内存使用限制 |
maxmemory_human:0B | |
maxmemory_policy:noeviction | 超出内存限制时的行为 |
mem_fragmentation_ratio:4.01 | 内存碎片率(=used_memory_rss/used_memory) |
mem_allocator:jemalloc-4.0.3 | 内存分配器 |
Persistence | |
loading:0 | 是否正在载入持久化文件 |
rdb_changes_since_last_save:0 | 上次持久化以来修改的健值数 |
rdb_bgsave_in_progress:0 | 是否正在后台保存rdb文件 |
rdb_last_save_time:1569466564 | 上次RDB持久化的时间戳 |
rdb_last_bgsave_status:ok | 上次RDB持久化的结果 |
rdb_last_bgsave_time_sec:0 | 上次创建rdb文件消耗的秒数 |
rdb_current_bgsave_time_sec:-1 | 如果正在创建rdb文件,记录已经消耗了多少时间 |
aof_enabled:1 | 是否启用AOF持久化 |
aof_rewrite_in_progress:0 | 是否正在重写AOF文件 |
aof_rewrite_scheduled:0 | 是否将要重写AOF文件 |
aof_last_rewrite_time_sec:-1 | 上次AOF重写消耗的时间 |
aof_current_rewrite_time_sec:-1 | 当前AOF重写消耗的时间 |
aof_last_bgrewrite_status:ok | 上次重写AOF文件的结果 |
aof_last_write_status:ok | 上次写入AOF文件的结果 |
aof_current_size:23922 | 当前AOF文件的大小 |
aof_base_size:0 | 上一个AOF文件的大小 |
aof_pending_rewrite:0 | 是否有AOF重写操作在等待RDB文件的创建 |
aof_buffer_length:0 | AOF写入缓冲区大小 |
aof_rewrite_buffer_length:0 | AOF重写缓冲区大小 |
aof_pending_bio_fsync:0 | 正则I/O队列中等待的fsync()的数量 |
aof_delayed_fsync:0 | 被延迟执行的fsync()的数量 |
Stats | |
total_connections_received:165 | 服务器已接收的连接请求数 |
total_commands_processed:698103 | 服务器已经执行的命令数量 |
instantaneous_ops_per_sec:1 | 当前每秒执行的命令数量 |
total_net_input_bytes:30648062 | 接收的数据包总大小 |
total_net_output_bytes:4836353 | 发送的数据包总大小 |
instantaneous_input_kbps:0.05 | 当前下行速率 |
instantaneous_output_kbps:0.00 | 当前上行速率 |
rejected_connections:0 | 被拒绝的连接请求数 |
sync_full:1 | 主从同步状态 |
sync_partial_ok:0 | |
sync_partial_err:0 | |
expired_keys:0 | 过期的键数 |
evicted_keys:0 | 因内存达到上限被踢出的键的个数 |
keyspace_hits:3162 | 命中key的次数 |
keyspace_misses:1577 | 未命中的次数 |
pubsub_channels:0 | 当前被订阅的频道和模式数 |
pubsub_patterns:0 | |
latest_fork_usec:809 | 最后一次fork()消耗的毫秒数 |
migrate_cached_sockets:0 | 为节点迁移缓存的tcp连接数 |
Replication | |
role:master | 主节点还是从节点 |
connected_slaves:1 | 已连接的从节点数 |
slave0:ip=192.169.1.71,port=7004,state=online,offset=989069,lag=1 | 从节点的信息,ip,端口,数据新度等 |
master_repl_offset:989069 | 主节点数据新度 |
repl_backlog_active:1 | 是否为主从同步启用积压空间 |
repl_backlog_size:1048576 | 积压空间的大小 |
repl_backlog_first_byte_offset:2 | 积压空间开头的数据新度 |
repl_backlog_histlen:989068 | 积压空间当前数据量 |
CPU | |
used_cpu_sys:513.30 | 核心态CPU时间 |
used_cpu_user:257.42 | 用户态CPU时间 |
used_cpu_sys_children:0.00 | 子进程用户态CPU时间 |
used_cpu_user_children:0.00 | 子进程核心态CPU时间 |
Cluster | |
cluster_enabled:1 | 是否启用集群 |
Keyspace | |
db0:keys=2,expires=0,avg_ttl=0 | 各数据库的键数,过期键数,数据库中键的平均过期时间戳估测值 |
参考地址
redis监控指标 https://www.jianshu.com/p/68485d5c7fb9
redis info命令中各数值的含义 https://www.cnblogs.com/corolcorona/p/7384379.html