如果主机有多个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