1 Агрегатные функции

Если не указано иное, все перечисленные здесь функции поддерживаются в:

Агрегатные функции могут работать либо с:

  • историей элементов данных, например, min(/host/key,1h)
  • функциями foreach в качестве единственного параметра, например, min(last_foreach(/*/key)) (только в формулах вычисляемых элементов данных; для использования в триггерах ссылайтесь на вычисляемый элемент данных по его ключу)

Функции перечислены без дополнительной информации. Нажмите на функцию, чтобы увидеть полные сведения.

Функция Описание
avg Среднее значение элемента данных за указанный период вычисления.
bucket_percentile Вычисляет процентиль по корзинам гистограммы.
count Количество значений в массиве, возвращаемом функцией foreach.
histogram_quantile Вычисляет φ-квантиль по корзинам гистограммы.
item_count Количество существующих элементов данных в конфигурации, соответствующих критериям фильтра.
kurtosis «Хвостатость» распределения вероятностей собранных значений за указанный период вычисления.
mad Медианное абсолютное отклонение собранных значений за указанный период вычисления.
max Наибольшее значение элемента данных за указанный период вычисления.
min Наименьшее значение элемента данных за указанный период вычисления.
skewness Асимметрия распределения вероятностей собранных значений за указанный период вычисления.
stddevpop Среднеквадратичное отклонение генеральной совокупности собранных значений за указанный период вычисления.
stddevsamp Выборочное среднеквадратичное отклонение собранных значений за указанный период вычисления.
sum Сумма собранных значений за указанный период вычисления.
sumofsquares Сумма квадратов собранных значений за указанный период вычисления.
varpop Дисперсия генеральной совокупности собранных значений за указанный период вычисления.
varsamp Выборочная дисперсия собранных значений за указанный период вычисления.

Общие параметры

  • /host/key — это общий обязательный первый параметр для функций, ссылающихся на историю элемента данных узла сети
  • (sec|#num)<:time shift> — это общий второй параметр для функций, ссылающихся на историю элемента данных узла сети, где:
    • sec — максимальный период вычисления в секундах (можно использовать суффиксы времени), или
    • #num — максимальный диапазон вычисления в последних собранных значениях (если перед ним стоит знак решётки)
    • time shift (необязательно) позволяет сдвинуть точку вычисления назад во времени. Подробнее о задании time shift см. здесь.

Подробности о функциях

Некоторые общие замечания о параметрах функций:

  • Параметры функций разделяются запятой
  • Необязательные параметры функций (или части параметров) обозначаются с помощью < >
  • Специфические для функции параметры описаны для каждой функции отдельно
  • Параметры /host/key и (sec|#num)<:time shift> никогда не должны заключаться в кавычки
avg(/host/key,(sec|#num)<:time shift>)

Среднее значение элемента данных за указанный период вычисления.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемые функции foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Параметры: см. общие параметры.

Сдвиг времени полезен, когда необходимо сравнить текущее среднее значение со средним значением за некоторый момент в прошлом.

Примеры:

avg(/host/key,1h) #среднее значение за последний час до текущего момента
avg(/host/key,1h:now-1d) #среднее значение за один час в интервале от 25 до 24 часов назад от текущего момента
avg(/host/key,#5) #среднее значение пяти последних значений
avg(/host/key,#5:now-1d) #среднее значение пяти последних значений, исключая значения, полученные за последние 24 часа
avg(/host/proc.num,5m)>300 #триггер, если среднее количество процессов за последние 5 минут превышало 300
bucket_percentile(item filter,time period,percentage)

Вычисляет процентиль по бакетам гистограммы.

Параметры:

Комментарии:

  • Поддерживается только в вычисляемых элементах данных;
  • Эта функция является псевдонимом для histogram_quantile(percentage/100, bucket_rate_foreach(item filter, time period, 1)).

Примеры:

bucket_percentile(/*/http_request_duration_seconds_bucket[*],5m,95) #вычислить 95-й процентиль времени отклика за 5 минут
bucket_percentile(/*/apiserver_request_duration_seconds_bucket[*],10m,99) #вычислить 99-й процентиль задержки API
count(func_foreach(item filter,<time period>),<operator>,<pattern>)

Количество значений в массиве, возвращаемом функцией foreach.
Поддерживаемые функции foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Параметры:

  • func_foreach — функция foreach, для которой необходимо подсчитать количество возвращаемых значений. Подробности см. в разделе функции foreach. Обратите внимание, что count_foreach и bucket_rate_foreach поддерживают дополнительные параметры.
  • item filter — см. фильтр элементов данных;
  • time period — см. период времени;
  • operator (должен быть заключён в двойные кавычки). Поддерживаемые operators:
    eq — равно
    ne — не равно
    gt — больше
    ge — больше или равно
    lt — меньше
    le — меньше или равно
    like — совпадает, если содержит шаблон (с учётом регистра)
    bitand — побитовое И
    regexp — чувствительное к регистру совпадение с регулярным выражением, заданным в pattern
    iregexp — нечувствительное к регистру совпадение с регулярным выражением, заданным в pattern
  • pattern — требуемый шаблон (строковые аргументы должны быть заключены в двойные кавычки); поддерживается, если operator указан в третьем параметре.

Комментарии:

  • Использование count() с функцией foreach, связанной с историей данных (max_foreach, avg_foreach и т. д.), может повлиять на производительность, тогда как использование exists_foreach(), работающей только с данными конфигурации, такого эффекта не оказывает.
  • Необязательные параметры operator или pattern нельзя оставлять пустыми после запятой, их можно только полностью опустить.
  • Если в качестве третьего параметра используется bitand, четвёртый параметр pattern можно указать как два числа, разделённые символом '/': number_to_compare_with/mask. count() вычисляет результат операции "побитовое И" для значения и mask и сравнивает результат с number_to_compare_with. Если результат "побитового И" равен number_to_compare_with, значение учитывается.
    Если number_to_compare_with и mask равны, можно указать только mask (без '/').
  • Если в качестве третьего параметра используется regexp или iregexp, четвёртый параметр pattern может быть обычным или глобальным (начинающимся с '@') регулярным выражением. В случае глобальных регулярных выражений чувствительность к регистру наследуется из настроек глобального регулярного выражения. Для целей сопоставления по regexp значения с плавающей точкой всегда будут представлены с 4 десятичными знаками после '.'. Также обратите внимание, что для больших чисел различие между десятичным представлением (хранимым в базе данных) и двоичным представлением (используемым сервером Zabbix) может влиять на 4-й десятичный знак.

Примеры:

count(max_foreach(/*/net.if.in[*],1h)) #calculate the number of net.if.in items that received data in the last hour until now
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #calculate the number of file systems with over 95% of disk space used
histogram_quantile(quantile,bucket1,value1,bucket2,value2,...)

