前文我们聊了下zabbix的基础使用,包括主机的添加、监控项、触发器、action以及告警通知的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14007342.html;今天我们来了解下zabbix的宏、模板和自定义监控项的相关话题;

  1、什么是宏?

  简单讲宏就是一个字符串变量,作用和变量作用很类似;不同的是宏它是一个常量,通常是一个固定值的替代形式;宏主要作用是方便我们配置一些经常需要修改的值,用宏替换比较方便;比如我们要监控700台nginx,其中nginx的端口有时候监听在80,有时候监听在8080,如果不使用宏,那么对应端口信息就是一个数字,如果端口发生变化我们要修改700次;有了宏我们只需要修改对应宏的值即可;

  宏的分类

  在zabbix中宏分内建宏和自定义宏,所谓内建宏就是zabbix中原生就有的宏,我们可以直接调用;自定义宏就是我们自己按照需求定义的一个宏;除了按照这种方式划分宏,我们也可以按照宏的作用范围来划分;比如定义在某一个主机之上,其作用域仅对该主机生效的宏我们叫主机宏,这种宏作用范围小,但优先级很高;除了主机宏还有模板宏,全局宏;所谓模板宏就是定义在某个模板上的宏,其作用域是针对链接了该模板的所有主机,其优先级要略小主机宏;全局宏是指作用整个zabbix的宏,其优先级最小,生效范围是zabbix上的所有调用了该宏主机;在zabbix中内建宏的格式是{全大写字母},我们在引用时,直接使用大括号+宏名就好;在上一篇博客中,我们定义脚本媒介时,就用到了三个内建的宏,{ALERT.SENDTO},这个就是一个内建宏,它代表接收邮件的地址;内建宏在官方文档中有很详细的说明,如果用到可以去官方文档查看https://www.zabbix.com/documentation/4.0/manual/appendix/macros/supported_by_location;自定义宏在定义和引用和内建宏稍有不同,自定义宏在定义和引用都需要用在大括号里用$符号+宏名;比如定义一个nginx端口的宏,我们可以写成{$NGINX_PORT};

  zabbix自定义全局宏

  提示:在Administration--->General 然后选择下拉菜单找到Macros,点击进去进入全局宏的定义页面;

  提示:这样就定义了两个全局宏,我们在添加主机监控项就可以直接调用对应的宏就可以了;

  自定义主机宏

  提示:在主机列表中找到对应主机,然后点击进入编辑主机信息的页面,找到Macros;

  自定义模板宏

  提示:在configuration--->Templates中,找对应要定义模板宏的模板,点击进入编辑模板的界面,找到Macros,添加对应的宏即可;最后点击update即可;

  2、自定义监控项

  在上一篇博客我们就了解了什么是监控项,监控项就是定义怎么去采集数据的一个key;但是我们前边用到都是内建的监控项,在zabbix上内建的监控项都是针对很通用的指标数据;在一定程度上不是很满足自己业务的监控需求,此时我们就需要自定义监控项来采集我们需要的指标数据;我们在使用监控项时,其实就是在使用一种方法或程序通过zabbix server和agent通信,在被监控主机上执行我们选定的程序或方法,程序和方法执行后得到的数据,就是监控项采集的数据,然后通过zabbix agent将采集的数据发送或响应给zabbixserver;不难理解就是在被监控端执行一段代码,然后将代码返回的结果通过agent发送或响应给zabbix server完成一次数据采集;那么我们自定义监控项就是来自定义怎么获取对应指标数据的方法;然后给这个获取对应指标数据的方法或程序用一个key表示,在zabbix上直接调用key,zabbix就会发指令给agent执行对应key说对应的程序或方法来采集数据;在zabbix中,自定义监控项我们需要自己手动写脚本或命令去获取指定的数据;然后通过配置文件的方式告诉agent;

  自定义监控项的格式

  在zabbix agent配置文件中以UserParameter=<key>,<shell command>格式来自定义监控项;通常我们都是将自定义监控项手动的写一个以.conf结尾的文件中,然后通过zabbix agent配置文件中的Include指定将其导入agent配置生效;默认/etc/zabbix/zabbix_agentd.d/目录下的所有以.conf结尾的文件都是被导入的;

  示例:自定义监控项采集node04上的内存空闲空间

[root@node04 ~]# cat /etc/zabbix/zabbix_agentd.d/mem.conf
UserParameter=node04.os.Mem.free,free |awk '/^Mem/{print $4}'
[root@node04 ~]#

  提示:以上配置表示自定义监控项的key为node04.os.Mem.free;对应采集数据的方法是执行后面对命令;

  重启zabbix agent 

[root@node04 ~]# systemctl restart zabbix-agent.service
[root@node04 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node04 ~]#

  提示:重启如果对应agent监听端口正常处于监听,说明我们的配置文件没有问题;

  在zabbix server上安装zabbix-get工具

[root@node03 ~]# yum install -y zabbix-get

  验证:在zabbix server上使用zabbix_get命令看看是否能够使用对应的key获取到数据呢?

[root@node03 ~]# zabbix_get -s 192.168.0.44 -p 10050 -k 'node04.os.Mem.free'
1594992
[root@node03 ~]# zabbix_get -s 192.168.0.44 -p 10050 -k 'node04.os.Mem.free'
1595248
[root@node03 ~]# zabbix_get -s 192.168.0.44 -p 10050 -k 'node04.os.Mem.free'
1595132
[root@node03 ~]# zabbix_get -s 192.168.0.44 -p 10050 -k 'node04.os.Mem.free'
1595008
[root@node03 ~]#

  提示:可以看到在zabbix sever上能够使用zabbix_get工具获取到node04上我们自定义监控项的值;

  配置zabbix 使用自定义监控项,周期性的检测

  提示:调用自定义监控项,直接写对应的key即可;

  提示:可以看到对应的监控项已经采集到数据了;

  自定义带参监控项

  所谓带参监控项指使用一个key,传递不同的参数,采集不同的指标;

  示例:根据传递不同参数,来采集内存总量、空闲量、buffers等值

[root@node04 ~]# cat /etc/zabbix/zabbix_agentd.d/mem.conf
UserParameter=node04.os.Mem.free,free |awk '/^Mem/{print $4}'
UserParameter=os.mem[*], awk '/^$1/ {print $$2}' /proc/meminfo
[root@node04 ~]#

  提示:这里需要说明一点,在配置文件中使用$1表示引用传递给key的第一个参数,那么对应awk中的$1就需要写成$$1来表示awk自身的参数;以上配置表示使用os.mem这个key在中括号里支持参数,传递的参数将会被后面定义的命令中的$1引用;

  重启zabbix-agent,让其配置生效

[root@node04 ~]# systemctl restart zabbix-agent.service
[root@node04 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node04 ~]#

  验证:在zabbix server 上使用zabbix_get来获取指定key是否能够获取到数据?

[root@node03 ~]# zabbix_get -s node04 -p 10050 -k 'os.mem[MemTotal]'
1867048
[root@node03 ~]# zabbix_get -s node04 -p 10050 -k 'os.mem[MemFree]'
1595552
[root@node03 ~]# zabbix_get -s node04 -p 10050 -k 'os.mem[Buffers]'
2108
[root@node03 ~]#

  提示:可以看到在zabbix server上使用zabbix_get工具,给key传递不同的参数,获取到的数据也不尽相同;我们就可以基于这个key传递不同的参数来采集对应的指标数据;

  验证:在zabbix上使用我们自定义带参监控项周期性采集数据,看看是否能够采集到数据?

  提示:添加item对应key和参数即可;

  提示:可以看到在zabbix上使用指定带参监控项也能正常的采集到数据;

  3、模板

  模板是zabbix中快速添加配置监控的一种机制;它省去了我们大量重复的配置item,触发器,graph等等操作;它是一个逻辑的概念,只有当模板链接到某个主机才会生效;在zabbix也内建了很多模板,我们添加主机时,直接连接某个模板,对应主机就会继承连接的模板上定义的所有监控配置;模板可以导出和导入,也可以模板中嵌套模板;

  模板的使用

  链接某个模板到node04

  提示:在主机列表中找到对应主机,点击对应主机名称进入编辑主机配置界面,找到Templates子菜单,选择要链接的模板,点击add后再点击updete即可;

  提示:可以看到链接了某个模板以后,对应主机上就多了很多item,触发器和graphs等等,同时在templates下也显示了链接的某班名称;

  创建模板

  提示:在configuration--->Templates菜单下找到create template按钮,点击进入创建模板的界面;

  提示:填写好对应的名称和组点击add,一个模板就创建好了;

  提示:创建好一个空模板就有点类似我们添加了一个主机,上面没有任何监控配置,我们可以像在某个主机上定义监控项,触发,graph一样的操作在模板上定义监控项,触发器等等;

  取消模板链接

  提示:找到对应主机,进入编辑主机配置界面,进入templates子菜单,选择对应模板的操作;这里有unlink和unlink and clear两个操作,unlink表示取消链接模板,但之前收集的数据并不会删除,第二个unlink add clear表示取消链接的同时删除之前收集的数据;

  导入模板

  在zabbix share这个网站上有很多模板,我们可以选择一款模板下载下来导入到本地使用

  示例:找模板监控redis的模板

  提示:找到对应的代码托管地址,然后点击进入对应地址下载模板和agent配置文件;

  提示:下载上面两个文件,.conf文件是agent配置文件,在对应主机上下载放在agentd.d目录下;模板文件是.xml格式的文件,下载到本地上传至zabbix上;

  在node04上安装redis,telnet

