zabbix自动发现redis端口并监控redis性能

    不得不说,我在监控redis 这里卡了有一天半的时间,zabbix_get也可以获取到数据,就是没有自动生成监控项和监控图像,后来干脆把别人的模板抛弃,自己重新建立模板和监控项,就都出来了。真是无语的很。大概因为是zabbix的版本号不一样导致的吧

这里参考的文章:

http://dl528888.blog.51cto.com/2382721/1366309

http://www.cnblogs.com/mushroom/p/4738170.html

一:客户端配置

1.自动发现redis端口的脚本,脚本要给755权限,属主是zabbix

chmod 755  /etc/zabbix/alertscripts/zabbix_discovery_redis.sh 

chown zabbix.zabbix /etc/zabbix/alertscripts/zabbix_discovery_redis.sh 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
#Fucation:mysql low-level discovery
#Script_name zabbix_discovery_redis.sh 
redis() {
            port=($(sudo 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

因为要在模板里面套用redis端口。所以脚本检测出来的端口格式必须是json

zabbix自动发现redis端口并监控redis性能

其他问题:

zabbix_agentd是zabbix用户启动的,默认不能执行netstat -p等命令,因此可以配置sudo解决,也可以使用chmod +s /bin/netstat进行解决。

这里我使用了sudo

1
2
3
4
vim /etc/sudoers
#Defaults    requiretty
Defaults:zabbix    !requiretty
zabbix  ALL=(root)      NOPASSWD:/bin/netstat

2.添加zabbix_agent配置文件

1
2
3
[root@test zabbix_agentd.conf.d]# cat /etc/zabbix/zabbix_agentd.conf.d/check_redis.conf 
UserParameter=redis.discovery[*],/etc/zabbix/alertscripts/zabbix_discovery_redis.sh $1
UserParameter=redis_stats[*],(echo info; sleep 1) | telnet 127.0.0.1 $1 2>&1 |grep $2|cut -d : -f2

测试zabbix_get是否能获取到redis数据

1
2
[root@test alertscripts]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k redis_stats[6379,connected_clients]
1

3.重启zabbix_agent

service zabbix_agentd restart


二.服务器端配置

1、创建模板

模板名称: Template_Redis_Monitor,创建应用check_redis

zabbix自动发现redis端口并监控redis性能


2、创建自动发现规则

给已创建好的模板Template_Redis_Monitor添加自动发现规则。


zabbix自动发现redis端口并监控redis性能


创建自动发现监控项


zabbix自动发现redis端口并监控redis性能


3.配置正则


zabbix自动发现redis端口并监控redis性能

zabbix自动发现redis端口并监控redis性能


 4、添加监控项原型


zabbix自动发现redis端口并监控redis性能


 5.再来看看主机关联模板后的监控项:


zabbix自动发现redis端口并监控redis性能


 6.查看监控数据图


zabbix自动发现redis端口并监控redis性能





本文转自 shouhou2581314 51CTO博客,原文链接:http://blog.51cto.com/thedream/1868574,如需转载请自行联系原作者
上一篇:微博每日数十亿级业务下的计数器如何扩展Redis?


下一篇:为什么Redis单线程却能支撑高并发