本文讲述如何通过Zabbix对Redis进行监控,可自动发现Redis端口并全面监控Redis各项参数,建议zabbix-server版本高于4.0。
服务端
下载zabbix_template_redis模板及配置文件,解压后在Zabbix的模板管理页面导入模板zbx_export_templates.xml,建议根据实际情况修改监控项,比如定义自动发现的端口过滤。
客户端
需要命令支持:telnet, ss, redis-cli,且:
chmod +s /bin/netstat
编辑配置文件/etc/zabbix/zabbix_agentd.d/userparameter_redis.conf:
# discover redis port UserParameter=redis.port.discovery,sudo ss -4lpn|grep redis-server|awk -F: '{print $2}'|awk '{print $1}'| awk NF | sed -e s/^/'{"{#REDIS_PORT}": "'/g -e s/'$'/'"},'/g | tr -d \\n | sed -e s/^/'{"data":['/g -e s/',$'/]}/g UserParameter=redis.port.ping[*],(echo auth $2; echo ping ;sleep 0.1) |telnet 127.0.0.1 $1 2>/dev/null |grep 'PONG'|wc -l UserParameter=redis.info.json[*],(echo auth $2; echo info ; sleep 0.1)| telnet 127.0.0.1 $1 2>/dev/null | grep ':'| grep -v ^# | grep -v ^db | awk NF | sed -e s/:ok$/:yes/g -e s/^/'"'/g -e s/'$'/'",'/g -e s/':'/'":"'/g | tr -d \\n | sed -e s/^/'{"redis_info":{'/g -e s/',$'/}}/g UserParameter=redis.config.json[*],(echo auth $2; echo "config get *" ; sleep 0.1)| telnet 127.0.0.1 $1 2>/dev/null|sed -e '0,/^\$[0-9]/d'|sed -e '/^\$[0-9]/d'|awk '{print $NF}'|sed -e 's/^/"&/g' -e 's/$/&"/g'|sed 'N;s/\n/:/g' |sed -e s/'$'/','/g| tr -d \\n | sed -e s/^/'{"redis_config":{'/g -e s/',$'/}}/g # discover redis slave port UserParameter=redis.repl.discovery,sudo ss -4lpn|grep redis-server|awk -F: '{print $2}'|awk '{print $1}'| awk NF|while read line; do role=`(echo info ; sleep 0.1)|telnet 127.0.0.1 $line 2>/dev/null|grep 'role:slave'|awk -F ':' '{print $2}'`;if [ "$role" == "slave" ] ;then echo "SLAVE:$line"|sed -e s/^/'{"{#REDIS_PORT_'/g -e s/'$'/'"},'/g -e s/':'/'}": "'/g ; fi;done| tr -d \\n | sed -e s/^/'{"data":['/g -e s/',$'/]}/g UserParameter=redis.slaveinfo.json[*],(echo auth $2; echo info Replication; sleep 0.1)| telnet 127.0.0.1 $1 2>/dev/null | grep ':'| grep -v ^# | grep -v ^db | awk NF | sed -e s/:ok$/:yes/g -e s/^/'"'/g -e s/'$'/'",'/g -e s/':'/'":"'/g | tr -d \\n | sed -e s/^/'{"redis_slaveinfo":{'/g -e s/',$'/}}/g
为了使zabbix能正常获取数据,建议给zabbix配置免密sudo权限,如果不使用sudo,需删除userparameter_redis.conf中的sudo命令,然后自行测试。
systemctl restart zabbix-agent
最后,给主机应用redis监控模板,根据自动发现设定的时间间隔,稍后即可获取数据。
原创文章禁止转载:技术学堂 » Zabbix使用手册:监控Redis(集群)