天天看點

zabbix 監控 redis

通過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

繼續閱讀