7 单位符号

概述

在表达式中直接使用诸如'86400'这样的大数字来表示一天的总秒数,既难以记忆又容易出错。为此,Zabbix允许通过特定的单位符号(或后缀)来简化触发器表达式和监控项键值的配置。

例如,无需输入'86400'秒,只需输入'1d'即可。这些后缀本质上充当了乘数的作用。

时间后缀

时间单位可使用:

  • s - 秒(使用时与原始值等效)
  • m - 分钟
  • h - 小时
  • d - 天
  • w - 周
  • M - 月(仅trend functions支持)
  • y - 年(仅trend functions支持)

时间后缀仅支持integer数字(例如'1h'有效,但'1,5h'或'1.5h'无效;应使用'90m'替代)

支持时间后缀的场景包括:

  • 触发器expression常量及函数参数
  • calculated item公式常量
  • zabbix[queue,<from>,<to>] internal item参数
  • aggregate calculations的时间周期参数
  • 监控项配置('更新间隔'、'自定义间隔'、'历史存储周期'和'趋势存储周期'字段)
  • 监控项原型配置('更新间隔'、'自定义间隔'、'历史存储周期'和'趋势存储周期'字段)
  • 低级发现规则配置('更新间隔'、'自定义间隔'、'保留丢失资源'字段)
  • 网络发现配置('更新间隔'字段)
  • Web场景配置('更新间隔'、'超时'字段)
  • 动作操作配置('默认操作步骤时长'、'步骤时长'字段)
  • 用户个人设置('自动logout'、'刷新'、'消息超时'字段)
  • 监控仪表板 的图表widget('时间偏移'字段)
  • 管理常规数据清理(存储周期字段)
  • 管理常规触发器显示选项('显示OK触发器时长'、'状态变更触发器闪烁时长'字段)
  • 管理常规其他('登录锁定间隔'字段及与Zabbix server通信相关字段)
  • Zabbix server的ha_set_failover_delay=delay 运行时控制选项

内存后缀

支持内存大小后缀的场合包括:

  • 触发器 expression 常量 和函数参数

  • constants of [calculated

    item](/manual/config/items/itemtypes/calculated) formulas

对于memory大小,您可以使用:

  • K - 千字节
  • M - 兆字节
  • G - 千兆字节
  • T - 太字节

监控项值后缀

后缀也可用于以人类可读格式显示数值监控项值

要启用此功能,在配置时,于单位字段中使用以下后缀之一:

  • B - 字节
  • Bps - 字节每秒
  • s - 秒,使用最多三个最大的非零时间单位显示
  • uptime - 以hh:mm:ss或N天, hh:mm:ss格式显示运行时间
  • unixtime - Unix时间戳,格式化为yyyy.mm.dd hh:mm:ss

这些后缀的解析和显示遵循以下附加规则:

  • 对于B和Bps,Zabbix采用基数为2的转换(1K = 1024B),遵循JEDEC标准

  • 对于其他单位(如Hz、W等),Zabbix采用基数为10的转换(1K = 1000)

  • 对于s(秒):

    • The format includes yyy mmm ddd hhh mmm sss ms; only up to three largest non-zero time units are displayed (e.g., 1M 10d 4h).
    • If a unit is zero and between two non-zero units, it is omitted (e.g., 10d 56m instead of 10d 0h 56m).

当使用单位时,以下乘数后缀会自动应用于监控项值:

  • K, M, G, T - 千, 兆, 吉, 太
  • P, E, Z, Y - 拍, 艾, 泽, 尧(这些仅在前端应用)

使用示例

通过使用适当的后缀,您可以编写触发器表达式 更易于理解和维护,例如这些 表达式

last(/host/system.uptime)<86400s
       avg(/host/system.cpu.load,600s)<10
       last(/host/vm.memory.size[available])<20971520

可以更改为:

last(/host/system.uptime)<1d
       avg(/host/system.cpu.load,10m)<10
       last(/host/vm.memory.size[available])<20M

监控项值 也可以进行转换,例如:

1 B → 1 B
       1024 B → 1 KB
       1536 B → 1.5 KB
       881764 B → 881.76 KB
       
       0.0000155秒 → 0.016毫秒
       
       3470400 s → 1M 10d 4h
       2606400 s → 1M 4h
       2592000 s → 1M
       2592001 s → 1M
       
       17764 运行时间 → 04:56:04
       
       86400 uptime → 1 day, 00:00:00
       881764 uptime → 10 days, 04:56:04
       32417764 uptime → 375 days, 04:56:04
       
       881764 时间戳 → 1970-01-11 04:56:04 上午

17764 Hz → 17.76 KHz 86400 Hz → 86.4 KHz 881764 Hz → 881.76 KHz 32417764 Hz → 32.42 MHz

防止单位转换

默认情况下,为监控项指定单位会导致添加乘数前缀 例如,前端会将传入值'2048'与单位'B'显示为'2KB'(更多详情,请参阅配置中的单位章节)。

若要阻止单位转换,请使用!前缀,例如 !B。为了更好地理解带与不带感叹号时的转换差异,请参考以下数值与单位示例:

1024 !B → 1024 B
       1024 B → 1 KB
       61 !s → 61 s
       61 s → 1m 1s
       0 !uptime → 0 uptime
       0 uptime → 00:00:00
       0 !! → 0 !
       0 ! → 0

在Zabbix 4.0之前,存在一个硬编码的单位停用列表 包含msrpmRPM%。该停用列表已被弃用,因此阻止此类单位转换的正确方式是 !ms!rpm!RPM!%