一. 環境
Centos 7.2
Zabbix 3.4
Redis 5.0.0
二 zabbix-agent配置
1. 編輯zabbix-agent的zabbix_agentd.conf
vim /etc/zabbix/zabbix_agentd.conf
添加:
UserParameter=Redis.Info[*],/etc/zabbix/script/redis/redismonitor.sh 2>/dev/null $1 $2
# 通過腳本監控資訊
UserParameter=Redis.Status,(/datastore/redis/redis-5.0.0/src/redis-cli -h 192.168.126.128 -p 6379 -a 密碼 ping)2>/dev/null | grep -c PONG
使用錯誤重定向(2>/dev/null)是防止報錯導緻監控項失效無法告警,具體錯誤為 : 538840574" of type “string” is not suitable for value type "Numeric (unsign)"
設定AllowRoot=1,目的是以root使用者去執行腳本
2. 添加腳本
建立redismonitor.sh,放在/etc/zabbix/script/redis目錄下,當然這個目錄你可以随便改
腳本内容為:
#! /bin/bash
#Name: redismontior.sh
#From: liuhaibin 2018.5.29
#Action: Zabbix monitoring redis plug-in
#根據自己的安裝情況填寫指令位置主機ip和端口
REDISCLI="/datastore/redis/redis-5.0.0/src/redis-cli"
HOST="192.168.126.128"
PORT=6379
PASS="密碼"
if [[ $# == 1 ]];then
case $1 in
version)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "redis_version" | awk -F':' '{print $2}'`
echo $result
;;
uptime)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "uptime_in_seconds" | awk -F':' '{print $2}'`
echo $result
;;
connected_clients)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "connected_clients" | awk -F':' '{print $2}'`
echo $result
;;
blocked_clients)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "blocked_clients" | awk -F':' '{print $2}'`
echo $result
;;
used_memory)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "used_memory" | awk -F':' '{print $2}'`
echo $result
;;
used_memory_rss)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "used_memory_rss" | awk -F':' '{print $2}'`
echo $result
;;
used_memory_peak)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "used_memory_peak" | awk -F':' '{print $2}'`
echo $result
;;
used_memory_lua)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "used_memory_lua" | awk -F':' '{print $2}'`
echo $result
;;
used_cpu_sys)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "used_cpu_sys" | awk -F':' '{print $2}'`
echo $result
;;
used_cpu_user)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "used_cpu_user" | awk -F':' '{print $2}'`
echo $result
;;
used_cpu_sys_children)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "used_cpu_sys_children" | awk -F':' '{print $2}'`
echo $result
;;
used_cpu_user_children)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "used_cpu_user_children" | awk -F':' '{print $2}'`
echo $result
;;
rdb_last_bgsave_status)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "rdb_last_bgsave_status" | awk -F':' '{print $2}' | grep -c ok`
echo $result
;;
aof_last_bgrewrite_status)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "aof_last_bgrewrite_status" | awk -F':' '{print $2}' | grep -c ok`
echo $result
;;
aof_last_write_status)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "aof_last_write_status" | awk -F':' '{print $2}' | grep -c ok`
echo $result
;;
*)
echo -e "\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"
;;
esac
elif [[ $# == 2 ]];then
case $2 in
keys)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "$1" | grep -w "keys" | awk -F'=|,' '{print $2}'`
echo $result
;;
expires)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "$1" | grep -w "keys" | awk -F'=|,' '{print $4}'`
echo $result
;;
avg_ttl)
result=`$REDISCLI -h $HOST -p $PORT -a $PASS info | grep -w "$1" | grep -w "avg_ttl" | awk -F'=|,' '{print $6}'`
echo $result
;;
*)
echo -e "\033[33mUsage: $0 {db0 keys|db0 expires|db0 avg_ttl}\033[0m"
;;
esac
fi
zabbix監控redis隻要是通過“info”檢視資訊, 如果redis沒有密碼的話,記得把$Pass去掉
修改腳本的可執行權限
chmod +x redismonitor.sh
重新開機 agent
service zabbix-agent restart
3. 導入模闆
在zabbix web端導入web模闆 [連結:https://pan.baidu.com/s/1NjGyxqJcy4YmMBDZUcJGRg
提取碼:sktv ]
三 測試
在zabbix 服務端用zabbix_get指令測試是否配置成功
zabbix_get -s 192.168.126.128 -k Redis.Info[used_memory]
前端