Redis監控

asoren發表於2016-11-15

Redis監控

客戶端和伺服器連線正常,返回PONG

redis> PING
PONG
 
# 客戶端和伺服器連線不正常(網路不正常或伺服器未能正常執行),返回連線異常
redis 127.0.0.1:6379> PING
Could not connect to Redis at 127.0.0.1:6379: Connection refused

Redis 監控最直接的方法就是使用系統提供的 info 命令,只需要執行下面一條命令,就能獲得 Redis 系統的狀態報告。

redis-cli info

返回 Server、Clients、Memory、Persistence、Stats、Replication、CPU、Keyspace 8個部分。從info大返回結果中提取相關資訊,就可以達到有效監控的目的。

各個引數含義

# Server
redis_version:2.8.8                     # Redis 的版本
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:bf5d1747be5380f
redis_mode:standalone
os:Linux 2.6.32-220.7.1.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7                       #gcc版本
process_id:49324                        # 當前 Redis 伺服器程式id
run_id:bbd7b17efcf108fdde285d8987e50392f6a38f48
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.59K
used_memory_rss:85532672                 #Redis分配的記憶體總量(包括記憶體碎片)
used_memory_peak:178987632
used_memory_peak_human:170.70M           #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
db0:keys=3,expires=0,avg_ttl=0             #各個資料庫的 key 的數量,以及帶有生存期的 key 的數量

記憶體使用

如果 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的估計值。

相關文章