Вычисляет φ-квантиль по корзинам гистограммы.
Поддерживаемая функция foreach: bucket_rate_foreach.

Параметры:

  • quantile — 0 ≤ φ ≤ 1;
  • bucketN, valueN — вручную введённые пары (>=2) параметров или ответ bucket_rate_foreach.

Комментарии:

  • Поддерживается только в вычисляемых элементах данных;
  • Функционально соответствует 'histogram_quantile' в PromQL;
  • Возвращает -1, если значения последней корзины 'Infinity' ("+inf") равны 0.

Примеры:

histogram_quantile(0.75,1.0,last(/host/rate_bucket[1.0]),"+Inf",last(/host/rate_bucket[Inf]))
histogram_quantile(0.5,bucket_rate_foreach(//item_key,30s))
item_count(item filter)

Количество существующих элементов данных в конфигурации, соответствующих критериям фильтра.
Поддерживаемый тип значения: Integer.

Параметр:

  • item filter — критерий выбора элементов данных; допускает ссылки по группе узлов сети, узлу сети, ключу элемента данных и тегам. Поддерживаются подстановочные знаки. Подробнее см. в разделе item filter.

Комментарии:

  • Поддерживается только в вычисляемых элементах данных;
  • Работает как псевдоним функции count(exists_foreach(item_filter)).

Примеры:

item_count(/*/agent.ping?[group="Host group 1"]) #вычисляет количество узлов сети с элементом данных agent.ping в "Host group 1"
kurtosis(/host/key,(sec|#num)<:time shift>)

«Хвостатость» распределения вероятностей собранных значений в пределах заданного периода вычисления. См. также: Kurtosis.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемая функция foreach: last_foreach.

Параметры: см. общие параметры.

Примеры:

kurtosis(/host/system.cpu.util[,user],5m)>5 #срабатывание триггера при резких всплесках загрузки CPU за 5 минут
mad(/host/key,(sec|#num)<:сдвиг времени>)

Медианное абсолютное отклонение собранных значений в пределах заданного периода вычисления. См. также: Медианное абсолютное отклонение.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемая функция foreach: last_foreach.

Параметры: см. общие параметры.

Примеры:

last(/host/system.cpu.util[,user])>avg(/host/system.cpu.util[,user],1h)+3*mad(/host/system.cpu.util[,user],1h) #триггер, если последнее значение загрузки CPU является статистически значимым
max(/host/key,(sec|#num)<:time shift>)

Наибольшее значение элемента данных в пределах заданного периода вычисления.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемые функции foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Параметры: см. общие параметры.

Примеры:

max(/host/key,1h) - min(/host/key,1h) #вычислить разницу между максимальным и минимальным значениями за последний час до текущего момента (дельта значений)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #вернуть наибольшее использование диска среди всех Linux-серверов
min(/host/key,(sec|#num)<:time shift>)

Наименьшее значение элемента данных в пределах заданного периода вычисления.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемые функции foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Параметры: см. общие параметры.

Примеры:

max(/host/key,1h) - min(/host/key,1h) #вычислить разницу между максимальным и минимальным значениями за последний час до текущего момента (дельта значений)
min(last_foreach(/*/vfs.file.contents["/sys/class/net/enp0s3/operstate"]?[group="Linux servers"])) #вернуть минимальное состояние работоспособности для любого интерфейса среди всех Linux-серверов
skewness(/host/key,(sec|#num)<:time shift>)

Асимметрия распределения вероятностей собранных значений в пределах заданного периода вычисления. См. также: Skewness.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемая функция foreach: last_foreach.

Параметры: см. общие параметры.

Примеры:

skewness(/host/vm.memory.size[used],5m)<-20 #триггер при внезапных отрицательных падениях, указывающих на сбои/перезапуски
stddevpop(/host/key,(sec|#num)<:time shift>)

Среднеквадратичное отклонение генеральной совокупности для собранных значений в пределах заданного периода вычисления. См. также: Стандартное отклонение.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемая функция foreach: last_foreach.

Параметры: см. общие параметры.

Примеры:

stddevpop(/host/system.cpu.util[,user],10m)>7 #триггер, если использование CPU сильно колеблется (среднеквадратичное отклонение генеральной совокупности выше 7 за 10 минут)
stddevsamp(/host/key,(sec|#num)<:time shift>)

Выборочное стандартное отклонение собранных значений в пределах заданного периода вычисления. См. также: Стандартное отклонение.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемая функция foreach: last_foreach.

Параметры: см. общие параметры.

Для работы этой функции требуется как минимум два значения данных.

Примеры:

stddevsamp(/host/system.cpu.util[,user],10m)>7 #триггер, если использование CPU сильно колеблется (выборочное стандартное отклонение выше 7 за 10 минут)
sum(/host/key,(sec|#num)<:time shift>)

Сумма собранных значений в пределах заданного периода вычисления.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемые функции foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Параметры: см. общие параметры.

Примеры:

sum(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #сумма последних значений входящего сетевого трафика по всем Linux-серверам
sumofsquares(/host/key,(sec|#num)<:time shift>)

Сумма квадратов собранных значений в пределах заданного периода вычисления.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемые функции foreach: last_foreach.

Параметры: см. общие параметры.

Примеры:

sumofsquares(/host/calculated.net.if.rate,1m) #сумма квадратов для скорости сетевого трафика (входящий и исходящий)
sumofsquares(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #сумма квадратов последних значений входящего сетевого трафика по всем Linux servers
varpop(/host/key,(sec|#num)<:time shift>)

Дисперсия генеральной совокупности собранных значений в пределах заданного периода вычисления. См. также: Variance.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемая функция foreach: last_foreach.

Параметры: см. общие параметры.

Примеры:

varpop(/host/system.cpu.util[,user],10m)>50 #триггер, если использование CPU сильно колеблется (дисперсия выше 50 за 10 минут)
varsamp(/host/key,(sec|#num)<:time shift>)

Выборочная дисперсия собранных значений в пределах заданного периода вычисления. См. также: Variance.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемая функция foreach: last_foreach.

Параметры: см. общие параметры.

Для работы этой функции требуется как минимум два значения данных.

Примеры:

varsamp(/host/system.cpu.util[,user],10m)>50 #триггер, если использование CPU сильно колеблется (выборочная дисперсия выше 50 за 10 минут)

См. все поддерживаемые функции.