zabbix redis_low_level_discovery

zabbix 可以通过常见的手段监控到各种服务,通过编写脚本来获取返回值并将获取到的值通过图形来展现出来,包括(系统、服务、业务)层面。可是有些时候在一些不固定的场合监控一些不固定的服务就比较麻烦。例如,服务器运行三台 redis,端口分别是 7000 7001 7002,那么这时候如果需要监控则需要建立三个模板,分别对应不同的模板又要设置不同的 Shell Script 及 UserParameter 来监控不同端口的服务。 zabbix 有 LLD 特性(low level discovery),属于自动发现的范畴(该自动发现属于多服务的监控,是系统层面的),你会发现有很多要监控的对象大部分都是不固定的,到处都是LLD。换句话说,我们要监控的对象如果是固定的,那直接添加一个item就可以了,但是如果不是固定的,那就需要用LLD。



举几个栗子:

1、如果要监控CPU(s)使用率,这在Linux里是一个固定的值,添加一个item就可以。

如果要监控每个cpu的使用率,这就需要LLD了,因为每个机器的cpu个数都不一样,我们需要先发现cpu个数,在监控每个cpu的使用率。

2、每个机器的分区也不一样,需要用到LLD

3、每个交换机的网口个数也不一样,需要用到LLD



Zabbix官方其实早就想到了这点,为我们做好了6个自动发现功能,真贴心

discovery of file systems;(vfs.fs.discovery)

discovery of network interfaces; (net.if.discovery)

discovery of CPUs and CPU cores; (system.cpu.discovery)

