zabbix自动发现监控redis数据库
博客专区 > 鸿弟 的博客 > 博客详情
zabbix自动发现监控redis数据库
鸿弟 发表于1年前
zabbix自动发现监控redis数据库
  • 发表于 1年前
  • 阅读 3178
  • 收藏 128
  • 点赞 3
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

zabbix自动发现监控redis数据库与自动发现mongo,mysql的思路差不多。这次汇总完就把模板,脚本上传到git上。如果公司使用的redis都是6379端口的话,那么还是建议创建一套模板,然后链接到各个服务器即可。如果公司的redis使用的端口比较多,各个都不一样,那还是自动发现并监控redis比较方便。还是一样,先来看下监控的效果图:

上述图形是使用zabbix的筛选功能汇总在一起的图片。监控redis的客户端连接数,使用的内存,实际使用的内存和redis的内存碎片化情况。

 

下面来讲讲自动发现redis的实现,首先,还是先看下redis自动发现的配置:

探索规则配置完后,同样的在zabbix agentd端需要添加如下配置然后重启zabbix_agentd,配置如下:

UserParameter=redis.discover,python /usr/local/zabbix/discover_redis.py

其中/usr/local/zabbix/discover_redis.py自动发现的脚本内容如下 :

#coding:utf-8
import json
import commands

(status, output) = commands.getstatusoutput('''sudo netstat -tlnp|grep 'redis-server'|awk '{print $4}'|awk -F':' '{print $(NF)}'|sort -u''')
outputs = output.split('\n')
ports = []
for port in  outputs:
    ports += [{'{#REDISPORT}': port}]

print json.dumps({'data':ports},sort_keys=True,indent=4)

同样的,还是使用netstat发现正在监听的端口,visudo的权限也是需要加入netstat的权限。visudo添加如下:

zabbix ALL= NOPASSWD: /bin/netstat
Defaults:zabbix   !requiretty

 

探索完端口后,zabbix server就会以端口为参数向zabbix agentd获取数据,其中项目原型配置如下:

其中redis.status的键值需要在zabbix agentd客户端进行配置,配置如下:
UserParameter=redis.status[*],sh /usr/local/zabbix/check_redis.sh -k $1 -p $2 (如果有密码的话,加个-P参数,例如-P 'xxxx')

获取redis数据的/usr/local/zabbix/check_redis.sh脚本如下,其中-k表示获取redis info的哪个值,-p表示端口,如果redis有密码的话,-P参数也需要传入。

#!/bin/sh
while getopts "p:k:P:" opt
do
        case $opt in
                p ) redis_port=$OPTARG;;
                k ) info_key=$OPTARG;;
                P ) redis_passwd=$OPTARG;;
                ? )
                echo 'parameter is wrong!'
                exit 1;;
        esac
done
if [ ! "${redis_port}" ] || [ ! "${info_key}" ];then
        echo "parameter is null"        
        exit 1
fi

if [ "${redis_passwd}" ];then
        result=`/usr/local/bin/redis-cli -a ${redis_passwd} -p ${redis_port} info|grep "${info_key}:"|cut -d: -f2`
else
        result=`/usr/local/bin/redis-cli -p ${redis_port} info|grep "${info_key}:"|cut -d: -f2`
fi
echo $result

通过以上的配置,就能实现自动发现并监控redis了,监控完把数据添加到筛选里面,就能得到如图1的那张数据图。

模板见:https://git.oschina.net/zhuangweihong/ops

共有 人打赏支持
粉丝 64
博文 51
码字总数 33082
×
鸿弟
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: