1. 程式人生 > >redis監控指標

redis監控指標

  • 伺服器系統資料採集
  • Redis Server資料採集
  • Redis響應時間資料採集
  • Redis監控Screen
    <b>
    <b>
    <b>

一、伺服器存活監控

1>ping監控告警

2>CPU

3>丟包率

<b>

二、Redis Server監控資料採集

  • ping,info all, slowlog get/len/reset/cluster info/config get

<b>

Redis存活監控

  • redis存活監控 (redis_alive):redis本地監控agent使用ping,如果指定時間返回PONG表示存活,否則redis不能響應請求,可能阻塞或死亡。當返回值不為1時,redis掛了,告警

[[email protected] bin]# ./redis-cli -c -p 7000 ping | grep -c PONG
1

<b>

  • 連線個數 (connected_clients):客戶端連線個數,如果連線數過高,影響redis吞吐量。>5000 時告警

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w "connected_clients" | awk -F":" '{print $2}'
1
  • 連線數使用率(connected_clients_pct): 連線數使用百分比,通過(connected_clients/maxclients)計算;如果達到1,redis開始拒絕新連線建立,告警

<b>

  • 拒絕的連線個數(rejected_connections): redis連線個數達到maxclients限制,拒絕新連線的個數。告警

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w rejected_connections
rejected_connections:0
  • 新建立連線個數 (total_connections_received): 如果新建立連線過多,過度地建立和銷燬連線對效能有影響,說明短連線嚴重或連線池使用有問題,告警。

[[email protected]
bin]# ./redis-cli -c -p 7000 info | grep -w total_connections_received total_connections_received:217

<b>

  • list阻塞呼叫被阻塞的連線個數 (blocked_clients): 如果監控資料大於0,告警

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w blocked_clients
blocked_clients:0

<b>

  • redis分配的記憶體大小 (used_memory): redis真實使用記憶體,不包含記憶體碎片

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w used_memory
used_memory:2513656

<b>

  • redis程序使用記憶體大小(used_memory_rss): 程序實際使用的實體記憶體大小,包含記憶體碎片;如果rss過大導致內部碎片大,記憶體資源浪費,和fork的耗時和cow記憶體都會增大。

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w used_memory_rss
used_memory_rss:9728000

<b>

  • redis記憶體碎片率 (mem_fragmentation_ratio): 表示(used_memory_rss/used_memory),碎片率過大,導致記憶體資源浪費,不設定告警。小於1,表示redis已使用swap分割槽,則告警

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w mem_fragmentation_ratio
mem_fragmentation_ratio:3.89

<b>

  • 鍵個數 (keys): redis例項包含的鍵個數。單例項鍵個數過大,可能導致過期鍵的回收不及時。

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w keys | awk -F':' '{print $2}' | awk -F',' '{print $1}' | awk -F'=' '{print $2}'
43

<b>

  • redis處理的命令數 (total_commands_processed): 監控採集週期內的平均qps

./redis-cli -c -p 7000 info | grep -w total_commands_processed| awk -F':' '{print $2}'

<b>

  • redis當前的qps (instantaneous_ops_per_sec): redis內部較實時的每秒執行的命令數

./redis-cli -c -p 7000 info | grep -w instantaneous_ops_per_sec | awk -F':' '{print $2}'

<b>

  • 請求鍵被命中次數 (keyspace_hits): redis請求鍵被命中的次數

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w keyspace_hits | awk -F':' '{print $2}'
354

<b>

  • 請求鍵未被命中次數 (keyspace_misses): redis請求鍵未被命中的次數

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w keyspace_misses
keyspace_misses:122

<b>

  • 請求鍵的命中率 (keyspace_hit_ratio):使用keyspace_hits/(keyspace_hits+keyspace_misses)計算所得,命中率低於50%告警

<b>

  • 最近一次fork阻塞的微秒數 (latest_fork_usec): 最近一次Fork操作阻塞redis程序的耗時數,單位微秒。

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w latest_fork_usec
latest_fork_usec:315

三、Redis叢集監控

  • cluster info 、info

<b>

  • 例項是否啟用叢集模式 (cluster_enabled): 通過info的cluster_enabled監控是否啟用叢集模式。不等於1則告警

[[email protected] bin]# ./redis-cli -c -p 7000 info | grep -w cluster_enabled
cluster_enabled:1

<b>

  • 叢集健康狀態 (clusster_state):cluster_state不為OK則告警

[[email protected] bin]# ./redis-cli -c -p 7000 cluster info
cluster_state:ok

<b>

  • 叢集資料槽slots分配情況 (cluster_slots_assigned):叢集正常執行時,預設16384個slots

不等於16384則告警

[[email protected] bin]# ./redis-cli -c -p 7000 cluster info | grep -w cluster_slots_ok
cluster_slots_ok:16384

<b>

  • 檢測下線的資料槽slots個數 (cluster_slots_fail):叢集正常執行時,應該為0. 如果大於0說明叢集有slot存在故障。

[[email protected] bin]# ./redis-cli -c -p 7000 cluster info | grep -w cluster_slots_fail
cluster_slots_fail:0

<b>

  • 叢集的節點數 (cluster_known_nodes):叢集中redis節點的個數

[[email protected] bin]# ./redis-cli -c -p 7000 cluster info | grep -w cluster_known_nodes
cluster_known_nodes:6