discovery of SNMP OIDs; (discovery[{#MACRO1}, oid1, {#MACRO2}, oid2, …,])

discovery using ODBC SQL queries; (db.odbc.discovery[,])

discovery of Windows services. (service.discovery)

这几个自动发现已经满足我们一些基本需求了,但是我们的需求是无穷无尽的,所以我们还需要自己构建一些自动发现。

下面来讲一下 zabbix 针对 多台 redis 的自动发现。



实验环境

redis_host      redis_port      redis_pass
10.1.0.55          7000         yunjee0515
10.1.0.55          7001         yunjee0515
10.1.0.55          7002         yunjee0515

redis-7000 主要配置

daemonize yes
port 7000
bind 10.1.0.55
requirepass yunjee0515

redis-7001 主要配置

daemonize yes
port 7001
bind 10.1.0.55
requirepass yunjee0515

redis-7002 主要配置

daemonize yes
port 7002
bind 10.1.0.55
requirepass yunjee0515



zabbix redis low_level_discovery 实现过程

一、编写 zabbix redis_low_discovery.sh 脚本(zabbix shell 脚本)

#!/bin/bash
# Fucation: redis low-level discovery
# Script_name redis_low_discovery.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


二、编写 zabibx redis_low_discovery_key 文件(zabbix U、userparameter )

UserParameter=zabbix_low_discovery[*],/bin/bash /usr/local/zabbix/shell/redis_low_discovery.sh $1
UserParameter=redis_stats[*],/usr/local/redis/src/redis-cli -h 10.1.0.55 -p $1 -a yunjee0515 info|grep $2|cut -d : -f2


三、安全相关设置

允许 zabbix 用户无密码运行 netstat 及 Disable requiretty

echo "zabbix ALL=(root) NOPASSWD:/bin/netstat">>/etc/sudoers
sed -i ‘s/^Defaults.*.requiretty/#Defaults    requiretty/‘ /etc/sudoers


四、重启 zabbix_agentd 并尝试获取值

如果能够正常获取到 redis 的信息,那么在服务器端操作已经完成



五、导入 redis discovery 模板



六、设置正则表达式及匹配 low_level_discovery 过滤器

打开 zabbix 页面,选择管理 —> 一般 —> 正则表达式 —> 添加新的正则表达式

接着打开 redis discovery 模板,点击过滤器,查看过滤器匹配的正则表达式是否和前面命名的一致,如果一致,则证明成功匹配。



七、通过 zabbix 里面的动作来自动注册主机或者手动链接模板

八、重启 zabbix_agentd

在重启之后可以将自动发现的时间改小以便用于验证,我这边改为 60s 一发现

下图中可以看到图形已经展示出来



如下是效果展示图:

1、Redis Port Connections

2、Redis Port key

3、Redis Port Last_save_time

4、Redis Port Status

5、Redis Port Uptime_in_seconds

6、Redis Port Used memory

时间: 2024-11-08 22:33:55

zabbix redis_low_level_discovery的相关文章

开源监控系统中 Zabbix 和 Nagios 哪个更好?

监控平台的话,各有优劣,但基本都可以满足需求.等达到一定监控指标后,发现,最困难的是监控项目的管理. CMDB中小规模(服务器<=1k):Zabbix大规模(1k>=服务器<=10k):Nagios进行二次开发超大规模(服务器>=10k):开发适应自己平台的监控软件吧另推荐个牛逼的东西:http://prometheus.io 作者:好撑链接:https://www.zhihu.com/question/19973178/answer/131911060来源:知乎著作权归作者所有.

centos7.x之yum安装zabbix

1.安装LAMP #关闭防火墙方便测试 yum install epel-release -y systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 #安装httpd yum install httpd systemctl start httpd.service  systemctl enable httpd.service #安装数据库5.6 wget http://dev.mysql

zabbix用自带的模板监控mysql

先看一下zabbix自带的mysql模板监控项: #很少是吧,没事生产环境一般我们不用,下一篇将介绍生产环境用的另一种mysql监控. 配置zabbix自带的模板监控mysql数据库:

实现zabbix对tomcat的监控

what-zabbix 优点: 1>开源,无软件成本投入 2>Server 对设备性能要求低 3>支持设备多,自带多种监控模板 4>支持分布式集中管理,有自动发现功能,可以实现自动化监控 5>开放式接口,扩展性强,插件编写容易 6>当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动从server 端去下载需要监控的 item 然后取数据上传到 server 端.这种方式对服务器的负载比较小. 7>Api 的支持,方便与其他系统结合 缺点

zabbix切换数据库思路

zabbix切换数据库操作 1.安装mysql-server数据库 ,讲三个表结构复制过去 将schema.sql  images.sql   data.sql  数据库从zabbix服务器上复制到/root路径下面 然后导入表结构 [[email protected] ~]#  /usr/bin/mysql -uzabbix -pzabbix zabbix < /root/schema.sql Warning: Using a password on the command line inte

zabbix实例集群部署-偏向于管理使用

zabbix实例集群部署 前言:已经折腾两个礼拜了,本文侧重点不在于安装,在于使用管理.部署请看文档或者百度,,很简        单 提示:zabbix关于模板.应用集.主机组.触发器.等等命令一定要谨慎,不要随意,防止自己糊涂了 主机组: 比如说,我的主机组用的是yunce56,因为我这个项目名称叫做yunce 模板:zabbix自带的templates不够合理,我自己重新写,DIY.比如说我专门监                          控cpu,我可以写yunce-cpu-li

zabbix——远程命令

实验目的: 使用zabbix监控httpd是否正常工作,具体通过监测80端口是否开启 如果httpd没有正常工作,zabbix执行远程命令,重启httpd服务   一.准备工作: 在agent端执行 vim /etc/zabbix/zabbix_agentd.conf //配置agent,允许执行远程命令   service zabbix-agent restart //重启服务生效   cat /etc/sudoers | grep requiretty //查看sudo配置是否要求用户登录t

zabbix——计算所需数据库空间

一共有三类数据: 历史数据(每秒记录一次) 保存天数*每秒处理的数据量*86400(秒)*50Bytes(每条数据的大小) 趋势数据(每小时记录一次) 保存天数*每小时处理的数据量*24(小时)*128Bytes(每条数据的大小) 事件数据 保存天数*每秒产生的数据量*86400(秒)*130Bytes(每条数据大小) 例: 一共有1000台被监控主机,平均每台主机上有60个Item,每60秒采集一次数据.假设每台主机平均每秒产生1个事件,数据保存时间为默认,即历史数据保存90天,趋势数据保存3

47 监控系统基础及zabbix介绍、zabbix工作原理及安装配置、zabbix on CentOS7、zabbix配置

02    zabbix工作原理及安装配置 配置环境 node1192.168.1.120CentOS6.7 node2192.168.1.121CentOS6.7 1.安装配置zabbix #安装前准备 [[email protected] ~]#yum -y install mysql-server mysq [[email protected] ~]# mysql mysql> CREATE DATABASE zabbix CHARACTER SET utf8; mysql> GRANT