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 Выборочная дисперсия собранных значений за заданный период вычисления.

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

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

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

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

  • Параметры функций разделяются запятой
  • Необязательные параметры функций (или части параметров) обозначаются угловыми скобками < >
  • Параметры, специфичные для функций, описаны с каждой функцией
  • Параметры /узел_сети/ключ и (сек|#число)<:сдвиг_времени> никогда не должны заключаться в кавычки
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) #calculate the average value for the last hour until now
avg(/host/key,#5) #calculate the average value of the five latest values
avg(/host/key,1h:now-1d) #calculate the average value for an hour from 25 hours ago to 24 hours ago from now
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"])) #calculate the average processor load for all MySQL servers
avg(/host/proc.num,5m)>300 #trigger if the average number of processes in the last 5 minutes has been above 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 function: 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) #триггер, если последнее значение загрузки 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 servers
skewness(/host/key,(sec|#num)<:time shift>)

Асимметрия распределения вероятностей в собранных значениях за заданный период оценки. См. также: 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)<:сдвиг времени>)

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

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

Примеры:

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

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

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

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

Примеры:

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 #trigger if CPU usage fluctuates heavily (variance is above 50 over 10 minutes)
varsamp(/узел сети/key,(sec|#num)<:time shift>)

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

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

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

Примеры:

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

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