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

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

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

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

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

Function Description
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 (необязательно) позволяет сдвинуть точку оценки назад во времени. См. подробности о задании сдвига времени.

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

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

  • Параметры функций разделяются запятой
  • Необязательные параметры функций (или части параметров) обозначаются угловыми скобками < >
  • Параметры, специфичные для функций, описаны с каждой функцией
  • Параметры /узел_сети/ключ и (сек|#число)<:сдвиг_времени> никогда не должны заключаться в кавычки
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,#5) #вычислить среднее значение пяти последних значений
avg(/host/key,1h:now-1d) #вычислить среднее значение за час с 25 часов назад до 24 часов назад от текущего момента
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"])) #вычислить среднюю загрузку процессора для всех серверов MySQL
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)) #вычислить количество элементов данных net.if.in, которые получили данные за последний час до текущего момента
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #вычислить количество файловых систем, где занято более 95% дискового пространства
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"]) #calculate the number of hosts with the agent.ping item in "Host group 1"
kurtosis(/host/key,(sec|#num)<:time shift>)

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

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

Примеры:

kurtosis(/host/system.cpu.util[,user],5m)>5 #trigger on sharp spikes of CPU utilization over 5 minutes
mad(/host/key,(sec|#num)<:time shift>)

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

Параметры: см. common parameters.

Примеры:

last(/host/system.cpu.util[,user])>avg(/host/system.cpu.util[,user],1h)+3*mad(/host/system.cpu.util[,user],1h) #trigger if the last CPU utilization value is statistically significant
max(/host/key,(sec|#num)<:time shift>)

Наибольшее значение элемента данных в течение заданного периода оценки.
Поддерживаемые типы значений: Float, Integer.
Поддерживаемые foreach functions: 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 functions: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Параметры: см. common parameters.

Примеры:

max(/host/key,1h) - min(/host/key,1h) #calculate the difference between the maximum and minimum values within the last hour until now (the delta of values)
min(last_foreach(/*/vfs.file.contents["/sys/class/net/enp0s3/operstate"]?[group="Linux servers"])) #return the minimum operational state for any interface across all Linux servers
skewness(/host/key,(sec|#num)<:сдвиг времени>)

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

Параметры: см. common parameters.

Примеры:

skewness(/host/vm.memory.size[used],5m)<-20 #trigger on sudden negative drops indicating crashes/restarts
stddevpop(/host/key,(sec|#num)<:time shift>)

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

Параметры: см. common parameters.

Примеры:

stddevpop(/host/system.cpu.util[,user],10m)>7 #trigger if CPU usage fluctuates heavily (population standard deviation is above 7 over 10 minutes)
stddevsamp(/host/key,(sec|#num)<:time shift>)

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

Параметры: см. common parameters.

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

Примеры:

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

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

Параметры: см. common parameters.

Примеры:

sum(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #calculate the total incoming network traffic for all Linux servers
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"])) #calculate the total disk space for all MySQL servers
sum(last_foreach(/*/net.dns[*,*,*])) #calculate the total number of successful DNS checks
sumofsquares(/host/key,(sec|#num)<:time shift>)

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

Параметры: см. common parameters.

Примеры:

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 function: last_foreach.

Параметры: см. common parameters.

Примеры:

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

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

Параметры: см. common parameters.

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

Примеры:

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

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