justin 齐齐
生命在于折腾

在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 '{\n'

            printf '\t"data":[\n'

               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 '\t {\n'

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

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

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

                          printf '\t {\n'

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

                       fi

               done

                          printf '\t ]\n'

                          printf '}\n'

}

$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]"

 

 

 

然后 看数据图

 

posted on 2018-01-15 10:39  justin01  阅读(644)  评论(0编辑  收藏  举报