宏: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官方文档:
https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location
Additional support for user macros部分
宏的级别:
全局:定义全局宏,全局定义
模板:定义模板宏,在模板上定义
主机:定义主机宏,在主机上定义
宏的替换次序:
主机在使用宏上:
主机-->模板-->全局(查找顺序,优先级顺序:主机-->模板-->全局)
先在主机上查找,如果主机没有定义,然后在模板上查找,如果仍然没有定义,在全局查找
首先是主机级别的宏;
其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序;
在接着是二级模板(模板链接的模板)中的宏;而后依次类推;
最后检查的是全局宏;
zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作。
Macros使用示例:
在主机级别定义一个名为{$CPUMAXSWITCHES}的宏,以定义当前主机所接受的CPU上下文切换的合理次数
在trigger中使用该宏变量: