通過redis自帶的info指令來監控redis的健康狀态,通過redis-cli PING指令來監控redis的存活狀态。
附件中有監控模闆,将監控腳本放在redis伺服器的自定義的/scripts/zabbix_redis/下:
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
85
86
87
88
89
90
<code>#! /bin/bash</code>
<code>#Name: redismontior.sh</code>
<code>REDISCLI=</code><code>"/usr/bin/redis-cli"</code>
<code>HOST=</code><code>"127.0.0.1"</code>
<code>PORT=6379</code>
<code>if</code> <code>[[ $</code><code># == 1 ]];then</code>
<code> </code><code>case</code> <code>$1 </code><code>in</code>
<code> </code><code>version)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"redis_version"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>echo</code> <code>$result</code>
<code> </code><code>;;</code>
<code> </code><code>uptime)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"uptime_in_seconds"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>connected_clients)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"connected_clients"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>blocked_clients)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"blocked_clients"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>used_memory)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"used_memory"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>used_memory_rss)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"used_memory_rss"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>used_memory_peak)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"used_memory_peak"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>used_memory_lua)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"used_memory_lua"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>used_cpu_sys)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"used_cpu_sys"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>used_cpu_user)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"used_cpu_user"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>used_cpu_sys_children)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"used_cpu_sys_children"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>used_cpu_user_children)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"used_cpu_user_children"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>rdb_last_bgsave_status)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"rdb_last_bgsave_status"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code> <code>| </code><code>grep</code> <code>-c ok`</code>
<code> </code><code>aof_last_bgrewrite_status)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"aof_last_bgrewrite_status"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code> <code>| </code><code>grep</code> <code>-c ok`</code>
<code> </code><code>aof_last_write_status)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"aof_last_write_status"</code> <code>| </code><code>awk</code> <code>-F</code><code>':'</code> <code>'{print $2}'</code> <code>| </code><code>grep</code> <code>-c ok`</code>
<code> </code><code>*)</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[33mUsage: $0 {connected_clients|blocked_clients|used_memory|used_memory_rss|used_memory_peak|used_memory_lua|used_cpu_sys|used_cpu_user|used_cpu_sys_children|used_cpu_user_children|rdb_last_bgsave_status|aof_last_bgrewrite_status|aof_last_write_status}\033[0m"</code>
<code> </code><code>esac</code>
<code>elif</code> <code>[[ $</code><code># == 2 ]];then</code>
<code> </code><code>case</code> <code>$2 </code><code>in</code>
<code> </code><code>keys)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"$1"</code> <code>| </code><code>grep</code> <code>-w </code><code>"keys"</code> <code>| </code><code>awk</code> <code>-F</code><code>'=|,'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>expires)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"$1"</code> <code>| </code><code>grep</code> <code>-w </code><code>"keys"</code> <code>| </code><code>awk</code> <code>-F</code><code>'=|,'</code> <code>'{print $4}'</code><code>`</code>
<code> </code><code>avg_ttl)</code>
<code> </code><code>result=`$REDISCLI -h $HOST -p $PORT info | </code><code>grep</code> <code>-w </code><code>"$1"</code> <code>| </code><code>grep</code> <code>-w </code><code>"avg_ttl"</code> <code>| </code><code>awk</code> <code>-F</code><code>'=|,'</code> <code>'{print $6}'</code><code>`</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[33mUsage: $0 {db0 keys|db0 expires|db0 avg_ttl}\033[0m"</code>
<code>fi</code>
zabbix參數key的設定:
<code># cat /etc/zabbix/zabbix_agentd.d/userparameter_redis.conf </code>
<code>UserParameter=Redis.Status, redis-cli PING|</code><code>grep</code> <code>-c </code><code>"PONG"</code>
<code>UserParameter=Redis.Info[*], </code><code>/bin/sh</code> <code>/scripts/zabbix_redis/zabbix_redis</code><code>.sh $1</code>
模闆見附件.其中對腳本傳入兩個參數的部分,對于不同的環境可能會不太相容,可以對模闆和腳本進行修改,或者直接在模闆中禁用對應的item。
<a href="http://down.51cto.com/data/2366694" target="_blank">附件:http://down.51cto.com/data/2366694</a>
本文轉自 酥心糖 51CTO部落格,原文連結:http://blog.51cto.com/tryingstuff/1929435