什么是宏

宏(Macros)是 Zabbix 中的变量机制,用于在配置中动态替换值。使用宏可以提高配置的灵活性和可维护性。


内置宏

Zabbix 提供了大量内置宏,可以在告警、触发器、监控项等场景中使用。

常用内置宏

说明
{HOST.NAME}主机名
{HOST.IP}主机 IP 地址
{HOST.DNS}主机 DNS 名称
{ITEM.NAME}监控项名称
{ITEM.KEY}监控项键值
{ITEM.VALUE}监控项当前值
{ITEM.LASTVALUE}监控项最新值
{TRIGGER.NAME}触发器名称
{TRIGGER.STATUS}触发器状态
{TRIGGER.SEVERITY}触发器严重程度
{EVENT.NAME}事件名称
{EVENT.ID}事件 ID
{EVENT.TIME}事件发生时间
{EVENT.DATE}事件发生日期
{EVENT.DURATION}事件持续时间
{EVENT.RECOVERY.TIME}事件恢复时间
{EVENT.RECOVERY.DATE}事件恢复日期

告警相关宏

说明
{ALERT.SENDTO}告警接收人
{ALERT.SUBJECT}告警主题
{ALERT.MESSAGE}告警消息内容

时间宏

Zabbix 支持使用 {$NOW} 宏获取当前时间,并支持自定义时间格式。

时间格式示例

# 标准日期格式
{$NOW:%Y-%m-%d}     # 输出示例:2023-10-05

# 紧凑日期格式
{$NOW:%Y%m%d}       # 输出示例:20231005

# 欧洲日期格式
{$NOW:%d/%m/%Y}     # 输出示例:05/10/2023

# 完整时间格式
{$NOW:%Y-%m-%d %H:%M:%S}  # 输出示例:2023-10-05 14:30:00

时间格式说明

格式符说明示例
%Y四位年份2023
%m两位月份01-12
%d两位日期01-31
%H两位小时(24小时制)00-23
%M两位分钟00-59
%S两位秒00-59

自定义宏

1. 全局宏

AdministrationGeneralMacros 中定义,对所有主机有效。

2. 模板级宏

在模板中定义,对关联该模板的所有主机有效。

3. 主机级宏

在主机配置中定义,仅对该主机有效。

4. 定义方式

{$MACRO_NAME} = macro_value

命名规则

  • 必须以 $ 开头
  • 使用大写字母
  • 使用下划线分隔单词
  • 示例:{$MYSQL_USER}{$SNMP_COMMUNITY}

使用场景

1. 告警消息模板

故障名称: {EVENT.NAME}
故障主机: {HOST.NAME} ({HOST.IP})
故障时间: {EVENT.TIME} {EVENT.DATE}
故障级别: {TRIGGER.SEVERITY}
故障详情: {ITEM.NAME}: {ITEM.VALUE}
故障ID: {EVENT.ID}

2. 恢复消息模板

故障已恢复
故障名称: {EVENT.NAME}
故障主机: {HOST.NAME}
恢复时间: {EVENT.RECOVERY.TIME} {EVENT.RECOVERY.DATE}
持续时间: {EVENT.DURATION}

3. 监控项键值参数

vfs.fs.size[{$FS_PATH},free]

4. 触发器表达式

{Template OS Linux:system.cpu.util[,iowait].last()}>{$CPU_IOWAIT_MAX}

宏的优先级

当同名宏在不同级别定义时,优先级如下(从高到低):

  1. 主机级宏
  2. 模板级宏(按模板链接顺序,后链接的优先级高)
  3. 全局宏

最后修改:2026 年 04 月 14 日
如果觉得我的文章对你有用,请随意赞赏