除了开箱即用的宏supported外,Zabbix还支持用户宏以实现更高的灵活性。
用户宏可以在全局、模板和主机级别定义。这些宏具有特殊语法:
Zabbix按照以下优先级解析宏:
换句话说,如果一个主机不存在某个宏,Zabbix将尝试在主机的逐级深层模板中查找。如果仍未找到,将使用全局宏(如果存在)。
如果同名宏存在于同一级别的多个链接模板中,将使用ID最小的模板中的宏。因此在多个模板中使用同名宏存在配置风险。
如果Zabbix无法找到宏,则该宏不会被解析。
在配置部分(例如触发器列表)中,宏(包括用户宏)按设计保持未解析状态,以使复杂配置更加透明。
用户宏可用于:
建议使用 主机宏 而不是全局宏,因为添加、更新或删除全局宏会强制对所有 主机 进行增量配置 update。有关更多信息,请参见 主动检查。
定义用户宏时,请在前端转至相应位置:
用户宏具有以下属性:
参数 | 描述 |
---|---|
Macro | 宏名称。名称必须用花括号括起,并以美元符号开头。 示例:{$FRONTEND_URL}。宏名称中允许使用的字符包括:A-Z(仅大写)、0-9、_、. |
Value | 宏值。支持三种值类型: Text(文本,默认)- 纯文本值 秘密文本 - 值使用星号掩码 vault秘密 - 值包含指向vault secret的路径/query。 要更改值类型,请点击值输入字段末尾的按钮。 用户宏值的最大长度为2048个字符。 |
Description | 用于提供有关此宏的更多信息的文本字段。 |
配置用户宏时,请注意以下上下文相关的特性:
在“SSH守护进程状态”监控项键中使用主机级别宏:
net.tcp.service[ssh,,{$SSH_PORT}]
该 监控项 可以分配给多个 主机,前提是其值为 {$SSH_PORT} 在这些 主机 上定义。
在“CPU负载过高”触发器中使用主机级别宏:
last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}
此类触发器将在模板上创建,而不是在各个主机中进行编辑。
如果您希望使用值的数量作为函数参数(例如,max(/主机/key,#3)),请在宏定义中包含井号,如下所示:SOME_PERIOD => #3
在“CPU负载过高”触发器中使用两个宏:
min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
请注意,宏可以用作触发器函数的参数,在 此示例中为函数 min()。
将 agent 不可用条件与 监控项 update 间隔同步:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
集中配置工作时间:
1-5,09:00-18:00
;使用 主机 原型宏来为发现的 主机 配置 监控项: