趋势函数与history functions不同,使用 用于计算的保留趋势数据数据。
趋势存储每小时的聚合值。趋势函数使用这些每小时的平均值,因此适用于长期数据分析和监控。 长期分析
趋势函数结果会被缓存,因此使用相同参数多次调用同一函数时, 仅从数据库中获取一次信息。趋势函数缓存由以下项控制: 趋势函数缓存大小 服务器参数。
引用趋势函数的触发器仅在最小时间周期内评估一次。 在表达式中。例如,像这样的触发器
每天将进行一次评估。如果触发器同时包含趋势和历史(或date and time和/或nodata())函数, 根据计算时间进行计算。
此处支持的所有功能函数列表包括:
函数列表中未包含其他信息。点击函数可查看完整详情。
函数 | 描述 |
---|---|
baselinedev | 返回最后一个数据周期与之前季节中相同数据周期之间的标准差(采用 stddevpop 算法)数量。 |
baselinewma | 通过使用加权移动平均算法,从多个相等时间段(“季节”)中相同的时间段数据计算基线。 |
trendavg | 定义时间段内趋势值的平均值。 |
trendcount | 在定义的时间段内,用于计算趋势值的成功检索历史值的数量。 |
trendmax | 定义时间段内趋势值的最大值。 |
trendmin | 定义时间周期内趋势值的最小值。 |
trendstl | 返回检测期间的异常率 — 一个介于 0 和 1 之间的十进制值,即 ((the number of anomaly values)/(total number of values)) 。 |
trendsum | 定义时间周期内趋势值的总和。 |
/host/key
是一个常见的必填第一个参数time period:time shift
是一个常见的第二个参数,其中:
N
- 时间单位的数量,time unit
- h(小时)、d(天)、w(周)、M(月)或 y(年)。关于函数参数的一些通用说明:
<
>
表示/host/key
和 time period:time shift
参数永远不要加引号返回当前数据周期与之前季节中相同数据周期之间的偏差数量(基于stddevpop算法)。
参数:
N
- 时间单位数量time unit
- 时间单位(h小时/d天/w周/M月/y年),必须小于等于季节长度示例:
baselinedev(/主机/key,1d:now/d,"M",6) #计算前一天与过去6个月中同一天的总体标准差数量。若某月不存在对应日期,则使用该月最后一天(例如7月31日将与1月31日、2月28日...6月30日进行对比)
baselinedev(/主机/key,1h:now/h,"d",10) #计算前一小时与过去十天中相同时段的总体标准差数量
使用加权移动平均算法,通过在多个相等的时间段(“季节”)内对相同时间段内的数据进行平均来计算基线。
参数:
N
- 时间单位的数量time unit
- h(小时)、d(天)、w(周)、M(月)或 y(年),必须等于或小于季节长度示例:
baselinewma(/主机/key,1h:now/h,"d",3) # 根据昨天结束的3天周期内的最后完整小时计算基线。如果“now”是星期一13:30,则将分析星期五、星期六和星期日的12:00-12:59的数据
baselinewma(/主机/key,2h:now/h,"d",3) # 根据昨天结束的3天周期内的最后两小时计算基线。如果“now”是星期一13:30,则将分析星期五、星期六和星期日的11:00-12:59的数据
baselinewma(/主机/key,1d:now/d,"M",4) # 根据上个月之前4个月中与“昨天”相同日期的日期计算基线。如果所需日期不存在,则取该月的最后一天。如果今天是9月1日,则将分析7月31日、6月30日、5月31日和4月30日的数据。
定义时间段内趋势值的平均值。
参数:
示例:
trendavg(/主机/key,1h:now/h) #前一小时的平均值(例如 12:00-13:00)
trendavg(/主机/key,1h:now/h-1h) #两小时前的平均值(11:00-12:00)
trendavg(/主机/key,1h:now/h-2h) #三小时前的平均值(10:00-11:00)
trendavg(/主机/key,1M:now/M-1y) #一年前上个月的平均值
在定义的时间段内,用于计算趋势值的成功检索历史值的数量。
参数:
示例:
trendcount(/主机/key,1h:now/h) # 上一小时的值数量(例如 12:00-13:00)
trendcount(/主机/key,1h:now/h-1h) # 两小时前的值数量(11:00-12:00)
trendcount(/主机/key,1h:now/h-2h) # 三小时前的值数量(10:00-11:00)
trendcount(/主机/key,1M:now/M-1y) # 一年前上个月的值数量
定义时间段内趋势值的最大值。
参数:
示例:
trendmax(/主机/key,1h:now/h) #前一小时的最大值(例如 12:00-13:00)
trendmax(/主机/key,1h:now/h) - trendmin(/主机/key,1h:now/h) → 计算前一小时(12:00-13:00)的最大值与最小值之差(趋势差值)
trendmax(/主机/key,1h:now/h-1h) #两小时前的最大值(11:00-12:00)
trendmax(/主机/key,1h:now/h-2h) #三小时前的最大值(10:00-11:00)
trendmax(/主机/key,1M:now/M-1y) #一年前上个月的最大值
定义时间段内趋势值的最小值。
参数:
示例:
trendmin(/主机/key,1h:now/h) #前一小时的最小值(例如 12:00-13:00)
trendmax(/主机/key,1h:now/h) - trendmin(/主机/key,1h:now/h) → 计算前一小时最大值与最小值之间的差值(趋势差值)(12:00-13:00)
trendmin(/主机/key,1h:now/h-1h) #两小时前的最小值(11:00-12:00)
trendmin(/主机/key,1h:now/h-2h) #三小时前的最小值(10:00-11:00)
trendmin(/主机/key,1M:now/M-1y) #一年前上个月的最小值
返回检测期间的异常率——介于 0 和 1 之间的十进制值,即 ((the number of anomaly values)/(total number of values))
。
参数:
N
- 时间单位的数量time unit
- h(小时)、d(天)、w(周)、M(月)或 y(年)N
- 时间单位的数量time unit
- h(小时)、d(天)、w(周)N
- 时间单位的数量time unit
- h(小时)、d(天)、w(周)示例:
trendstl(/主机/key,100h:now/h,10h,2h) #分析趋势数据的最后100小时,查找该周期最后10小时的异常率,预期周期性为2小时,如果评估周期的余数序列值达到该余数序列 MAD 的 3 偏差,则视为异常
trendstl(/主机/key,100h:now/h-10h,100h,2h,2.1,"mad") #分析100小时的趋势数据,直到10小时前,查找整个周期的异常率,预期周期性为2小时,如果评估周期的余数序列值达到该余数序列 MAD 的 2.1 偏差,则视为异常
trendstl(/主机/key,100d:now/d-1d,10d,1d,4,,10) #分析100天的趋势数据,直到1天前,查找该周期最后10天的异常率,预期周期性为1天,如果评估周期的余数序列值达到该余数序列 MAD 的 4 偏差,则视为异常,并将用于季节提取的 loess 窗口默认跨度 "10 * 评估周期中的条目数 + 1" 覆盖为 10 滞后数
trendstl(/主机/key,1M:now/M-1y,1d,2h,,"stddevsamp") #分析一年前的上个月,查找该周期最后一天的异常率,预期周期性为2小时,如果评估周期的余数序列值达到该余数序列样本标准差的 3 偏差,则视为异常
定义时间段内趋势值的总和。
参数:
示例: