5 趋势函数

趋势函数与history functions不同,使用保留趋势数据数据进行计算。

趋势数据存储每小时聚合值。趋势函数利用这些每小时平均值,因此适用于长期分析。

趋势函数结果会被缓存,相同参数多次调用同一函数时仅从数据库获取一次信息。趋势函数缓存由TrendFunctionCacheSize服务器参数控制。

仅引用趋势函数的触发器将按照表达式中最小时间周期进行评估。例如:

trendavg(/主机/key,1d:now/d) > 1 或 trendavg(/主机/key2,1w:now/w) > 2

将每天评估一次。若触发器同时包含趋势和历史函数(或date and time及/或nodata()函数),则根据计算时间规则计算。

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

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

  • 函数参数用逗号分隔
  • 可选参数(或参数部分)用< >表示
  • 函数特定参数详见各函数说明
  • /host/keytime period:time shift参数禁止使用引号
通用参数
  • /host/key 是常见的必选第一个参数
  • time period:time shift 是常见的第二个参数,其中:
    • 时间范围 - 时间段(最小为'1h'),定义为<N><时间单位>,其中N表示时间单位数量,time unit表示时间单位:h(小时)、d(天)、w(周)、M(月)或y(年)
    • 时间偏移 - 时间段偏移量(参见函数示例)

趋势函数

函数
Description 函数特定参数 说明
baselinedev (/host/key,data period:time shift,season_unit,num_seasons)
Returns the number of deviations (by stddevpop algorithm) between the last data period and the same data periods in preceding seasons. data period - 季节内的数据采集周期,格式为<N><时间单位>,其中
N - 时间单位数量
time unit - h(小时)、d(天)、w(周)、M(月)或y(年),必须小于等于季节长度

时间偏移 - 时间段偏移量(参见示例)

season_unit - 单个季节的持续时间(h,d,w,M,y),不能小于数据周期

num_seasons - 要评估的季节数量
示例:
=> baselinedev(/主机/key,1d:now/d,"M",6) → 计算前一天与前6个月同一天之间的标准差(总体)。如果前几个月不存在该日期,则使用该月最后一天(例如7月31将与1月31、2月28...6月30对比分析)
=> baselinedev(/主机/key,1h:now/h,"d",10) → 计算前1小时与过去10天内相同时段的标准差
baselinewma (/host/key,data period:time shift,season_unit,num_seasons)
Calculates the baseline by averaging data from the same timeframe in multiple equal time periods ('seasons') using the weighted moving average algorithm. data period - 季节内的数据采集周期,格式为<N><时间单位>,其中
N - 时间单位数量
time unit - h(小时)、d(天)、w(周)、M(月)或y(年),必须小于等于季节长度

时间偏移 - 时间段偏移量,定义数据采集时间范围的结束季节(参见示例)

season_unit - 单个季节的持续时间(h,d,w,M,y),不能小于数据周期

num_seasons - 要评估的季节数量
示例:
=> baselinewma(/主机/key,1h:now/h,"d",3) → 基于昨天结束的3天周期内最后完整小时计算基线。如果当前是周一13:30,将分析周五、周六、周日12:00-12:59的数据
=> baselinewma(/主机/key,2h:now/h,"d",3) → 基于昨天结束的3天周期内最后两小时计算基线
=> baselinewma(/主机/key,1d:now/d,"M",4) → 基于上个月之前4个月中与"昨天"同日的日期计算基线
trendavg (/host/key,time period:time shift)
Average of trend values within the defined time period. 参见通用参数 示例:
=> trendavg(/主机/key,1h:now/h) → 前一小时的平均值(如12:00-13:00)
=> trendavg(/主机/key,1h:now/h-1h) → 两小时前的平均值
=> trendavg(/主机/key,1M:now/M-1y) → 一年前上个月的平均值
trendcount (/host/key,time period:time shift)
Number of successfully retrieved history values used to calculate the trend value within the defined time period. 参见通用参数 示例:
=> trendcount(/主机/key,1h:now/h) → 前一小时的计数
=> trendcount(/主机/key,1h:now/h-1h) → 两小时前的计数
trendmax (/host/key,time period:time shift)
The maximum in trend values within the defined time period. 参见通用参数 示例:
=> trendmax(/主机/key,1h:now/h) → 前一小时的最大值
=> trendmax(/主机/key,1h:now/h) - trendmin(/主机/key,1h:now/h) → 计算最大值与最小值的差值(趋势增量)
trendmin (/host/key,time period:time shift)
The minimum in trend values within the defined time period. 参见通用参数 示例:
=> trendmin(/主机/key,1h:now/h) → 前一小时的最小值
=> trendmin(/主机/key,1M:now/M-1y) → 一年前上个月的最小值
trendstl (/host/key,eval period:time shift,detection period,season,<deviations>,<devalg>,<s_window>)
Returns the rate of anomalies during the detection period - a decimal value between 0 and 1 that is ((the number of anomaly values)/(total number of values)). eval period - 待分解的时间段(最小'1h'),格式为<N><时间单位>,其中
N - 时间单位数量
time unit - h(小时)、d(天)、w(周)、M(月)或y(年)

时间偏移 - 时间段偏移量

detection period - 评估时间段结束前用于计算异常的时间段(最小'1h',不能长于评估周期)

season - 预期出现重复模式的最短时间段(最小'2h')

deviations - 视为异常的偏差数(可小数,默认3)

devalg - 偏差算法(需双引号),可选stddevpopstddevsampmad(默认)

s_window - 季节性提取的loess窗口跨度(默认10*评估周期条目数+1)
示例:
=> trendstl(/主机/key,100h:now/h,10h,2h) → 分析最近100小时趋势数据
=> trendstl(/主机/key,1M:now/M-1y,1d,2h,,"stddevsamp") → 分析一年前上个月的数据
trendsum (/host/key,time period:time shift)
Sum of trend values within the defined time period. 参见通用参数 示例:
=> trendsum(/主机/key,1h:now/h) → 前一小时的总和
=> trendsum(/主机/key,1M:now/M-1y) → 一年前上个月的总和