[root@node04 ~]# yum install redis telnet -y

  修改redis配置文件,让其监听在node04的所有可用地址上

[root@node04 ~]# grep "^bind" /etc/redis.conf
bind 0.0.0.0
[root@node04 ~]#

  启动redis

[root@node04 ~]# systemctl start redis
[root@node04 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6379 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node04 ~]#

  将配置文件导入到zabbix agent配置目录下

[root@node04 ~]# wget https://raw.githubusercontent.com/cuimingkun/zbx_tem_redis/master/userparameter_redis_lld_plus.conf -O /etc/zabbix/zabbix_agentd.d/userparameter_redis_lld_plus.conf
--2020-11-20 23:16:36-- https://raw.githubusercontent.com/cuimingkun/zbx_tem_redis/master/userparameter_redis_lld_plus.conf
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.76.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.76.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1717 (1.7K) [text/plain]
Saving to: ‘/etc/zabbix/zabbix_agentd.d/userparameter_redis_lld_plus.conf’ 100%[======================================================================>] 1,717 --.-K/s in 0.08s 2020-11-20 23:17:06 (20.8 KB/s) - ‘/etc/zabbix/zabbix_agentd.d/userparameter_redis_lld_plus.conf’ saved [1717/1717] [root@node04 ~]# ll /etc/zabbix/zabbix_agentd.d/userparameter_redis_lld_plus.conf
-rw-r--r-- 1 root root 1717 Nov 20 23:17 /etc/zabbix/zabbix_agentd.d/userparameter_redis_lld_plus.conf
[root@node04 ~]#

  修改zabbix agent配置文件和unit file,允许zabbix agent 以root身份运行

[root@node04 ~]# grep "^AllowRoot" /etc/zabbix/zabbix_agentd.conf
AllowRoot=1
[root@node04 ~]# grep "^[User|Group]" /etc/systemd/system/multi-user.target.wants/zabbix-agent.service
User=root
Group=root
[root@node04 ~]#

  重启zabbix_agent

[root@node04 ~]# systemctl daemon-reload
[root@node04 ~]# systemctl restart zabbix-agent.service
[root@node04 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6379 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node04 ~]#

  在zabbix web gui导入模板

  提示:在configuration--->Templates菜单下找到Import,点击进入导入模板的界面;

  提示:选择下载的模板,然后点击Import即可;

  查看导入的模板

  提示:可以看到我们的模板已经导入成功;

  链接导入的模板到node04,看看是否能够采集到对应的数据呢?

  提示:可以看到对应主机链接模板以后,多了两个自动发现的配置;其他的监控项,触发器都没有变,这是因为它这个模板是自动发现的配置,等它扫描完配置,对应的监控配置都会自动应用上去;

  查看是否能够采集到数据呢?

  提示:这个扫描配置和采集数据的过程稍微有点长,要耐心多等一会;

  现在查看主机列表,看看对应监控项和其他监控配置是否有变化呢?

  提示:可以看到现在就多了很多监控配置;好了从互联网下载的模板已经成功导入到zabbix并成功采集到数据;

