redis 监控的一些构思

会开车的架构师 2020-11-06 21:40:24
redis 监控 开源中国 数据库/缓存 构思


内存使用

如果 Redis 使用的内存超出了可用的物理内存大小,那么 Redis 很可能系统会被杀掉。针对这一点,你可以通过 info 命令对 used_memory 和 used_memory_peak 进行监控,为使用内存量设定阀值,并设定相应的报警机制。当然,报警只是手段,重要的是你得预先计划好,当内存使用量过大后,你应该做些什么,是清除一些没用的冷数据,还是把 Redis 迁移到更强大的机器上去。

持久化

如果因为你的机器或 Redis 本身的问题导致 Redis 崩溃了,那么你唯一的救命稻草可能就是 dump 出来的rdb文件了,所以,对 Redis dump 文件进行监控也是很重要的。可以通过对rdb_last_save_time 进行监控,了解最近一次 dump 数据操作的时间,还可以通过对rdb_changes_since_last_save进行监控来获得如果这时候出现故障,会丢失(即已改变)多少数据。

Keys

通过获取Keyspace中的结果得到各个数据库中key的数量

QPS

即每分钟执行的命令个数,即:(total_commands_processed2-total_commands_processed1)/span,为了实时得到QPS,可以设定脚本在后台运行,记录过去几分钟的total_commands_processed。在计算QPS时,利用过去的信息和当前的信息得出QPS的估计值。



先解释下各个参数含义

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Server
redis_version: 2.8 . 8                      # Redis 的版本
redis_git_sha 1: 00000000
redis_git_dirty: 0
redis_build_id:bf 5 d 1747 be 5380 f
redis_mode:standalone
os:Linux  2.6 . 32 -220.7 . 1 .el 6 .x 86 _ 64  x 86 _ 64
arch_bits: 64
multiplexing_api:epoll
gcc_version: 4.4 . 7                        #gcc版本
process_id: 49324                         # 当前 Redis 服务器进程id
run_id:bbd 7 b 17 efcf 108 fdde 285 d 8987 e 50392 f 6 a 38 f 48
tcp_port: 6379
uptime_in_seconds: 1739082                # 运行时间(秒)
uptime_in_days: 20                        # 运行时间(天)
hz: 10
lru_clock: 1734729
config_file:/home/s/apps/RedisMulti_video_so/conf/zzz.conf
 
# Clients
connected_clients: 1                      #连接的客户端数量
client_longest_output_list: 0
client_biggest_input_buf: 0
blocked_clients: 0
 
# Memory
used_memory: 821848                        #Redis分配的内存总量             
used_memory_human: 802.59 K
used_memory_rss: 85532672                  #Redis分配的内存总量(包括内存碎片)
used_memory_peak: 178987632
used_memory_peak_human: 170.70 M           #Redis所用内存的高峰值
used_memory_lua: 33792
mem_fragmentation_ratio: 104.07            #内存碎片比率
mem_allocator:tcmalloc -2.0
 
# Persistence
loading: 0
rdb_changes_since_last_save: 0             #上次保存数据库之后,执行命令的次数
rdb_bgsave_in_progress: 0                  #后台进行中的 save 操作的数量
rdb_last_save_time: 1410848505             #最后一次成功保存的时间点,以 UNIX 时间戳格式显示
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec: 0
rdb_current_bgsave_time_sec: -1
aof_enabled: 0                             #redis是否开启了aof
aof_rewrite_in_progress: 0
aof_rewrite_scheduled: 0
aof_last_rewrite_time_sec: -1
aof_current_rewrite_time_sec: -1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
 
# Stats
total_connections_received: 5705           #运行以来连接过的客户端的总数量
total_commands_processed: 204013           # 运行以来执行过的命令的总数量
instantaneous_ops_per_sec: 0
rejected_connections: 0
sync_full: 0
sync_partial_ok: 0
sync_partial_err: 0
expired_keys: 34401                        #运行以来过期的 key 的数量
evicted_keys: 0                            #运行以来删除过的key的数量
keyspace_hits: 2129                        #命中key 的次数
keyspace_misses: 3148                      #没命中key 的次数
pubsub_channels: 0                         #当前使用中的频道数量
pubsub_patterns: 0                         #当前使用中的模式数量
latest_fork_usec: 4391
 
# Replication
role:master                              #当前实例的角色master还是slave
connected_slaves: 0
master_repl_offset: 0
repl_backlog_active: 0
repl_backlog_size: 1048576
repl_backlog_first_byte_offset: 0
repl_backlog_histlen: 0
 
# CPU
used_cpu_sys: 1551.61
used_cpu_user: 1083.37
used_cpu_sys_children: 2.52
used_cpu_user_children: 16.79
 
# Keyspace
db 0: keys= 3 ,expires= 0 ,avg_ttl= 0              #各个数据库的 key 的数量,以及带有生存期的 key 的数量

版权声明
本文为[会开车的架构师]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4629483/blog/4529702

  1. Some ideas of redis monitoring
  2. Spring中获取request的几种方法,及其线程安全性分析
  3. Several methods of getting request in spring and its thread security analysis
  4. 20分钟带你掌握JavaScript Promise和 Async/Await
  5. 20 minutes with async and async
  6. Mybatis - introduction, simple entry program
  7. Java Concurrent Programming: concurrent HashMap
  8. Mybatis: one to one association query
  9. Java IO
  10. Deep understanding of Java generics
  11. Object oriented [day07]: review of knowledge points (11)
  12. Chapter 2 spring
  13. Process of building minicube in local k8s environment
  14. Interpretation of jQuery source code
  15. Making web full screen effect with jquery
  16. Java 7 exception handling new features - address suppressed () method
  17. Spring 4 uses websocket
  18. Using openldap to answer questions and using java to complete LDAP authentication
  19. Implementation of MySQL high availability cluster with corosync + pacemaker and DRBD
  20. Java production of a simple tank war
  21. Design pattern day02
  22. Hadoop pseudo Distributed installation and running test example
  23. Java Concurrent Programming: callable, future and futuretask
  24. Understanding the three characteristics of Java encapsulation
  25. Understanding closure of JavaScript
  26. Java set excel worksheet to read only
  27. Distributed Java service platform baratine
  28. Java barcode generation technology barcode4j
  29. Use springboot + MySQL + JPA to add, delete, change, query and page the database
  30. Distributed services framework Dubbo / dubbox getting started example
  31. Zookeeper notes (1) installation, deployment and hello world
  32. Oracle database trigger Usage Summary
  33. MySQL master replication with slave server