文章目录
zabbix宏的概述
宏的作用是便于在模板、Items、Trigger中的引用
Zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.NAME}等
详细信息请参考官方文档: https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location
为了更强的灵活性,Zabbix还支持全局宏-模板宏-主机宏级别使用用户自定义宏(user macro),用户自定义宏要使用”{$MACRO}”这种特殊的语法格式, 宏的名称只能使用大写字母、数字及下划线
宏可以应用在item keys和descriptions、Trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等。
宏的替换次序
首先是主机级别的宏;其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序;
再接着是二级模板中的宏;而后依次类推;最后检查的是全局宏;
Zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作。要使用用户自定义宏,有以下两种途径:
全局宏:Administration→General→Macros
主机或模板级别的宏:编辑相应主机或者模板的属性即可
宏的使用示例
在主机级别定义一个名为{$NETWORK_NUMBER}的宏,以定义当前主机所接受的网卡进口流量的合理大小(当然这里值根据具体情况来做,仅供一个参考)
![[外链图片转存失败(img-Lo4AkpUz-1566914604700)(9A9A554F30DB45EE8AA7455047DEE888)]](https://i-blog.csdnimg.cn/blog_migrate/39bd9cb8d8630151bfd2ac5f37b6c956.png)
![[外链图片转存失败(img-iDx2yjPz-1566914604703)(8BC7DC455B3C4A0E89E8865B2521D6D3)]](https://i-blog.csdnimg.cn/blog_migrate/35d961c23dcdfa284533c4a0ad53cf64.png)
宏的分类
- 系统宏变量 {MACRO}
- 用户自定义宏 {$MACRO}
- 自动发现宏 {#MACRO}
- 系统宏变量 {MACRO}
- 用户自定义宏 {$MACRO}
![[外链图片转存失败(img-5pFP2Dmt-1566914604704)(06D5FEFC30BE4D3CB519D470F55E7588)]](https://i-blog.csdnimg.cn/blog_migrate/3979117dbea86d01aee4b988fb4b4332.png)
- 自动发现宏 {#MACRO}
![[外链图片转存失败(img-LYXw4588-1566914604705)(BD5BF68ACDFC4AAF926AD422697B9249)]](https://i-blog.csdnimg.cn/blog_migrate/218cc3d975075ee61205c61d5a19afa5.png)
- 宏变量函数
-
- regsub(,)
- iregsub(,)
自定义宏演示
-
自定义全域宏
我们可以通过自定义全域宏来定义用户名密码,告警触发器的值等等,通过更改全域宏的值来高效的管理zabbix的触发器或者是用户名密码
![[外链图片转存失败(img-QhfGCFzM-1566914604706)(262D643695AF4D89BB0CDBCD7BB0B535)]](https://i-blog.csdnimg.cn/blog_migrate/2397c44853de698a1b1deeb9be5ce451.png)
-
自定义全域宏演示
![[外链图片转存失败(img-eKWtTY2H-1566914604709)(4E13DD62C01E45468F95DAB010BF1C24)]](https://i-blog.csdnimg.cn/blog_migrate/346f8c50eb418bd74079fe3729f32df0.png)
- 克隆之前的触发器,修改名称为
Macro测试:{$TEST_GLOBAL_ITEM}
![[外链图片转存失败(img-VYftT3gE-1566914604710)(893F42024C93481786EB372D5B69E987)]](https://i-blog.csdnimg.cn/blog_migrate/28463ea416c4636fcbeb4784ac3a576a.png)
![[外链图片转存失败(img-CKXTVotL-1566914604713)(CCC1EBE56F2F46EE8D9A94B1F97C1D29)]](https://i-blog.csdnimg.cn/blog_migrate/14ded358f5c2e76f0dbfdc5f0534899f.png)
![[外链图片转存失败(img-iI2S8Qh1-1566914604714)(536895911F8247FAA3BB4728B5C35D0D)]](https://i-blog.csdnimg.cn/blog_migrate/00aa7da37625d1d111da74f31b4eddc6.png)
-
现在全域宏触发器
{$TEST_GLOBAL_TRIGGER}的值是1,触发告警
![[外链图片转存失败(img-jhtLsdBG-1566914604715)(FFACECE4E91640A6B9872E1ECA3ABEAC)]](https://i-blog.csdnimg.cn/blog_migrate/d81c583248e250f4c54c1ade5f8a6e0b.png)
-
将全域宏触发器
{$TEST_GLOBAL_TRIGGER}的值改为0,告警解除
![[外链图片转存失败(img-M7TvTqsR-1566914604715)(F28C0297FAD1462FA8AF651730CD89C6)]](https://i-blog.csdnimg.cn/blog_migrate/105b0bf2c559ad7dfe8a61fe9908fd3d.png)
用户自定义宏在监控模板中的使用
- 在自定义模板中配置自定义宏
{$TEST_TEMPLATE_ITEM},{$TEST_TEMPLATE_TRIGGER}
![[外链图片转存失败(img-r5kQEvgR-1566914604716)(9CB75B6DA93B4EBC9E0CC0C6F7B52A6C)]](https://i-blog.csdnimg.cn/blog_migrate/94ddb80c17fd7dcde88b38be5e8008a2.png)
- 在模板中克隆一个监控项,修改其名称为
模板宏测试:{$TEST_TEMPLATE_ITEM}
![[外链图片转存失败(img-h0zMu9vc-1566914604716)(210C16A5134647FC80604D7ADB3CA627)]](https://i-blog.csdnimg.cn/blog_migrate/019aa95902548152fb56ae24493a21ff.png)
-
添加触发器
![[外链图片转存失败(img-k5T9JC0v-1566914604717)(E76B2E4FC2244FBA8459ACF1A6DF30C5)]](https://i-blog.csdnimg.cn/blog_migrate/40017086b44f5857792636c0dfc2ff93.png)
-
修改全域宏
{$TEXT_GLOBAL_TRIGGER}的值,模拟触发告警
![[外链图片转存失败(img-g8pfGABh-1566914604717)(85D1AD9BE144459898C320932B3BB8FE)]](https://i-blog.csdnimg.cn/blog_migrate/ab0ad4bb634697e9f7e3953ab8cb9ae7.png)
模板宏变量的优先级大于全域宏
- 一个监控项中连接了多个模板同时这几个模板中有同名称的宏变量,那么宏变量的值优先取编号靠前的模板宏变量值
优先级:主机宏 > 模板宏 > 全域宏
主机层面的宏变量验证
- 1.给主机上添加宏变量
{$TEST_HOST_ITEM},{$TEST_HOST_TRIGGER}
![[外链图片转存失败(img-tpbLZQmn-1566914604718)(18E30ECC8B904103AF380841B8731A60)]](https://i-blog.csdnimg.cn/blog_migrate/f08355688470ca0daf8fde3bde0c0af9.png)
- 定义个item引用主机宏
{$TEST_HOST_ITEM}
![[外链图片转存失败(img-OSc27Tnj-1566914604718)(9795DB1FA46D4EE8B3C3329E5B5A6458)]](https://i-blog.csdnimg.cn/blog_migrate/959b265ff83649ab2316b126a7f414fa.png)
-
定义个trigger引用主机宏
{$TEST_HOST_TRIGGER}
![[外链图片转存失败(img-XP1vP06O-1566914604721)(CD1DFF6FF6E2410A804DCFF185ACE117)]](https://i-blog.csdnimg.cn/blog_migrate/6b03ead2fec558c17d182a2083a33f59.png)
-
测试效果
lb-node1引用了该模板,其生效了上面定义的主机宏测试item
![[外链图片转存失败(img-uyd5iSnZ-1566914604722)(82B74359F44A48DB9342C174B58B6730)]](https://i-blog.csdnimg.cn/blog_migrate/8186ff1e2087c28ae32b3823a8cc4ab5.png)
还测试生效了主机宏trigger
![[外链图片转存失败(img-ymMqCQbC-1566914604722)(EC865E250778466D9B132DF87E4B98D9)]](https://i-blog.csdnimg.cn/blog_migrate/d915b1fa0c0508eb278eb48054ef81fb.png)
-
2.给全域宏、模板宏和主机宏都定义一个相同的
{$TEST_PRIORITY_ITEM2}宏变量,观察到主机的宏变量优先级最高
![[外链图片转存失败(img-SXMGd42j-1566914604723)(BDA5B97C2A3945EBBA66067E0B87A71B)]](https://i-blog.csdnimg.cn/blog_migrate/0e179fb153bd430c8dfb67f31b5f0ec6.png)
-
在模板里定义一个监控项,观测到模板里生效的是模板宏的值
![[外链图片转存失败(img-WnWCBfXU-1566914604728)(80EEE75A4DF44A6E840C13A116E1D25F)][外链图片转存失败(img-XSoTnJN1-1566914604728)(0833EBADC6B84A27B7B6B0FBBA514A83)]](https://i-blog.csdnimg.cn/blog_migrate/e8e1935301c5f43943db8cdee687d09b.png)
-
在主机的监控项上生效的是主机宏的值
![[外链图片转存失败(img-MHoxLAdy-1566914604729)(8E0EF31A53D44D3BA6FABE73BC876C82)]](https://i-blog.csdnimg.cn/blog_migrate/bc5ebc5a1280c5c374d3e3f3c413f534.png)
自动发现宏的演示
配置低级别自动发现的步骤
- 配置自动发现监控项
Discovery rules(根据脚本或命令生成低级别的自动发现宏变量) - 定义item原型
Item prototypes(主要利用低级别自动发现产生的变量,来动态的创建监控项、触发器、图形)
实战演示低级别自动发现的配置管理
- 演示内容:自动发现服务器本地的监听的端口,并且将这些端口进行自动化的监控和告警
- 配置agent客户端
[root@lb-node2 /etc/zabbix]# vim zabbix_agentd.d/userparameter_ports.conf
UserParameter=listen.ports.discovery,python /etc/zabbix/scripts/listen_ports.py
- 编写获取服务端口的脚本
listen_ports.py
#!/usr/bin/python
import os
import json
cmd=os.popen("""netstat -lntp|grep -v rpc|awk -F "[ :]+" '{if($4 ~ /0.0.0.0/ || $4 ~ /127.0.0.1/) print $5}'""")
ports=[]
for port in cmd.readlines():
r=port.strip()
ports += [{'{#PORT}':r}]
print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))
- 配置测试的监控模板
![[外链图片转存失败(img-QLUxxSmp-1566914604729)(2741E0FDD0204527A8C9C8F9ED5D880D)][外链图片转存失败(img-1CqKjbBq-1566914604731)(51439D26F27B4370A24F2E98491A3078)]](https://i-blog.csdnimg.cn/blog_migrate/2327709746ea41ce88707b3f5631597d.png)
- 设置zabbix权限
默认zabbix-agent使用zabbix用户启动,为了可以是zabbix执行脚本,我们修改他的权限,给他提升权限sudovi
- 两种方法
-
提升sudo权限
[root@lb-node2 ~]# visudo
…
zabbix ALL=NOPASSWD ALL -
修改zabbix配置,使zabbix-agent以root用户运行(修改配置后要重启agent)
sed -i 's@# AllowRoot=0@AllowRoot=1@g' /etc/zabbix/zabbix_agentd.conf![[外链图片转存失败(img-H5PkJL29-1566914604732)(BE843706B3794E69AEB08DA9CBF8D16E)]](https://i-blog.csdnimg.cn/blog_migrate/bfdf53b62e7e3b1d473df25110f075ce.png)
3. 还有一种方法:思路用root用户生成json格式的端口信息日志,然后zabbix-agent读取这个日志即可 -
- zabbix-server端测试获取agent端的端口信息
![[外链图片转存失败(img-TaKKxfB6-1566914604735)(C7BB4A82ED654AE9B82CF8DAFF5A719F)]](https://i-blog.csdnimg.cn/blog_migrate/2fcdcebf37ebcfe5b92e9b04910da21e.png)
- 自动发现规则已经创建
![[外链图片转存失败(img-s2uCqfAU-1566914604736)(9157AC32E90B4F6A8735973208979CFE)]](https://i-blog.csdnimg.cn/blog_migrate/3cfcf85d28216f179ec81e6dd1247c76.png)
- 创建监控项原型
![[外链图片转存失败(img-aKGooPoH-1566914604739)(BCE24807B4334B74A9107539606F2D33)]](https://i-blog.csdnimg.cn/blog_migrate/f9e69f6fa9b9dcdd6aceaac964abcdac.png)
![[外链图片转存失败(img-QR9Ea6tX-1566914604740)(EB0A49B772A54D4C90E52F1C90A6BF81)]](https://i-blog.csdnimg.cn/blog_migrate/99d571ef9854a5664f1f958a7eeede4b.png)
- 创建监控项触发器原型
![[外链图片转存失败(img-oxMJYwG4-1566914604741)(706D44DBE1EA40279066BC0032F4FDCC)][外链图片转存失败(img-22pgSuOB-1566914604741)(0364624C5B064CC0B869E6EE56E0ADD2)]](https://i-blog.csdnimg.cn/blog_migrate/bdeb4611f896601caf08a3c3291eb69d.png)
![[外链图片转存失败(img-W0AIq9em-1566914604744)(1A06811EC2E94AC29D1A9036309D7FC9)]](https://i-blog.csdnimg.cn/blog_migrate/9bd3740685db42db3dcf6e9b5b21dcd2.png)
![[外链图片转存失败(img-RbiiUEuD-1566914604746)(773A1139BD12419AAA6D1B92E367FFFF)]](https://i-blog.csdnimg.cn/blog_migrate/a6e8a79faf3f2768982ae9b45dba5f5d.png)
- lb-node1主机上自动发现监听端口实现了

- 并且监听的端口都有值了
![[外链图片转存失败(img-zCcMriyw-1566914604747)(376B1358C0804399B2871EDE8D206764)]](https://i-blog.csdnimg.cn/blog_migrate/9439c239b1bc537cdec32143e95a3cf3.png)
- 测试关闭80端口,zabbix-agent触发告警
![[外链图片转存失败(img-yrSCa9YA-1566914604752)(32674C681C9D494BB16C74C4FB63BCC5)]](https://i-blog.csdnimg.cn/blog_migrate/f331bc1155cca6c00ca8f44eefee8548.png)
本文深入讲解Zabbix宏的概述、分类、使用示例及其在监控模板中的应用。介绍宏的替换次序,演示用户自定义宏、自动发现宏的配置与管理。探讨不同级别宏变量的优先级和实战演示。

254

被折叠的 条评论
为什么被折叠?



