2022 Zabbix中国峰会
2022 Zabbix中国峰会

8 预测函数

此处列出的所有函数都支持:

关于函数参数的一些整体说明:

  • 函数参数用逗号分隔
  • 可选函数参数(或参数部分)由< >表示
  • 每个函数都描述了函数专用参数
  • /host/key(sec|#num)<:time shift> 参数绝不能被引用
常用参数
  • /host/key 是引用主机监控项历史记录函数的常用强制性首选参数

  • (sec|#num)<:time shift> 是引用主机监控项历史记录函数的常用强制性次选参数 ,其中:

  • sec - 以秒为单位的最大 评估周期 (可以使用时间 后缀 ),或者

  • #num - 最新收集值最大 评估范围(如果前面有#符号)

  • time shift (可选) 允许将评估点及时移回。参阅有关指定时间偏移 更多详细内容

预测函数

函数
描述 函数专用参数 注释
forecast (/host/key,(sec|#num)<:time shift>,time,<fit>,<mode>)
监控项的未来值、最大值、最小值、增量或平均值 参见常用参数.

time - 以秒为单位的预测范围(可以使用时间后缀);支持负值

fit (可选;必须双引号) - 用于拟合历史数据的函数

支持fits:
linear - 线性函数
polynomialN -N 次多项式 (1 <= N <= 6)
exponential - 指数函数
logarithmic - 对数函数
power - 幂函数

注意:
linear 是默认值,polynomial1 等价于linear

mode (可选;必须双引号) - 要求的输出

支持modes:
value - 值(默认值)
max - 最大值
min - 最小值
delta - 最大值-最小值
avg - 平均值

注意:
value 估计当前监控值now + time
max, min, deltaavg 调查监控项值评估的时间间隔nownow + time
支持的值类型:float, int

如果要返回的值大于1.7976931348623157E+308 或小于-1.7976931348623157E+308,则返回值相应裁剪为1.7976931348623157E+308 或-1.7976931348623157E+308。

仅当在表达式中误用(错误的监控项类型,无效参数)时才变得不受支持,否则在错误的情况下返回-1。

示例:
=> forecast(/host/key,#10,1h) → 根据最后10个值预测一小时内的监控项值
=> forecast(/host/key,1h,30m) → 根据最后1小时的数据预测30分钟内的监控项值
=> forecast(/host/key,1h:now-1d,12h) →根据前一天的一小时预测12小时内的监控项值
=> forecast(/host/key,1h,10m,"exponential") → 根据最后1小时的数据和指数函数预测 10分钟内的监控项值
=> forecast(/host/key,1h,2h,"polynomial3","max") → 根据最后1小时的数据和三次多项式预测未来2个小时监控项可以达到最大的值
=> forecast(/host/key,#2,-20m) → 根据最后两个值估计20分钟前的监控项值(这可能比使用last()更精确,特别是如果监控项很少更新,比如每小时一次)

另见有关预测触发器函数的附加信息。
timeleft (/host/key,(sec|#num)<:time shift>,threshold,<fit>)
监控项达到指定阈值所需的时间(以秒为单位) 参见常用参数.

threshold - 要达到的值(可以使用的单位后缀

fit (可选;必须双引号) - 见forecast()
支持的值类型:float, int

如果要返回的值大于1.7976931348623157E+308,则返回值被裁剪为1.7976931348623157E+308。

如果无法达到阈值,则返回1.7976931348623157E+308。

仅当在表达式中误用(错误的监控项类型,无效参数)时才变得不受支持,否则在错误的情况下返回 -1。

Examples:
=> timeleft(/host/key,#10,0) → 根据最后10个值,预测直到监控项值达到零的时间
=> timeleft(/host/key,1h,100) → 根据最后一小时的数据,预测直到监控项值达到100的时间
=> timeleft(/host/key,1h:now-1d,100) → 根据一天前的一小时数据,预测直到监控项值达到100的时间
=> timeleft(/host/key,1h,200,"polynomial2") →最后一小时的数据和假设该监控项的行为类似于二次多项式,预测直到监控项值达到200的时间
另见有关 预测触发器函数的附加信息。