如果主機有多個redis實例可以使用lld(low level discovery)方式監控redis,只需要在正則表達式裏把需要監控的端口標上,就可以監控redis多實例。
1,agent端
在ageng端創建可以識別redis多實例的腳本(通過端口判斷)
cd /server/scripts cat redis_low_discovery.sh #!/bin/bash #Fucation:mysql low-level discovery #Script_name redis_low_discovery.sh redis() { #port=($(netstat -tpln | awk -F "[ :]+" '/redis/ && /0.0.0.0/ {print $5}')) port=($(ps aux|grep redis-server|grep -v grep|awk -F ":" '{print $3}'|awk '{print $1}')) printf '{\n' printf '\t"data":[\n' for key in ${!port[@]} do if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F '=' '{print $10}'|cut -d ' ' -f 1` printf '\t {\n' printf "\t\t\t\"{#REDISPORT}\":\"${port[${key}]}\"},\n" else [[ "${key}" -eq "((${#port[@]}-1))" ]] socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F '=' '{print $10}'|cut -d ' ' -f 1` printf '\t {\n' printf "\t\t\t\"{#REDISPORT}\":\"${port[${key}]}\"}\n" fi done printf '\t ]\n' printf '}\n' } $1
修改屬主
chown -R zabbix.zabbix /server/scripts/
給權限
chmod 755 redis_low_discovery.sh
添加UserParameter
vim /usr/local/zabbix/etc/zabbix_agentd.conf UserParameter=zabbix_low_discovery[*],/bin/bash /server/scripts/redis_low_discovery.sh $1 #UserParameter=redis_stats[*],(echo info; sleep 1) | telnet 10.96.170.30 $1 2>&1 |grep $2|cut -d : -f2 UserParameter=redis_stats[*],/usr/local/bin/redis-cli -h 10.96.170.31 -p $1 info|grep $2|cut -d : -f2
如果不讓用telnet協議,還可以使用/usr/local/bin/redis-cli,本次我的配置中telnet沒有成功,因此把telnet注掉了。
關閉requiretty
sed -i 's/^Defaults.*.requiretty/#Defaults requiretty/' /etc/sudoers
或者 vim /etc/sudoers #注掉第56行
重啓zabbix服務
/etc/init.d/zabbix_agentd start
2,server端
使用zabbix_get獲取redis鍵值
/usr/local/zabbix/bin/zabbix_get -s 10.96.170.31 -k zabbix_low_discovery[redis] { "data":[ { "{#REDISPORT}":"6379"}, { "{#REDISPORT}":"6380"} ] }
檢測是否取到redis數據的值:
/usr/local/zabbix/bin/zabbix_get -s 10.96.170.31 -k "redis_stats[6379,uptime_in_seconds]" 33168128
3,模板配置
模板導入
把Template Redis Auto Discovery導入到zabbix裏
設置正則
在 "管理" —> "一般" —> "正則表達式" ,選擇"新的正則表達式"
在 "Administration" —> "General" —> "Regular expressions" ,選擇"New regular expression"
設置如下:
NAME:Redis regex Expression type:Result is TRUE Expression:^(6380|17761|17762|18005|23581)$
在表達式(Expression)這裏把redis實例的端口寫出來,你用到哪些,或是後面可能要用到哪些都在這裏寫出來
主機關聯模板
給需要監控redis實例的主機添加模板即可監控,默認是3600秒後自動更新,可以自行修改更新間隔
模板下載:https://down.51cto.com/data/2466469