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)
Вычисляет процентиль по корзинам гистограммы.
Параметры:
- item filter - см. item filter;
- time period - см. time period;
- percentage - процент (0-100).
Комментарии:
- Поддерживается только в вычисляемых элементах данных;
- Эта функция является псевдонимом для
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 минут)