分布式监控系统之Zabbix宏、模板和自定义item的更多相关文章

  1. 分布式监控系统之Zabbix基础使用

    前文我们了解了分布式监控系统zabbix的相关组件的作用和zabbix的部署,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13997582.html:今天我们 ...

  2. 分布式监控系统之Zabbix基础

    1.为什么要使用监控系统? 我们知道一个系统不管怎么讲它都会出故障,我们为了保证线上业务的最大化的可用性,通常我们要给关键业务做高可用:做高可用的目的是为了让故障发生时,能够有一个备用的解决方案,将故 ...

  3. 分布式监控系统之Zabbix网络发现

    前文我们了解了zabbix的宏,自定义item和模板的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14013331.html:今天我们来了解下zab ...

  4. 分布式监控系统之Zabbix主动、被动及web监控

    前文我们了解了zabbix的网络发现功能,以及结合action实现自动发现主机并将主机添加到zabbix hosts中,链接指定模板进行监控:回顾请参考https://www.cnblogs.com/ ...

  5. 分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据

    前文我们了解了zabbix的被动.主动以及web监控相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14024212.html:今天我们来了解下zabb ...

  6. 分布式监控系统之Zabbix proxy

    前文我们了解了zabbix 使用snmp和jmx信道采集数据的相关使用配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14029864.html:今天我们来 ...

  7. Zabbix分布式监控系统实践

    https://www.zabbix.com/wiki/howto/install/Ubuntu/ubuntuinstall 环境介绍OS: Ubuntu 10.10 Server 64-bitSer ...

  8. 分布式监控系统Zabbix3.2给异常添加邮件报警

    在前一篇 分布式监控系统Zabbix3.2跳坑指南 中已安装好服务端和客户端,此处客户端是被监控的服务器,可能有上百台服务器.监控的目的一个是可以查看历史状态,可以对比零晨和工作区间数据的对比,以便后 ...

  9. 分布式监控系统Zabbix3.2监控数据库的连接数

    在 分布式监控系统Zabbix3.2跳坑指南 和 分布式监控系统Zabbix3.2给异常添加邮件报警 已经介绍了如何安装以及报警.此篇通过介绍监控数据库的3306端口连接数来了解如何监控其它端口和配置 ...

随机推荐

  1. SQL Server Management Studio (SSMS)单独安装,仅安装连接工具

    简单来说,SSMS是用于远程连接数据库与执行管理任务的一个工具.当安装SQL SERVER时,会默认安装.但也可以单独安装在不是数据库服务器的主机上. SQL Server Management St ...

  2. php生成器 yield 转

    一.yield介绍  文档介绍说道:生成器函数的核心是yield关键字.它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给 ...

  3. Vue企业级优雅实战05-框架开发01-登录界面

    预览本文的实现效果: # gitee git clone git@gitee.com:cloudyly/dscloudy-admin-single.git # github git clone git ...

  4. py中变量名的“秘密”

    今天突然脑子发抽,想到py里有没有指针这个概念,于是我马上google.baidu了一波,发现网上大多都在说py.java.c#这类纯面向对象的编程语言用对象的概念能完全替代指针.那么问题来了,没有指 ...

  5. 为iOS编译FFmpeg静态库

    为iOS编译FFmpeg静态库 
 环境:OS X Yosemite (版本10.10.5) Xcode (Version 7.1.1 (7B1005)) 
 
 一.资料准备: (1)ffmpeg源 ...

  6. svn右键菜单不显

    问题1: 32位svn客户端安装到64位win7机器上,出现svn右键菜单不显. 网上有些说,,选择Mufwin7,关键下拉列表没有这项. 后来有人推荐64位系统安装64svn;32位系统安装32sv ...

  7. 从一个例子入手Istio

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的Istio源码是 release 1.5. 本篇是Istio系列的第一篇,希望 ...

  8. DEM轨迹后处理

    更推荐的方法:https://www.cnblogs.com/Jay-CFD/p/12195294.html 2020.6.16更新 方法一:直接在paraview中显示 首先在输出颗粒信息的时候保存 ...

  9. MacOs/Liunx主机搭建windows平台双机调试环境

    0x00 前言 本文的主要试用对象是Mac OS/Linux用户,对于想调试windows内核相关的一些东西时,需要搭建双机调试环境的一些记录.另外对于本机是windows的用户也完全试用,windo ...

  10. 正则表达式小应用之对xml格式字符串每个字段加双引号

    通过Python对接口进行自动化后需要把xml格式的报文放到LoadRunner上进行压力测试,在pyCharm控制台打印出报文后,把报文放到LoadRunner中做了格式调整后,每个字段需要添加双引 ...