这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

5 趋势函数

趋势函数,与历史函数相反,使用趋势数据进行计算。

趋势存储每小时的聚合值。 趋势函数使用这些小时平均值,因此对长期分析很有用。

趋势函数结果被缓存,因此对具有相同参数的同一函数的多次调用仅从数据库中获取一次信息。 趋势函数缓存由 TrendCacheSize 服务器参数控制。

引用趋势函数的触发器在表达式中的每个最小时间段评估一次。 例如,像这样的触发器

· trendavg(/host/key,1d:now/d) > 1 or trendavg(/host/key2,1w:now/w) > 2

将每天评估一次。 如果触发器同时包含趋势和历史(或基于时间)函数,则按照通常的原则计算。

此处列出的所有功能均受支持:

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

  • · 函数参数用逗号分隔
  • · 可选的函数参数(或参数部分)用<``>表示
  • · 函数特定参数随每个函数一起描述
  • · /host/keytime period:time shift 参数绝不能被引用
常用参数
  • · /host/key 是常见的强制第一个参数
  • · time period:time shift是常用的第二个参数,其中:
  • · time period - 时间段(最小'1h'),定义为<N><time unit> 其中N - 时间单位数,time unit - h(小时) , d(日),w(周),M(月)或 y(年)。
  • · time shift - 时间段偏移量(见函数示例)

趋势函数

函数
描述 函数特定参数 注释
baselinedev (/host/key,data period:time shift,season_unit,num_seasons)
返回最后一个数据周期与前几季相同数据周期之间的偏差数(通过 stddevpop 算法)。 数据周期 - 一个季节内的数据收集周期,定义为<N><time unit> 其中
N - 时间单位数
time unit - h(小时 ), d (日), w (星期), M (月) or y (年), 必须等于或小于季节

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

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

num_seasons - 要评估的季节数
示例:
=> baselinedev(/host/key,1d:now/d,"M",6) → 计算前一天与过去6个月同一天的(人口)数量标准差。 如果日期在上个月不存在,则将使用该月的最后一天(Jul,31 将根据 Jan,31、Feb,28、... June,30 进行分析)。
=> baselinedev(/host/key,1h:now/h,"d",10) → 计算前一小时与十天前该时段同一小时之间(人口)数量的标准差。
baselinewma (/host/key,data period:time shift,season_unit,num_seasons)
使用加权移动平均算法通过对多个相等时间段(“季节”)中的相同时间范围内的数据进行平均来计算基线。 数据周期 - 一个季节内的数据收集周期,定义为 <N> <time unit> 其中
N - 时间单位数
time unit - h(小时)、d(天)、w(周)、M(月)或 y(年), 必须等于或小于季节

Time shift - 时间段偏移量,定义季节中数据收集时间范围的结束(请参阅 examples)

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

