2 用户宏
概述
用户宏可以在全局、模板和主机级别定义。这些宏有一种特殊的语法:
Zabbix根据以下优先级解析宏: 1.主机级宏(先选中) 2.为主机的一级模板(即直接链接到主机的模板)定义的宏,按模板ID排序 3.为主机二级模板定义的宏,按模板ID排序 4.为主机的三级模板定义的宏,按模板ID等排序。 5.全局宏(最后选中)
换句话说,如果主机不存在宏,Zabbix将尝试在深度不断增加的主机模板中找到它。如果仍然找不到,将使用全局宏(如果存在)。
如果同一级别的多个链接模板上存在具有相同名称的宏,则将使用ID最低的模板中的宏。因此,在多个模板中使用相同名称的宏是一种配置风险。
如果Zabbix找不到宏,宏将无法解析。
宏(包括用户宏)在配置部分(例如,在触发器列表中)被设计为不可解析,以使复杂的配置更加透明。
用户宏可用于: - 项目关键参数 - 项目更新间隔和灵活间隔 - 触发器名称和描述 - 触发器表达式参数和常量(参见) - 许多其他位置-请参阅完整列表
全局和宿主宏的常见用例
- 在多个位置使用全局宏;然后更改宏值并一键将配置更改应用于所有位置
- 利用具有主机特定属性的模板:密码、端口号、文件名、正则表达式等。
配置
要定义用户宏,请转到前端中的相应位置:
- 有关全局宏,请访问管理→ 全体的→ 宏
- 对于主机和模板级宏,请打开主机或模板属性,然后查找macros选项卡
用户宏具有以下属性:
::noteclassic 包含秘密宏的URL将无法工作,因为其中的宏将解析为“*******”。 :::
在触发器表达式中,用户宏将解析是否引用参数或常量。如果引用主机、项键、函数、运算符或其他触发器表达式,则它们将不会解析。不能在触发器表达式中使用秘密宏。
示例
示例 1
在“SSH daemon 状态”项键中使用主机级宏:
此项可以分配给多个主机,前提是{$SSH_PORT} 在这些主机上定义。
示例 2
在“CPU负载太高”触发器中使用主机级宏:
这样的触发器将在模板上创建,而不是在个别主机。
示例 3
在“CPU负载太高”触发器中使用两个宏:
注意宏可以作为触发函数的参数,在这个示例函数min()。
示例 4
将代理不可用条件与项目更新同步间隔:
- 定义 {$INTERVAL} 宏并在项目更新间隔中使用它;
- 使用 {$INTERVAL} 作为代理不可用触发器的参数:
示例 5
集中配置工作时间:
- 在 Administration → General → Working time 字段中使用它 图形界面;
- 在 Administration → User → When active 字段中使用它 媒体;
- 使用它在工作时间设置更频繁的项目轮询:
- 在时间段动作条件下使用;
- 在 Administration → General → Macros 中调整工作时间, 如果需要的话。
示例 6
使用主机原型宏为发现的主机配置项目:
- 在主机原型上定义用户宏 {$SNMPVALUE}和{#SNMPVALUE} 低级发现 宏作为值:
- 将 Generic SNMPv2 模板分配给主机原型;
- 在 Generic SNMPv2 的 SNMP OID 字段中使用 {$SNMPVALUE} 模板项。