趋势函数与history functions不同,使用保留趋势数据数据进行计算。
趋势数据存储每小时聚合值。趋势函数利用这些每小时平均值,因此适用于长期分析。
趋势函数结果会被缓存,相同参数多次调用同一函数时仅从数据库获取一次信息。趋势函数缓存由TrendFunctionCacheSize服务器参数控制。
仅引用趋势函数的触发器将按照表达式中最小时间周期进行评估。例如:
将每天评估一次。若触发器同时包含趋势和历史函数(或date and time及/或nodata()函数),则根据计算时间规则计算。
以下场景支持所有列出的函数:
关于函数参数的通用说明:
<
>
表示/host/key
和time period:time shift
参数禁止使用引号/host/key
是常见的必选第一个参数time period:time shift
是常见的第二个参数,其中:
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 - 偏差算法(需双引号),可选stddevpop、stddevsamp或mad(默认) 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) → 一年前上个月的总和 |