1: 在zabbix_agentd端编写自动发现的脚本,主要是自动发现redis的监控端口,脚本如下:
vim /usr/local/zabbix/zabbix_discover_redis.sh
#!/bin/sh
#zhuangweihong 20160419 zabbix discover redis
res=`sudo ss -tulnp|grep redis|awk ‘{print $(NF-2)}‘|awk -F‘:‘ ‘{print $(NF)}‘|sort -u`
if [[ -z "$res" ]];then
echo "redis has not find"
exit 2
fi
count=`echo "$res"|wc -l`
if [ $count -eq 0 ];then
echo "redis has not find"
exit 2
fi
printf ‘{\n‘
printf ‘\t"data":[\n‘
mycount=1
echo "$res"|while read line;do
if [ $count -eq $mycount ];then
printf "\t\t\t{\"{#REDISPORT}\":\"$line\"}\n"
else
printf "\t\t\t{\"{#REDISPORT}\":\"$line\"},\n"
let "mycount++"
fi
done
printf ‘\t]\n‘
printf ‘}\n‘
exit 0
自动发现脚本需要注意的地方:
1: visudo zabbix用户需要ss的运行权限,配置如下,visudo:
zabbix ALL= NOPASSWD: /usr/sbin/ss
Defaults:zabbix !requiretty
2: 在zabbix_agentd端配置如下:
UserParameter=zabbix.discovery.redis,/usr/local/zabbix/zabbix_discover_redis.sh
UserParameter=redis.status[*],redis-cli -p $1 info|grep "$2:"|cut -d: -f2
配置需要注意的地方:
1:zabbix_discover_redis.sh zabbix需要有执行权限
2:redis server没设置密码的情况,不然一般得再加个验证的。
3:配置完后重启zabbix_agentd
3: 在zabbix server的网页配置建一个模板,名称如:Template Redis Discovery Service
4: 创建一条发现规则:名称为:Redis Discovery,键值配置:zabbix.discovery.redis。
5: 创建项目原型,名称和对应的键值如下:
{#REDISPORT}:Redis Connected Clients redis.status[{#REDISPORT},connected_clients]
{#REDISPORT}:Redis mem_fragmentation_ratio redis.status[{#REDISPORT},mem_fragmentation_ratio]
{#REDISPORT}:Redis Port Check net.tcp.service[tcp,,{#REDISPORT}]
{#REDISPORT}:Redis used_memory .redis.status[{#REDISPORT},used_memory]
{#REDISPORT}:Redis used_memory_rss .redis.status[{#REDISPORT},used_memory_rss]
分别监控redis的客户端连接数、内存碎片、redis端口存活检测。
6: 创建触发器:
1: 针对端口检查
2: 针对连接的client数量,依赖于端口检查
3: 针对碎片化,依赖于端口检查
7: 创建图形原型:
1: 连接的client数量
2: redis使用的内存和实际上实用的内存。