除了开箱即用的宏supported之外,Zabbix还支持用户宏,以提高灵活性。
用户宏可以在全局、模板和主机级别定义。这些宏有一种特殊的语法:
Zabbix根据以下优先级解析宏: 1.主机级宏(先选中) 2.为主机的一级模板(即直接链接到主机的模板)定义的宏,按模板ID排序 3.为主机二级模板定义的宏,按模板ID排序 4.为主机的三级模板定义的宏,按模板ID等排序。 5.全局宏(最后选中)
换句话说,如果主机不存在宏,Zabbix将尝试在深度不断增加的主机模板中找到它。如果仍然找不到,将使用全局宏(如果存在)。
如果同一级别的多个链接模板上存在具有相同名称的宏,则将使用ID最低的模板中的宏。因此,在多个模板中使用相同名称的宏是一种配置风险。
如果Zabbix找不到宏,宏将无法解析。
宏(包括用户宏)在配置部分(例如,在触发器列表中)被设计为不可解析,以使复杂的配置更加透明。
用户宏可用于: - 项目关键参数 - 项目更新间隔和灵活间隔 - 触发器名称和描述 - 触发器表达式参数和常量(参见示例) - 许多其他位置-请参阅完整列表
要定义用户宏,请转到前端中的相应位置:
如果用户宏用于模板中的监控项或触发器,建议将该宏添加到模板中,即使该宏是在全局级别定义的。这样,如果宏类型为text,则将模板导出为XML并将其导入另一个系统仍将允许其按预期工作。秘密宏的值不会导出。
用户宏具有以下属性:
参数 | 描述 |
---|---|
宏 | 宏名称。名字必须用花括号括起来,并以美元符号开头 示例:{$FRONTEND_URL}。宏名称中允许使用以下字符:A-Z(仅大写),0-9,_,. |
值 | 宏值。支持三种值类型: Text(默认)-纯文本值 Secret Text-该值用星号屏蔽,可用于保护密码或共享密钥等敏感信息 Vault secret-该值包含指向Vault secret的参考路径(如“path:key”,例如“secret/zabbix:password”) 注意当secret宏的值隐藏在视线之外时,可以通过在监控项中使用来显示该值。例如,在外部脚本中,可以使用引用秘密宏的“echo”语句向前端显示宏值,因为Zabbix服务器可以访问真正的宏值 要选择值类型,请单击值输入字段末尾的按钮: 图标表示文本宏 图标表示密文宏。悬停时,值字段将转换为按钮,用于输入宏的新值(要退出而不保存新值,请单击向后箭头() 图标表示秘密vault宏 用户宏值的最大长度为2048个字符(在5.2.0之前的版本中为255个字符) |
Description | 用于提供有关此宏的更多信息的文本字段 |
包含秘密宏的URLs将无法工作,因为其中的宏将解析为“*******”。
在触发器表达式中,用户宏将解析是否引用参数或常量。如果引用主机、监控项键、函数、运算符或其他触发器表达式,则它们将不会解析。不能在触发器表达式中使用秘密宏。
在“SSH daemon 状态”项键中使用主机级宏:net.tcp.service[ssh,,{$SSH_PORT}]
此项可以分配给多个主机,前提是{$SSH_PORT} 在这些主机上定义。
在“CPU负载太高”触发器中使用主机级宏:last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}
这样的触发器将在模板上创建,而不是在个别主机。
如果要使用值的数量作为函数参数(例如,max(/host/key,#3)),在宏定义中包含如下哈希标记: SOME_PERIOD => #3
在“CPU负载太高”触发器中使用两个宏:min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
注意宏可以作为触发函数的参数,在这个示例函数min()。
将代理不可用条件与项目更新同步间隔:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
集中配置工作时间:
1-5,09:00-18:00
;使用主机原型宏为发现的主机配置项目:
请参阅 用户宏上下文。