Zabbix监控redis多实例(low level discovery)

对于多实例部署的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=1   #允许zabbix用户运行root命令
UserParameter=redis.discovery,/data/zabbix/externalscripts/redis_port.py  #获取json格式数据,上报端口
UserParameter=redis[*],/data/zabbix/externalscripts/redis_stats.sh $1 $2    #自定义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=4,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} 2>/dev/null || exit 1
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 /usr/bin/netstat进行解决。

时间: 2024-08-07 16:00:45

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

Orabbix 监控oracle表空间 Low Level Discovery

在被监控端创建脚本,此脚本用于获取表空间及空间使用信息,此脚本由oracle用户下创建 vim mornitor_tbs.sh #!/bin/bash source /home/oracle/.bash_profile sqlplus -s zabbix/zabbix > /tmp/tablespace.log<<EOF set linesize 140 pagesize 10000 col "Status" for a10 col "Name" 

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

今天我们来聊一聊Low level discovery这个功能,我们为什么要用到loe level discovery这个功能呢? 很多时候,在使用zabbix监控一些东西,需要对类似于Itens进行添加,这些items具有一些共同特性, 如果说某些特定的参数是变量,而其他设置都一样,例如:一个程序有多个端口,需要多端口进行监控并配置Itmes,还有磁盘分区,·网卡名称等等, 都是具有不确定性,如果我们配置固定的Items的话,会出现无法通用的问题,所以呢,我们需要来了解一下low level 

zabbix监控单机多实例redis脚本

zabbix监控单机多实例redis脚本 公司节省成本,充分利用资源,部署了单机多实例的线上情况.作为python新手,果断决定写个很low的脚本,然后实现监控功能. 下面这个脚本实现了,discovery自动发现,然后通过一个status监控实现了,其它监控信息的自动汇报功能.其中很low的地方在于,每个主机上的脚本必须定义本地的redis信息,比如端口,密码之类的:其实这个可以通过配置中心获取的,但是因为分享出来,所以就写了个定义的实例:还有一点大神都一般自己写socket发送数据,我这里很

Zabbix自动化之low level discovery遇到的问题

前言: 话说很久都没有写Zabbix相关的文章,今天来写写Zabbix LLD使用中遇到的问题. 广而告之: 在这里告诉大家一个好消息,本人所写的<Zabbix企业级分布式监控系统>将在8月上旬发布,关注此书的朋友可以加Q群[zabbix企业级分布式监控 271659981 (可申请加入,验证码:Zabbix监控)] 原文链接为新书<Zabbix企业级分布式监控系统>所带的附件部分,托管在github上面,不定期更新更多新内容,欢迎关注,下面正文开始. {        "

zabbix 自定义自动发现的key! low level discovery

1 意义和目的,在这里不讨论,只讨论是实现方法 2 学习的前提,你会编写常规的key! 和理解模板,item知识 系统环境 master端: [[email protected] zabbix_agentd.conf.d]# ifconfig  eth0| sed -n 's#.*inet addr:\(.*\) B.*#\1#gp' 192.168.100.10 client端 [[email protected] zabbix]# ifconfig  eth0| sed -n 's#.*in

Zabbix监控redis配置及宏的使用

本文主要介绍zabbix宏的简单使用,通过自定义脚本监控redis相关指标. zabbix监控redis需要自定义脚本去监控,网络上的脚本对于在一台机器上有多个redis实例不是很实用.于是修改了下监控脚本,使其可以接受传入端口参数. 原理:通过redis客户端连接命令,过滤出info输出的信息 一.zabbix宏介绍及定义 1.宏介绍 (1)宏是一种抽象,他根据一系列预定义的规则替换一定的文本模式,而解释器或编译器在遇到宏时会自动进行这一模式替换,可以理解为变量. (2)zabbix有许多内置

Redis 学习(Zabbix 监控Redis)

前面redis的配置文件盒常用命令.redis info信息都解释完了,接下来就是监控我们的redis了,我使用的是zabbix监控软件,所有在这里我在这里详细介绍下怎么设置zabbix来监控reids,主要分为配置zabbix插件.插件脚本.创建模板监控项.创建图形几个方面. Redis 学习(配置文件和常用命令注释): http://54snow.blog.51cto.com/2690157/1537449 Redis 学习(Redis Info详细注释): http://54snow.bl

zabbix监控redis、mysql性能、mysql状态、php-fpm性能状态

zabbix监控redis http://www.21yunwei.com/archives/4195 zabbix监控mysql性能 http://www.ttlsa.com/zabbix/zabbix-monitor-mysql/ zabbix监控mysql装态 http://www.linuxidc.com/Linux/2016-04/130436.htm zabbix监控php-fpm性能状态 http://www.ttlsa.com/zabbix/zabbix-monitor-php-

zabbix 监控 redis

通过redis自带的info命令来监控redis的健康状态,通过redis-cli PING命令来监控redis的存活状态. 附件中有监控模板,将监控脚本放在redis服务器的自定义的/scripts/zabbix_redis/下: #! /bin/bash #Name: redismontior.sh REDISCLI="/usr/bin/redis-cli" HOST="127.0.0.1" PORT=6379 if [[ $# == 1 ]];then