对于多实例部署的tomcat、redis等应用,可以利用zabbix的low level discovery功能来实现监控,减少重复操作。
 注:Zabbix版本: Zabbix 3.0.2
一、服务端配置
1、创建模板
模板名称: Template_Redis_Monitor
 
2、创建自动发现规则
给已创建好的模板Template_Redis_Monitor添加自动发现规则。
 
 
 
3、添加监控项原型
从上面截图可以看到,我已经创建了4个,具体如下:
 
看看其中一个:
 
再来看看主机关联模板后的监控项:
 
二、客户端配置
zabbix_agentd.conf配置文件添加或修改内容如下:
UnsafeUserParameters=   #允许zabbix用户运行root命令
UserParameter=redis.discovery,/data/zabbix/externalscripts/redis_port.py #获取json格式数据,上报端口
UserParameter=redis[*],/data/zabbix/externalscripts/redis_stats.sh $ $ #自定义Key值

用到的两个脚本内容如下:

发现端口的脚本:

# cat redis_port.py
#!/usr/bin/env python
import os
import json
p=os.popen("""sudo netstat -anp|awk -F: '/redis-server/&&/LISTEN/{sub(/ .*/,"",$2);if($2)print $2}' """)
ports = []
for port in p.readlines():
r = os.path.basename(port.strip())
ports += [{'{#REDISPORT}':r}]
print json.dumps({'data':ports},sort_keys=True,indent=,separators=(',',':'))

获取监控数据的脚本:

# cat redis_stats.sh
#!/bin/bash
METRIC="$1"
PORT="${2:-6379}"
CACHE_FILE="/data/zabbix/externalscripts/redis_$PORT.cache"
redis-cli -p ${PORT} -a 'USLF93SUVwtSF$$#@W' info > ${CACHE_FILE} >/dev/null || exit
awk -F'[:,]+' '/'"${METRIC}"':/{gsub(/^[^0-9]+/,"",$2);print $2}' ${CACHE_FILE}
三、测试
在zabbix_server上进行测试,执行以下命令:
zabbix_get -s 客户端IP -k redis.discovery

客户端redis两个实例端口为6380和6444,可以看到自动发现端口成功!
测试是否可以获取数据:
获取数据成功!
最后可以创建图形,查看数据:
 
其它问题:zabbix_agentd是zabbix用户启动的,默认不能执行netstat -p等命令,因此可以配置sudo解决。
也可以使用chmod +s /bin/netstat进行解决。

zabbix监控redis多实例(low level discovery)的更多相关文章

  1. zabbix监控redis多实例cpu mem-自动发现

    1.自动发现实例端口脚本,用于zbx item prototypes #!/bin/bash REDIS_PORT=`ps aux |grep redis-server | grep -v 'grep ...

  2. Zabbix监控Low level discovery实时监控网站URL状态

    今天我们来聊一聊Low level discovery这个功能,我们为什么要用到loe level discovery这个功能呢? 很多时候,在使用zabbix监控一些东西,需要对类似于Itens进行 ...

  3. zabbix(10)自动发现规则(low level discovery)

    1.概念 在配置Iterms的过程中,有时候需要对类似的Iterms进行添加,这些Iterms具有共同的特征,表现为某些特定的参数是变量,而其他设置都是一样的,例如:一个程序有多个端口,而需要对端口配 ...

  4. Zabbix监控redis status

    概述 zabbix采用Trapper方式监控redis status 原理 redis-cli info命令得到redis服务器的统计信息,脚本对信息分两部分处理: (1)# Keyspace部分为Z ...

  5. 01:zabbix监控redis

    一.zabbix 自动发现并监控redis多实例 1.1 编写脚本 1.1.1 redis_low_discovery.sh 用于发现redis多实例 [root@redis02 homed]# ca ...

  6. Zabbix应用六:Zabbix监控Redis

    利用Zabbix监控Redis Zabbix监控redis就比较简单了,因为zabbix官方提供了监控redis的模版和脚本,而且脚本有nodejs和python两种,下载地址:https://git ...

  7. Zabbix 监控redis

    Zabbix 监控redis 1.监控脚本,github上的 [root@localhost ~]# cat /etc/zabbix/script/redis-status.sh #!/bin/bas ...

  8. 最新 centos7下zabbix 监控redis状态

    准备 先准备两台服务器,已经部署好了zabbix-sever和zabbix-agent zabbix-server 192.168.1.70 centos7.2 zabbix-agent 192.16 ...

  9. zabbix 监控redis python3脚本

    一:安装redis-python模块 wge  thttps://pypi.python.org/packages/source/r/redis/redis-2.9.1.tar.gz tar xf r ...

随机推荐

  1. c#泛型方法重载

    这里存在普通的方法Foo和泛型方法Foo,如果直接调用: 则会自动优先匹配对应的非泛型方法.输出如下: 但需要注意的是,这一匹配过程是在编译过程进行的,所以如果是通过其它泛型间接调用.则只会调用对应的 ...

  2. java I/O技术

    一.流的分类 Java的流类大部分都是由InputStream.OutputStream.Reader和Writer这四个抽象类派生出来的 (1)按数据流向 输入流(InputStream类和Read ...

  3. 时间处理得到UTC时间

    在工作过程遇到了时间处理的问题,因为需要统一将时间处理按照utc时间进行处理,因此,不能简单的通过系统运行直接得到时间的毫秒数,这样会在不同时区得到的值是不同的. import java.text.P ...

  4. C++类的成员初始化列表的相关问题

    在以下四中情况下,要想让程序顺利编译,必须使用成员初始化列表(member initialization list): 1,初始化一个引用成员(reference member): 2,初始化一个常量 ...

  5. 24种设计模式--原型模式【Prototype Pattern】

    今天我们来讲原型模式,这个模式的简单程度是仅次于单例模式和迭代器模式,非常简单,但是要使用好这个模式还有很多注意事项.我们通过一个例子来解释一下什么是原型模式. 现在电子账单越来越流行了,比如你的信用 ...

  6. /var子目录

    /var子目录 目录 描述 /var/log/message 日志信息,按周自动轮询 /var/spool/cron/root 定时器配置文件目录,默认按用户命名 /var/log/secure 记录 ...

  7. c语言位运算符

    C语言既具有高级语言的特点,又具有低级语言的功能. 所谓位运算是指进行二进制位的运算. C语言提供的位运算: 运算符   含义  &   按位与  |   按位或  ∧   按位异或  ∽   ...

  8. Eclipse+Tomcat WEB开发配置

    关键字:JDK,WEB,Eclipse,Tomcat OS: Windows 8.1 with update 1.下载安装JDK:http://www.oracle.com/technetwork/j ...

  9. log4N配置方式

    方式一. <log4net> <!-- 启动日志 --> <appender name="PayAppender" type="log4ne ...

  10. php的ftp类

    1.需求 了解php的ftp使用 2.例子 使用CI封装好的ftp类库 上传 $this->load->library('ftp'); $config['hostname'] = 'ftp ...