redis多实例监控

在ageng端创建脚本

mdkir -p /etc/zabbix/scripts

vim redis_low_discovery.sh

#/bin/bash

#Script_name redis_low_discovery.sh

redis() {

            port=($(netstat -tpln | awk -F "[ :]+" '/redis/ && /0.0.0.0/ {print $5}'))

            printf '{ '

            printf ' "data":[ '

               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 ' { '

                          printf " "{#REDISPORT}":"${port[${key}]}"}, "

                     else [[ "${key}" -eq "((${#port[@]}-1))" ]]

              socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F '=' '{print $10}'|cut -d ' ' -f 1`

                          printf ' { '

                          printf " "{#REDISPORT}":"${port[${key}]}"} "

                       fi

               done

                          printf ' ] '

                          printf '} '

}

$1

修改属主

chown -R zabbix.zabbix /etc/zabbix/scripts/

给权限

chmod 755 scripts/redis_low_discovery.sh

添加UserParameter

vim /etc/zabbix/zabbix_agentd.conf

UserParameter=zabbix_low_discovery[*],/bin/bash /etc/zabbix/scripts/redis_low_discovery.sh $1

UserParameter=redis_stats[*],(echo info; sleep 1) | telnet 127.0.0.1 $1 2>&1 |grep $2|cut -d : -f2

如果不让用telnet协议,还可以

UserParameter=redis_stats[*],/usr/local/bin/redis-cli -h 127.0.0.1 -p $1 info|grep $2|cut -d : -f2

需要开启telnet服务,没有的需要安装一个telnet

yum install telnet -y

添加完重启agent端

service zabbix-agent restart

关闭requiretty

sed -i 's/^Defaults.*.requiretty/#Defaults    requiretty/' /etc/sudoers

或者 vim /etc/sudoers  #56行

server端

使用zabbix_get获取redis键值

cd /usr/bin

./zabbix_get -s 192.168.0.11 -k "zabbix_low_discovery[redis]"

如果运行报错

那就chmod +s /bin/netstat

chmod +s 是什么意思

为了方便普通用户执行一些特权命令,SUID/SGID程序允许普通用户以root身份暂时执行该程序,并在执行结束后再恢复身份。

zabbix-server web界面导入模板以及主机连接模板,还需要设置正则等

在“管理”—> “一般”—>“正则表达式”里,选择“新的正则表达式”

设置如下:

设置正则

Redis regex

Result TRUE  = ^(6380|17761|17762|18005|23581)$

最后把模板添加到主机里面去

有的可能自动发现没有开启

检测 是否取到redis数据的值:

配置---模板---

在终端里面

cd  /usr/bin

./zabbix_get -s 192.168.0.11 -k "redis_stats[6381,uptime_in_seconds]"

./zabbix_get -s 192.168.0.11 -k "redis_stats[6380,uptime_in_seconds]"

然后 看数据图

原文地址:https://www.cnblogs.com/chenshengqun/p/8287038.html