如何计算 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。
我必须比较一个小时内两个方向(上升和下降)变化的两个值(例如项目数量)。如果金额下降或上升超过 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。