如何计算 Zabbix 一小时内 20% 的变化?

How to calculate 20% change within one hour in Zabbix?

我必须比较一个小时内两个方向(上升和下降)变化的两个值(例如项目数量)。如果金额下降或上升超过 20%,我可以使用什么公式来计算? Zabbix 计算值是否支持 if 条件支持正负变化或者是否可以绕过它?

我正在尝试写这样的东西:

{api20prod:mysql.get_active_offers.count(0)}/{api20prod:mysql.get_active_offers.count(,,,1h)}*100 > 20

但是如果 mysql.get_active_offers.count(0) 多于 mysql.get_active_offers.count(,1h) 怎么办?

您不能使用 "Simple Change" 预处理器,因为:

If the current value is smaller than the previous value, Zabbix discards that difference (stores nothing) and waits for another value.

如果您将项目设置为 1 小时的检查间隔(或在每小时的特定分钟设置间隔),您可以使用 last() function.

假设您的商品在 12:00 时等于 25,而在 13:00 时它等于 38:

  • 在 13:00 不带参数调用 last() 将 return 38
  • 在 13:00 调用 last(#2) 将 return 25

您可以使用以下方法计算每小时读数增量百分比:

100 * ({api20prod:mysql.get_active_offers.last()} - {api20prod:mysql.get_active_offers.last(#2)}) / {api20prod:mysql.get_active_offers.last(#2)}

这种语法应该在触发器或计算项中都有效,选择更适合您的:我建议使用计算项。

当然,你的触发器会有双重条件:你需要匹配"> 20" OR "< -20"

如果您不想更改项目的检查间隔,您可以使用 avg() 功能,请参阅 documentation