You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zabbix 3.4触发器配置求助:结合用户宏与内存阈值

解决Zabbix 3.4触发器表达式问题

你遇到的问题主要来自两个关键点:用户宏的比较语法和内存单位的解析逻辑,再加上逻辑条件的优先级处理,我来帮你一步步修正:

问题分析

  1. 用户宏比较的语法错误:Zabbix触发器中,用户宏需要用双引号包裹后再和字符串比较,否则宏可能被解析为非字符串类型,导致匹配失败。
  2. 内存单位的解析问题:vm.memory.size[available]这个监控项返回的是字节数(纯数值),直接写<5G的话,Zabbix 3.4可能无法正确识别这个单位(部分版本对单位大小写或格式有要求),更稳妥的方式是转换成对应的字节数值。
  3. 逻辑运算优先级:虽然AND的优先级高于比较运算符,但用括号明确包裹两个条件能避免潜在的解析歧义。

修正后的触发器表达式

推荐使用以下两种写法之一:

写法1:使用字节数值(最稳妥)

("{$CLASS_A}" = "HUGE") AND ({my_test_server.vm.memory.size[available].last()} < 5368709120)
  • 5368709120是5GB对应的字节数(计算方式:5 * 1024 * 1024 * 1024)
  • 双引号包裹{$CLASS_A}确保它被当作字符串和"HUGE"做严格匹配

写法2:使用Zabbix单位(如果你的环境支持)

如果Zabbix 3.4能正确解析单位(部分环境下大写G可以被识别),也可以写成:

("{$CLASS_A}" = "HUGE") AND ({my_test_server.vm.memory.size[available].last()} < 5G)

注意:如果这个写法不生效,优先用写法1,因为单位解析可能受监控项返回格式影响。

额外验证步骤

  1. 检查用户宏的值:确认{$CLASS_A}的实际值是HUGE(无多余空格、大小写完全匹配,Zabbix字符串比较是区分大小写的)。
  2. 测试单个条件:在Zabbix的「触发器表达式测试」工具中,分别测试"{$CLASS_A}" = "HUGE"和内存条件,看是否返回预期的TRUE/FALSE。
  3. 确认监控项数据:检查vm.memory.size[available]是否正常采集到数据,返回的是纯数字(比如8589934592代表8GB)。

内容的提问来源于stack exchange,提问作者Phil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:58:05