5 Функции трендов
Функции трендов, в отличие от функций истории, используют данные трендов для вычислений.
Тренды хранят почасовые агрегированные значения. Функции трендов используют эти почасовые средние значения и поэтому полезны для долгосрочного анализа.
Результаты функций трендов кэшируются, поэтому несколько вызовов одной и той же функции с одинаковыми параметрами получают информацию из базы данных только один раз. Кэш функций трендов управляется параметром сервера TrendFunctionCacheSize.
Триггеры, которые ссылаются только на функции трендов, вычисляются один раз за наименьший временной период в выражении. Например, триггер вида
trendavg(/host/key,1d:now/d) > 1 or trendavg(/host/key2,1w:now/w) > 2
будет вычисляться один раз в день. Если триггер содержит как функции трендов, так и функции истории (или даты и времени и/или nodata()), он вычисляется в соответствии с обычными принципами.
Все перечисленные здесь функции поддерживаются в:
Функции перечислены без дополнительной информации. Нажмите на функцию, чтобы увидеть полные сведения.
| Function | Description |
|---|---|
| baselinedev | Возвращает число отклонений (по алгоритму stddevpop) между последним периодом данных и теми же периодами данных в предыдущих сезонах. |
| baselinewma | Вычисляет базовую линию путем усреднения данных из того же временного интервала в нескольких равных временных периодах ('сезонах') с использованием алгоритма взвешенного скользящего среднего. |
| trendavg | Среднее значение трендов в пределах заданного периода времени. |
| trendcount | Количество успешно полученных значений истории, использованных для вычисления значения тренда в пределах заданного периода времени. |
| trendmax | Максимальное значение трендов в пределах заданного периода времени. |
| trendmin | Минимальное значение трендов в пределах заданного периода времени. |
| trendstl | Возвращает уровень аномалий за период обнаружения - десятичное значение от 0 до 1, равное ((the number of anomaly values)/(total number of values)). |
| trendsum | Сумма значений трендов в пределах заданного периода времени. |
Общие параметры
/узел_сети/ключявляется общим обязательным первым параметромпериод_времени:сдвиг_времениявляется общим вторым параметром, где:- период_времени — период времени (минимум «1h»), определённый как <N><единица_времени>, где
N— количество единиц времени,единица_времени— h (час), d (сутки), w (неделя), M (месяц) или y (год). - сдвиг_времени — смещение периода времени (смотрите примеры функций)
- период_времени — период времени (минимум «1h»), определённый как <N><единица_времени>, где
Подробности функций
Некоторые общие замечания о параметрах функций:
- параметры функций разделяются запятыми
- необязательные параметры функций (или части параметров) обозначаются угловыми скобками
<> - параметры, специфичные для функций, описываются с каждой функцией
- параметры
/узел_сети/ключипериод_времени:сдвиг_времениникогда не должны заключаться в кавычки
baselinedev(/узел_сети/ключ,период_данных:сдвиг_времени,сезон_ед,сезон_кол-во)
Возвращает количество стандартных отклонений (по алгоритму stddevpop, среднеквадратичное отклонение) между последним периодом данных и теми же периодами данных в предыдущие сезоны.
Параметры:
- Смотрите общие параметры
- период_данных — период сбора данных в течение сезона, определённый как <N><единица_времени>, где
N— количество единиц времениединица_времени— h (час), d (сутки), w (неделя), M (месяц) или y (год), должно быть меньше или равно сезону - сезон_ед — календарная единица, определяющая один сезон (h, d, w, M, y); не может быть меньше периода данных
- сезон_кол-во — количество оцениваемых сезонов
Примеры:
baselinedev(/узел_сети/ключ,1d:now/d,"M",6) #расчёт количества стандартных отклонений (генеральная совокупность) между предыдущими сутками и теми же сутками в предыдущие 6 месяцев. Если дата в предыдущем месяце не существует, будет использован последний день месяца (31 июля будет проанализировано в сравнении с 31 янавря, 28 февраля, ... , 30 июня)
baselinedev(/узел_сети/ключ,1h:now/h,"d",10) #расчёт количества стандартных отклонений генеральной совокупности между предыдущим часом и тем же часом суток на протяжении 10 предыдущих дней
baselinewma(/узел_сети/ключ,период_данных:сдвиг_времени,сезон_ед,сезон_кол-во)
Вычисляет базовый уровень путем усреднения данных за один и тот же интервал времени в течение нескольких равных периодов времени («сезонов») с использованием алгоритма взвешенного скользящего среднего.
Параметры:
- Смотрите общие параметры
- период_данных — период сбора данных в течение сезона, определённый как <N><единица_времени>, где:
N— количество единиц времениединица_времени— h (час), d (сутки), w (неделя), M (месяц) или y (год), должно быть меньше или равно сезону
Сдвиг_времени] — смещение периода времени, определяет конец интервала сбора данных в сезонах (смотрите примеры) - сезон_ед — календарная единица, определяющая однин сезон (h, d, w, M, y); не может быть меньше периода данных
- сезон_кол-во — количество оцениваемых сезонов
Примеры:
baselinewma(/узел_сети/ключ,1h:now/h,"d",3) #расчёт базового уровня за тот же час суток за период последних трёх полных суток, заканчивающийся вчера. Если «now» (сейчас) - это 13:30 понедельника, то будут проанализированы данные по часу 12:00-12:59 за пятницу, субботу и воскресенье
baselinewma(/узел_сети/ключ,2h:now/h,"d",3) #расчёт базового уровня за тот же двухчасовой промежуток за период последних трёх полных суток, заканчивающийся вчера. Если «now» (сейчас) — это 13:30 понедельника, то будут проанализированы данные для интервала 11:00-12:59 за пятницу, субботу и воскресенье
baselinewma(/узел_сети/ключ,1d:now/d,"M",4) #расчёт базового уровня из того же числа месяца, что и «вчера», за период 4 месяца, предшествующих предыдущему полному месяцу. Если нужной даты не существует, берётся последний день месяца. Если сегодня 1 сентября, то будут проанализированы данные за 31 июля, 30 июня, 31 мая и 30 апреля
trendavg(/узел_сети/ключ,период_времени:сдвиг_времени)
Среднее из значений динамики изменений за определённый период времени.
Параметры:
- Смотрите общие параметры
Примеры:
trendavg(/узел_сети/ключ,1h:now/h) #среднее за предыдущий час (например, 12:00-13:00)
trendavg(/узел_сети/ключ,1h:now/h-1h) #среднее за час два часа назад (11:00-12:00)
trendavg(/узел_сети/ключ,1h:now/h-2h) #среднее за час три часа назад (10:00-11:00)
trendavg(/узел_сети/ключ,1M:now/M-1y) #среднее за предыдущий месяц год назад
trendcount(/узел_сети/ключ,период_времени:сдвиг_времени)
Количество успешно извлечённых значений истории, используемых для расчёта значений динамики изменений за определённый период времени.
Параметры:
- Смотрите общие параметры
Примеры:
trendcount(/узел_сети/ключ,1h:now/h) #количество за предыдущий час (например, 12:00-13:00)
trendcount(/узел_сети/ключ,1h:now/h-1h) #количество за час два часа назад (11:00-12:00)
trendcount(/узел_сети/ключ,1h:now/h-2h) #количество за час три часа назад (10:00-11:00)
trendcount(/узел_сети/ключ,1M:now/M-1y) #количество за предыдущий месяц год назад
trendmax(/узел_сети/ключ,период_времени:сдвиг_времени)
Максимальное значение из динамики изменений за определённый период времени.
Параметры:
- Смотрите общие параметры
Примеры:
trendmax(/узел_сети/ключ,1h:now/h) #максимум за предыдущий час (например, 12:00-13:00)
trendmax(/узел_сети/ключ,1h:now/h) - trendmin(/узел_сети/ключ,1h:now/h) → расчёт разницы между максимальным и минимальным значениями (дельта тренда) за предыдущий час (12:00-13:00)
trendmax(/узел_сети/ключ,1h:now/h-1h) #максимум за час два часа назад (11:00-12:00)
trendmax(/узел_сети/ключ,1h:now/h-2h) #максимум за час три часа назад (10:00-11:00)
trendmax(/узел_сети/ключ,1M:now/M-1y) #максимум за предыдущий месяц год назад
trendmin(/узел_сети/ключ,период_времени:сдвиг_времени)
Минимальное значение из динамики изменений за определённый период времени.
Параметры:
- Смотрите общие параметры
Примеры:
trendmin(/узел_сети/ключ,1h:now/h) #минимум за предыдущий час (например, 12:00-13:00)
trendmax(/узел_сети/ключ,1h:now/h) - trendmin(/узел_сети/ключ,1h:now/h) → расчёт разницы между максимальным и минимальным значениями (дельта тренда) за предыдущий час (12:00-13:00)
trendmin(/узел_сети/ключ,1h:now/h-1h) #минимум за час два часа назад (11:00-12:00)
trendmin(/узел_сети/ключ,1h:now/h-2h) #минимум за час три часа назад (10:00-11:00)
trendmin(/узел_сети/ключ,1M:now/M-1y) #минимум за предыдущий месяц год назад
trendstl(/узел_сети/ключ,период_оценки:сдвиг_времени,период_обнаружения,сезон,<отклонения>,<devalg>,<s_window>)
Возвращает частоту аномалий за период обнаружения — десятичное значение от 0 до 1, которое определяется как ((количество аномальных значений)/(общее количество значений)).
Параметры:
- Смотрите общие параметры
- период_оценки — период времени, который необходимо разложить (минимум «1h»), определённый как <N><единица_времени>, где
N— количество единиц времениединица_времени— h (час), d (сутки), w (неделя), M (месяц) или y (год) - период_обнаружения — период времени до конца периода оценки, для которого вычисляются аномалии (минимум «1h», не может быть дольше периода оценки), определённый как <N><единица_времени>, где
N— количество единиц времениединица_времени— h (час), d (сутки), w (неделя) - сезон — самый короткий период времени, где ожидается повторяющийся шаблон («сезон»), (минимум «2h», не может быть дольше периода оценки, количество записей в периоде оценки должно быть больше двукратной результирующей частоты (сезон/h)), определённой как <N><единица_времени>, где
N— количество единиц времениединица_времени— h (час), d (сутки), w (неделя) - отклонения — количество отклонений (вычисленных по алгоритму devalg), которые следует считать аномалией (может быть десятичным числом), (должно быть больше либо равно 1, по умолчанию: 3);
- devalg (должно быть в двойных кавычках) — алгоритм отклонений, может быть stddevpop, stddevsamp или mad (по умолчанию)
- s_window — протяжённость (в лагах) окна LOESS для извлечения сезонов (по умолчанию: 10 * количество записей в периоде оценки + 1)
Примеры:
trendstl(/узел_сети/ключ,100h:now/h,10h,2h) #анализировать последние 100 часов данных динамики изменений, найти частоту аномалий за последние 10 часов этого периода, ожидая, что будет периодичность 2 часа, значения компонентов остатка за период оценки рассматриваются как аномалии, если они достигают значения 3 отклонений по алгоритму MAD (среднее абсолютное отклонение) для этого компонента остатков
trendstl(/узел_сети/ключ,100h:now/h-10h,100h,2h,2.1,"mad") #анализировать период 100 часов данных динамики изменений, до момента 10 часов назад, найти частоту аномалий за весь период при ожидании периодичности в 2 часа, значения компонентов остатка за период оценки рассматриваются как аномалии, если они достигают значения 2,1 отклонения по алгоритму MAD для этого компонента остатков
trendstl(/узел_сети/ключ,100d:now/d-1d,10d,1d,4,,10) #анализировать период 100 дней данных динамики изменений до момента сутки назад, найти частоту аномалий за последние 10 дней этого периода, при ожидании, что периодичность составит 1 сутки, значения компонентов остатка за период оценки рассматриваются как аномалии, если они достигают значения 4 отклонений по алгоритму MAD для этого компонента остатков, переопределяя протяжённость окна LOESS по умолчанию для извлечения сезонов «10 * количество записей в периоде оценки + 1» на протяжённость 10 лагов
trendstl(/узел_сети/ключ,1M:now/M-1y,1d,2h,,"stddevsamp") #анализировать предыдущий месяц год назад, найти частоту аномалий за последний день этого периода, при ожидаемой периодичности в 2 часа, значения компонентов остатка за период оценки рассматриваются как аномалии, если они достигают значения 3 отклонений по алгоритму sample standard deviation (среднеквадратическое отклонение по выборке) для этого компонента остатков
trendsum(/узел_сети/ключ,период_времени:сдвиг_времени)
Сумма значений динамики изменений за определённый период времени.
Параметры:
- Смотрите общие параметры
Примеры:
trendsum(/узел_сети/ключ,1h:now/h) #сумма за предыдущий час (например, 12:00-13:00)
trendsum(/узел_сети/ключ,1h:now/h-1h) #сумма за час два часа назад (11:00-12:00)
trendsum(/узел_сети/ключ,1h:now/h-2h) #сумма за час три часа назад (10:00-11:00)
trendsum(/узел_сети/ключ,1M:now/M-1y) #сумма за предыдущий месяц год назад