宏:macro,预设的文本替换模式:

宏是一种抽象概念(Abstraction),它根据一些列预定义的规则替换一定的文本模式,而解释或编译器在遇到宏时会自动进行这一模式替换。类似地,zabbix基于宏保存预设文本模式,并且在调用时将其替换为其中的文本。


内置{MACRO}    不需要加$就可以引用:

zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGER.NAME}、{TRIGGER.EVENTS.ACK}等。

关于系统内建宏可参照zabbix官方文档:

https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

1 Macros supported by location部分


自定义{$MACRO}  需要加$才能引用:

注意:在调用和定义时都需要加$

为了更强的灵活性,zabbix还支持在全局、模板或主机级别使用用户自定义宏(user macro)

用户自定义宏使用"{$MACRO}"这种特殊的语法格式

宏可以应用在item keys和descriptions、trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等。

宏的名称只能使用大写字母、数字及下划线

用户自定义宏,有以下两种途径:

    全局宏:"Administrator-->General-->Macros"

zabbix上的宏(macro)介绍_第1张图片

主机或模板级别的宏:编辑相应主机或模板的属性即可

关于用户自定义宏可参考zabbix官方文档:

https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

Additional support for user macros部分


宏的级别:

全局:定义全局宏,全局定义

模板:定义模板宏,在模板上定义

主机:定义主机宏,在主机上定义


宏的替换次序:

主机在使用宏上:

主机-->模板-->全局(查找顺序,优先级顺序:主机-->模板-->全局)

先在主机上查找,如果主机没有定义,然后在模板上查找,如果仍然没有定义,在全局查找

首先是主机级别的宏;

其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序;

在接着是二级模板(模板链接的模板)中的宏;而后依次类推;

最后检查的是全局宏;

zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作。


Macros使用示例:

在主机级别定义一个名为{$CPUMAXSWITCHES}的宏,以定义当前主机所接受的CPU上下文切换的合理次数

zabbix上的宏(macro)介绍_第2张图片

在trigger中使用该宏变量:

zabbix上的宏(macro)介绍_第3张图片