1. 程式人生 > 資料庫 >Redis快取【監控指標】

Redis快取【監控指標】

1、監控指標

參考:

1.1、效能指標:Performance

Name

Description

latency

Redis響應一個請求的時間

instantaneous_ops_per_sec

平均每秒處理請求總數

hi rate(calculated)

快取命中率(計算出來的

 

 

 

 

1.2、記憶體指標: Memory

Name

Description

used_memory

已使用記憶體

mem_fragmentation_ratio

記憶體碎片率

evicted_keys

由於最大記憶體限制被移除的key的數量

blocked_clients

由於BLPOP,BRPOP,or BRPOPLPUSH而備阻塞的客戶端

 

 

 

 

 

 

1.3、基本活動指標:Basic activity

redis連線了多少客戶端 通過觀察其數量可以確認是否存在意料之外的連線。如果發現數量不對勁,就可以使用lcient list指令列出所有的客戶端連結地址來確定源頭。

Name

Description

connected_clients

客戶端連線數

conected_laves

slave數量

master_last_io_seconds_ago

最近一次主從互動之後的秒數

keyspace

資料庫中的key值總數

 

 

 

 

 

1.4. 永續性指標: Persistence

Name

Description

rdb_last_save_time

最後一次持久化儲存磁碟的時間戳

rdb_changes_sice_last_save

自最後一次持久化以來資料庫的更改數

 

 

 

 

 

1.5、錯誤指標:Error

由於超出最大連線數限制而被拒絕的客戶端連線次數,如果這個數字很大,則意味著伺服器的最大連線數設定得過低,需要調整maxclients。

Name

Description

rejected_connections

由於達到maxclient限制而被拒絕的連線數

keyspace_misses

key值查詢失敗(沒有命中)次數

master_link_down_since_seconds

主從斷開的持續時間(以秒為單位)

 

 

 

 

 

注:以上標紅的為必須要監控的指標引數。

2、監控方式

  • redis-benchmark
  • redis-stat
  • redis-faina
  • redislive
  • redis-cli
  • monitor
  • showlog
    1.get:獲取慢查詢日誌
    2.len:獲取慢查詢日誌條目數
    3.reset:重置慢查詢日誌
    相關配置:
    1. slowlog-log-slower-than 1000 # 設定慢查詢的時間下線,單位:微秒
    2. slowlog-max-len 100 # 設定慢查詢命令對應的日誌顯示長度,單位:命令數
       
  • info(可以一次性獲取所有的資訊,也可以按塊獲取資訊)

使用info命令獲取所有與Redis服務相關的資訊

1.server:伺服器執行的環境引數
2.clients:客戶端相關資訊
3.memory:伺服器執行記憶體統計資料
4.persistence:持久化資訊
5.stats:通用統計資料
6.Replication:主從複製相關資訊
7.CPU:CPU使用情況
8.cluster:叢集資訊
9.Keypass:鍵值對統計數量資訊

2.1、終端info命令使用

登入redis-cli檢視redis相關監控資訊:


// pub1:/home/test/redis-5.0.3/src % ./redis-cli -h iotrtdb1 -p 6379-c -a root.2020

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

pub1:6379> info

# Server

redis_version:5.0.3    # redis版本號

redis_git_sha1:00000000 #Git SHA1

redis_git_dirty:0           #Git dirty flag

redis_build_id:a71f8e9236e51d3e

redis_mode:cluster     #redis模式

os:Linux 4.9.0-0.bpo.1-linx-security-amd64 x86_64   #作業系統    

arch_bits:64         #架構32 or 64

multiplexing_api:epoll   #event loop mechanism used by Redis

atomicvar_api:atomic-builtin

gcc_version:4.8.5         #編譯redis server的GCC版本

process_id:7466           #server的程序號

run_id:10fc45b5d4b20eb222fbbe6ed8c37cbe6af0b6b7              #server的隨機id(cluster和sentinel使用)

tcp_port:17500          #tcp/ip監控埠

uptime_in_seconds:5963209      #啟動的總時間(單位秒)

uptime_in_days:69         #啟動總時間(單位天)

hz:10

configured_hz:10

lru_clock:9840536        #每分鐘會遞增的一個clock,用於LRU管理

executable:/home/d5000/test/redis-5.0.3/src/./redis-server  #服務執行命令位置

config_file:/home/d5000/test/redis_cluster/17500/redis.conf          #配置檔案位置

# Clients

connected_clients:129  #連線的客戶端數量

client_recent_max_input_buffer:2              #當前client中最長的output list

client_recent_max_output_buffer:0            #當前client中最大的input buffer                 

blocked_clients:0         #由於BLPOP,BRPOP,or BRPOPLPUSH而被阻塞的客戶端

 

# Memory

used_memory:197812400         # 已使用記憶體

used_memory_human:188.65M       #記憶體分配器從作業系統分配的記憶體總量

used_memory_rss:171941888 #redis佔用的總記憶體(包括記憶體碎片)

used_memory_rss_human:163.98M         #作業系統看到的記憶體佔用,top命令看到的記憶體

used_memory_peak:223458312         #redis佔用的記憶體峰值

used_memory_peak_human:213.11M      # redis記憶體消耗的峰值

used_memory_peak_perc:88.52%     

used_memory_overhead:65087662

used_memory_startup:1449384

used_memory_dataset:132724738

used_memory_dataset_perc:67.59%

allocator_allocated:198244296

allocator_active:201465856

allocator_resident:211529728

total_system_memory:33718718464

total_system_memory_human:31.40G

used_memory_lua:37888

used_memory_lua_human:37.00K # lua指令碼引擎佔用的記憶體大小

used_memory_scripts:0

used_memory_scripts_human:0B

number_of_cached_scripts:0

maxmemory:0

maxmemory_human:0B

maxmemory_policy:noeviction

allocator_frag_ratio:1.02

allocator_frag_bytes:3221560

allocator_rss_ratio:1.05

allocator_rss_bytes:10063872

rss_overhead_ratio:0.81

rss_overhead_bytes:-39587840

mem_fragmentation_ratio:0.87        #記憶體碎片率

mem_fragmentation_bytes:-25828256

mem_not_counted_for_evict:0

mem_replication_backlog:0

mem_clients_slaves:0

mem_clients_normal:2215710

mem_aof_buffer:0

mem_allocator:jemalloc-5.1.0    #編譯的時候選擇的記憶體分配器版本

active_defrag_running:0

lazyfree_pending_objects:0

 

# Persistence

loading:0   #是否有dump在執行中

rdb_changes_since_last_save:12842719696  # 自最後一次持久化以來資料庫的更改數

rdb_bgsave_in_progress:0          #是否有RDB save在執行

rdb_last_save_time:1597712847  # 最後一次持久化儲存磁碟的時間戳

rdb_last_bgsave_status:ok                   #最後一次 RDB save操作的狀態

rdb_last_bgsave_time_sec:-1     #最後一次RDB save操作持續時間,單位秒

rdb_current_bgsave_time_sec:-1       #當前執行中的RDB save操作持續時間

rdb_last_cow_size:0  

aof_enabled:0      #aof功能是否開啟

aof_rewrite_in_progress:0          #aof的rewraite操作是否在執行

aof_rewrite_scheduled:0

aof_last_rewrite_time_sec:-1    #最後一次AOF的rewrite操作持續時間

aof_current_rewrite_time_sec:-1     #當前執行中的AOF的rewrite操作的持續時間

aof_last_bgrewrite_status:ok    #上次AOF的rewrite操作狀態

aof_last_write_status:ok    #最後一次AOF的write操作狀態

aof_last_cow_size:0

 

# Stats

total_connections_received:2575285        #伺服器已接受的連線請求數量

total_commands_processed:28499626091        #server處理的命令的總數

instantaneous_ops_per_sec:1          #伺服器每秒鐘執行的命令數量

total_net_input_bytes:1989994886010

total_net_output_bytes:649513988586

instantaneous_input_kbps:0.03         #redis網路入口kps

instantaneous_output_kbps:7.00   #redis網路出口kps

rejected_connections:0       #因為最大客戶端數量限制而被拒絕的連線請求數量

sync_full:0

sync_partial_ok:0

sync_partial_err:0

expired_keys:9    #因為過期而被自動刪除的資料庫鍵數量

expired_stale_perc:0.00

expired_time_cap_reached_count:0

evicted_keys:0     # 由於最大記憶體限制被移除的key的數量

keyspace_hits:15397635196      #查詢資料庫鍵成功的次數

keyspace_misses:253663939      #查詢資料庫鍵失敗的次數

pubsub_channels:0

pubsub_patterns:0

latest_fork_usec:0       #最後一次fork操作持續時間(單位微秒)

migrate_cached_sockets:0

slave_expires_tracked_keys:0

active_defrag_hits:0

active_defrag_misses:0

active_defrag_key_hits:0

active_defrag_key_misses:0

 

# Replication

role:master

connected_slaves:0

master_replid:8f7b4c2cf289076e3a7d122871575155fbe5f2fa

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:0

second_repl_offset:-1

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

 

# CPU

used_cpu_sys:8020.712000       #redis server消耗的系統CPU

used_cpu_user:34253.984000 #redis server消耗的使用者CPU

used_cpu_sys_children:0.000000       #後臺程序消耗的系統CPU

used_cpu_user_children:0.000000     #後臺程序消耗的使用者CPU

 

# Cluster

cluster_enabled:1       #例項是否啟用叢集模式,1代表是

 

# Keyspace

db0:keys=1116133,expires=0,avg_ttl=0     #各個資料庫的 key 的數量,以及帶有生存期的 key 的數量


互動式info命令使用:

 

./redis-cli -h  ip地址 -p 埠號 [叢集加-c]  -a 登入密碼  info 按塊獲取資訊 | grep 需要過濾的引數

示例:

       

2.2、Java客戶端jedis.info()獲取監控資訊

1)依賴

<dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
</dependency>

2)示例

public class RedisInfoTest {
	public static void main(String[] args) {
			Jedis jedis = null;
			try {
				jedis = new Jedis("192.168.1.92", 6379); //地址
				jedis.auth("root.2020); //密碼
				String info = jedis.info();
				System.out.println(info);
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				if (jedis != null) {
					jedis.close();
				}
			}
		}
}