8 预测函数

此处列出的所有函数均支持以下场景:

函数列表不包含额外说明。点击函数名称可查看完整详情。

函数 描述
forecast 监控项的终值、最大值、最小值、差值或平均值。
timeleft 监控项达到指定阈值所需的秒数。
常用参数
  • /host/key 是引用主机监控项历史数据的函数的通用必填第一个参数
  • (sec|#num)<:time shift> 是引用主机监控项历史数据的函数的通用第二个参数,其中:
    • sec - 以秒为单位的最大评估周期(可使用时间后缀),或
    • #num - 最近收集值中的最大评估范围(如果前面带有井号)
    • time shift(可选)允许将评估点向前回移。有关指定 time shift 的更多详细信息,请参见。

函数详情

关于函数参数的一些通用说明:

  • 函数参数之间用逗号分隔
  • 可选的函数参数(或参数部分)通过 < > 表示
  • 特定函数的参数会在每个函数中分别描述
  • /host/key(sec|#num)<:time shift> 参数永远不要用引号括起
forecast(/host/key,(sec|#num)<:time shift>,time,<fit>,<mode>)

监控项的未来值、最大值、最小值、差值或平均值。
支持的值类型:FloatInteger

参数:

  • 请参阅通用参数
  • time - 以秒为单位的预测时间范围(例如 160)(可以使用时间后缀(例如 30s1m));支持负值;
  • fit(可选;必须使用双引号)- 用于拟合历史数据的函数。支持的拟合函数:
    linear - 线性函数(默认)
    polynomialN - N 次多项式(1 <= N <= 6)
    exponential - 指数函数
    logarithmic - 对数函数
    power - 幂函数
    请注意,polynomial1 等同于 linear
  • mode(可选;必须使用双引号)- 所需的输出结果。支持的模式:
    value - 值(默认)
    max - 最大值
    min - 最小值
    delta - max-min
    avg - 平均值
    请注意,value 估算 now + time 时刻的监控项值;maxmindeltaavg 则计算 nownow + time 时间间隔内的监控项值估算结果。

注释:

  • 如果要返回的值大于 1.7976931348623158E+308 或小于 -1.7976931348623158E+308,则返回值将分别截取为 1.7976931348623158E+308 或 -1.7976931348623158E+308;
  • 仅当在表达式中使用不当(监控项类型错误、参数无效)时才会变为不支持,否则在发生错误时返回 -1;
  • 另请参阅预测触发器函数的其他信息。

示例:

forecast(/host/key,#10,1h) #根据最近 10 个值预测一小时后的监控项值
forecast(/host/key,1h,30m) #根据最近一小时的数据预测 30 分钟后的监控项值
forecast(/host/key,1h:now-1d,12h) #根据一天前一小时内的数据预测 12 小时后的监控项值
forecast(/host/key,1h,10m,"exponential") #根据最近一小时的数据和指数函数预测 10 分钟后的监控项值
forecast(/host/key,1h,2h,"polynomial3","max") #根据最近一小时的数据和三次(第三阶)多项式,预测监控项在未来两小时内可能达到的最大值
forecast(/host/key,#2,-20m) #根据最近两个值估算 20 分钟前的监控项值(这可能比使用 last() 更精确,尤其是在监控项更新频率较低时,例如每小时更新一次)
timeleft(/host/key,(sec|#num)<:time shift>,threshold,<fit>)

触发器 监控项 达到指定阈值所需的时间(以秒为单位)。 支持的值类型:floatinteger

参数:

评论:

  • 如果要返回的值大于 1.7976931348623158E+308,则返回值会被截断为 1.7976931348623158E+308;
  • 如果无法达到阈值,则返回 1.7976931348623158E+308;
  • 仅在表达式中被错误使用时(错误的 监控项 类型,无效参数)才会变为不支持;否则在发生错误时返回 -1;
  • 参见有关 predictive trigger functions 的附加信息。

示例:

timeleft(/主机/key,#10,0) #基于最后的 10 值,监控项 值到达零的时间
timeleft(/主机/key,1h,100) #基于最近一小时的数据,监控项值达到100所需的剩余时间
timeleft(/主机/key,1h:now-1d,100) #基于一天前一小时,监控项值达到100之前的剩余时间
timeleft(/主机/key,1h,200,"polynomial2") #基于最近一小时的数据并假设监控项的行为类似于二次(二阶)多项式,监控项值达到200之前的剩余时间

请参见 all supported functions