num_seasons - 计算的季节数量
示例:
=> baselinewma(/host/key,1h:now/h,"d",3) → · 根据昨天结束的3天内的最后一个完整小时计算基线。 如果“now”为周一13:30,则分析周五、周六、周日12:00-12:59的数据。
=> baselinemwa(/host/key,2h:now/h,"d",3) → · 根据昨天结束的3天内的最后两个小时计算基线。 如果“now”为周一13:30,则分析周五、周六、周日10:00-11:59的数据。 ·
=> baselinewma(/host/key,1d:now/d,"M",4) → 根据最后一个完整月份之前的 4 个月中与“昨天”相同的日期计算基线。 如果要求的日期不存在,则取该月的最后一天。 如果今天是9月1日,将分析7月31日、6月30日、5月31日、4月30日的数据。
trendavg (/host/key,time period:time shift)
定义时间段内趋势值的平均值。 参见常用参数 示例:
=> trendavg(/host/key,1h:now/h ) → 前一小时的平均值(例如 12:00-13:00)
=> trendavg(/host/key,1h:now/h-1h) → 两个小时前的平均值 (11:00-12:00)
=> trendavg(/host/key,1h:now/h-2h) →三个小时前的平均值 (10:00 -11:00)
=> trendavg(/host/key,1M:now/M-1y) → 一年前上个月的平均值
trendcount (/host/key,time period:time shift)
在定义的时间段内成功检索趋势值的数量。 参见常用参数 示例:
=> trendcount(/host/key,1h:now /h) → 计算前一小时(例如 12:00-13:00)
=> trendcount(/host/key,1h:now/h-1h) → 计数两个小时前 (11:00-12:00)
=> trendcount(/host/key,1h:now/h-2h) → 计数三个小时前 (10 :00-11:00)
=> trendcount(/host/key,1M:now/M-1y) → 统计一年前的上一个月
trendmax (/host/key,time period:time shift)
定义时间段内趋势值的最大值。 参见常用参数 示例:
=> trendmax(/host/key,1h:now/ h) → 前一小时的最大值(例如 12:00-13:00)
=> trendmax(/host/key,1h:now/h) - trendmin (/host/key,1h:now/h) → 计算前一小时 (12:00-13:00) 的最大值和最小值之间的差异(趋势增量)
=> trendmax(/host/key,1h:now/h-1h) → 两个小时前的最大值 (11:00-12:00)
=> trendmax(/ host/key,1h:now/h-2h) → 三小时前最大值 (10:00-11:00)
=> trendmax(/host/key,1M :now/M-1y) → 一年前上个月的最大值
trendmin (/host/key,time period:time shift)
定义时间段内趋势值的最小值。 参见常用参数 示例:
=> trendmin(/host/key,1h:now/ h) → 前一小时的最小值(例如 12:00-13:00)
=> trendmin(/host/key,1h:now/h) - trendmin (/host/key,1h:now/h) → 计算前一小时 (12:00-13:00) 的最大值和最小值之间的差异(趋势增量)
=> trendmin(/host/key,1h:now/h-1h) → 两个小时前的最小值 (11:00-12:00)
=> trendmin(/ host/key,1h:now/h-2h) → 三小时前的最小值 (10:00-11:00)
=> trendmin(/host/key,1M :now/M-1y) → 一年前上个月的最小值
trendstl (/host/key,eval period:time shift,detection period,season,<deviations>,<devalg>,<s_window>)
返回检测期间的异常率 - 一个介于 0 和 1 之间的十进制值,即((异常值的数量)/(值的总数)) eval period - 时间段必须分解(最小“1h”),定义为 <N><time unit> 其中
N - 时间单位数
time unit - h(小时),d(天) ), w(周),M(月)或 y(年)。

Time shift - 时间段偏移(参见 examples)

detection period - eval period结束前计算异常的时间段(最小'1h',不能长于eval period),定义为<N> <时间单位> 其中
N - 时间单位数
时间单位 - h(小时)、d(天)、w(周)。

季节 - 预期重复模式(“季节”)的最短时间段(最小“2h”,不能长于评估周期,评估周期中的条目数必须大于结果 f 的两倍 requency (season/h)),定义为 <N><time unit> 其中
N - 时间单位数
time unit - h(小时)、d(天)、w (week).

deviations - 算作异常的偏差数(由 devalg 计算)(可以是小数),(必须大于等于 1,默认为 3)< br>
devalg(必须加双引号)- 偏差算法,可以是 stddevpopstddevsampmad(默认)

s_window - 用于季节性提取的黄土窗口的跨度(滞后)(默认值为 10 * 评估期间的条目数 + 1)
示例:
=> trendstl(/host/key,100h:now /h,10h,2h) → · 分析最近100小时的趋势数据,
求该时段最后10小时的异常率,
期望周期为2h,
如果评估期的剩余序列值达到该剩余序列的 MAD 的 3 个偏差值,则被视为异常
=> trendstl(/host/key,100h:now/h-10h ,100h,2h,2.1,"mad") → · 分析 100 小时的趋势数据周期,最多 10 小时前,
找到整个周期的异常率
期望周期为 2 小时,
评估周期的剩余系列值被认为是异常,如果 它们达到该剩余系列的 MAD 的 2,1 偏差值
=> trendstl(/host/key,100d:now/d-1d,10d,1d,4, ,10) → 分析一天前100天的趋势数据,
求该时段最后10d的异常率,
期望周期为1d,
余数序列值 如果评估期达到该剩余系列的 MAD 的 4 个偏差值,则被视为异常,
覆盖黄土窗口的默认跨度以进行季节性提取“10 * 评估期条目数 + 1” 跨度为 10 个滞后
=> trendstl(/host/key,1M:now/M-1y,1d,2h,,"stddevsamp") → 分析一年前一个月 前,
求那个时期最后一天的异常率
期望周期为2h,
评估期的剩余序列值如果达到该剩余序列样本标准差的3偏差值,则认为异常
trendsum (/host/key,time period:time shift)
定义时间段内的趋势值总和。 参见常用参数 示例:
=> trendsum(/host/key,1h:now/h ) → 前一小时的总和(例如 12:00-13:00)
=> trendsum(/host/key,1h:now/h-1h) → 总和 两个小时前 (11:00-12:00)
=> trendsum(/host/key,1h:now/h-2h) → 三小时前的总和 (10:00 -11:00)
=> trendsum(/host/key,1M:now/M-1y) → 一年前上个月的总和