zabbix监控redis多实例(low level discovery)
对于多实例部署的tomcat、redis等应用,可以利用zabbix的low level discovery功能来实现监控,减少重复操作。
注:Zabbix版本: Zabbix 3.0.2
一、服务端配置
1、创建模板
模板名称: Template_Redis_Monitor
![](https://images2015.cnblogs.com/blog/611088/201605/611088-20160503153114122-2082745826.png)
2、创建自动发现规则
给已创建好的模板Template_Redis_Monitor添加自动发现规则。
![](https://images2015.cnblogs.com/blog/611088/201605/611088-20160503153144919-302123020.png)
![](https://images2015.cnblogs.com/blog/611088/201605/611088-20160503153227779-217392014.png)
![](https://images2015.cnblogs.com/blog/611088/201605/611088-20160503153247279-1567942625.png)
3、添加监控项原型
从上面截图可以看到,我已经创建了4个,具体如下:
![](https://images2015.cnblogs.com/blog/611088/201605/611088-20160503153321951-1789707984.png)
看看其中一个:
![](https://images2015.cnblogs.com/blog/611088/201605/611088-20160503153402076-1105181617.png)
再来看看主机关联模板后的监控项:
![](https://images2015.cnblogs.com/blog/611088/201605/611088-20160503154019935-1000047692.png)
二、客户端配置
zabbix_agentd.conf配置文件添加或修改内容如下:
UnsafeUserParameters=1 #允许zabbix用户运行root命令 UserParameter=redis.discovery,/data/zabbix/externalscripts/redis_port.py #获取json格式数据,上报端口 UserParameter=redis[*],/data/zabbix/externalscripts/redis_stats.sh $1 $2 #自定义Key值
用到的两个脚本内容如下:
发现端口的脚本:
# cat redis_port.py #!/usr/bin/env python import os import json p=os.popen("""sudo netstat -anp|awk -F: '/redis-server/&&/LISTEN/{sub(/ .*/,"",$2);if($2)print $2}' """) ports = [] for port in p.readlines(): r = os.path.basename(port.strip()) ports += [{'{#REDISPORT}':r}] print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))
获取监控数据的脚本:
# cat redis_stats.sh #!/bin/bash METRIC="$1" PORT="${2:-6379}" CACHE_FILE="/data/zabbix/externalscripts/redis_$PORT.cache" redis-cli -p ${PORT} -a 'USLF93SUVwtSF$$#@W' info > ${CACHE_FILE} 2>/dev/null || exit 1 awk -F'[:,]+' '/'"${METRIC}"':/{gsub(/^[^0-9]+/,"",$2);print $2}' ${CACHE_FILE}
三、测试
在zabbix_server上进行测试,执行以下命令:
zabbix_get -s 客户端IP -k redis.discovery
客户端redis两个实例端口为6380和6444,可以看到自动发现端口成功!
测试是否可以获取数据:
![](https://images2015.cnblogs.com/blog/611088/201605/611088-20160503153721919-567834967.png)
获取数据成功!
最后可以创建图形,查看数据:
![](https://images2015.cnblogs.com/blog/611088/201605/611088-20160503153754232-1240884465.png)
其它问题:zabbix_agentd是zabbix用户启动的,默认不能执行netstat -p等命令,因此可以配置sudo解决。
也可以使用chmod +s /bin/netstat进行解决。