8 个预测函数

以下列出的所有函数均支持:

关于函数参数的一般说明:

  • 函数参数由逗号分隔
  • 可选函数参数(或参数部分)由< >表示
  • 函数特定参数将在每个函数中单独描述
  • /host/key(sec|#num)<:time shift>参数绝不能加引号
通用参数
  • /host/key 是引用主机监控项历史数据的函数中常见的必需第一个参数
  • (sec|#num)<:time shift> 是引用主机监控项历史数据的函数中常见的第二个参数,其中:
    • sec - 最大评估周期(以秒为单位,可使用suffixes),或
    • #num - 最新采集值中的最大评估周期(如果前面带有井号标记)
    • 时间偏移(可选)允许将评估点回溯到过去时间。关于指定时间偏移的详细信息,请参阅时间偏移

预测函数

功能
Description 功能特定参数 备注
forecast (/host/key,(sec\ #num)<:时间偏移>,时间,<拟合>,<模式>)
Future value, max, min, delta or avg of the item. 参见通用参数.

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

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

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

注意:
linear为默认值,polynomial1等同于linear

mode (可选;必须使用双引号) - 所需输出类型

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

注意:
value估算now + time时刻的监控项值
maxmindeltaavg研究nownow + time区间内的监控项估值
支持的值类型:float, int

若返回值大于1.7976931348623157E+308或小于-1.7976931348623157E+308,将分别截断至1.7976931348623157E+308或-1.7976931348623157E+308。

仅在表达式误用(错误的监控项类型、无效参数)时变为不支持状态,其他错误情况下返回-1。

示例:
=> forecast(/主机/key,#10,1h) → 基于最近10个值预测1小时后的监控项值
=> forecast(/主机/key,1h,30m) → 基于最近1小时数据预测30分钟后的监控项值
=> forecast(/主机/key,1h:now-1d,12h) → 基于1天前的1小时数据预测12小时后的监控项值
=> forecast(/主机/key,1h,10m,"exponential") → 基于最近1小时数据和指数函数预测10分钟后的监控项值
=> forecast(/主机/key,1h,2h,"polynomial3","max") → 基于最近1小时数据和三次多项式预测未来2小时内监控项可能达到的最大值
=> forecast(/主机/key,#2,-20m) → 基于最近2个值估算20分钟前的监控项值(相比last()函数更精确,尤其当监控项更新频率较低时,例如每小时一次)

另见predictive trigger functions上的补充信息。
timeleft (/host/key,(sec\ #num)<:时间偏移>,阈值,<拟合>)
Time in seconds needed for an item to reach a specified threshold. 参见通用参数.

threshold - 需达到的阈值(可使用unit suffixes

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

若返回值大于1.7976931348623157E+308,则返回值截断为1.7976931348623157E+308.

当无法达到阈值时返回1.7976931348623157E+308.

仅在表达式中误用(错误的监控项类型、无效参数)时会变为不支持状态,其他错误情况下返回-1.

示例:
=> timeleft(/主机/key,#10,0) → 基于最近10个值,监控项值达到零所需时间
=> timeleft(/主机/key,1h,100) → 基于最近一小时数据,监控项值达到100所需时间
=> timeleft(/主机/key,1h:now-1d,100) → 基于一天前一小时数据,监控项值达到100所需时间
=> timeleft(/主机/key,1h,200,"polynomial2") → 基于最近一小时数据且假设监控项呈二次多项式变化,监控项值达到200所需时间
另见predictive trigger functions的附加信息.