Агрегированные вычисления — это тип вычисляемых элементов данных, который позволяет собирать информацию с нескольких элементов данных Zabbix сервером, и затем вычислять совокупность, в зависимости от использованной функции агрегирования.
Агрегированные вычисления не требуют наличия какого-либо агента, запущенного на наблюдаемом узле сети.
Для получения агрегирования используйте одну из поддерживаемых функций агрегации: avg
, max
, min
, sum
и т.д. Затем добавьте функцию foreach в качестве единственного параметра, а её фильтр элементов данных — для выбора требуемых элементов данных:
Функция foreach (такая как avg_foreach, count_foreach и т.п.) возвращает одно совокупное значение по каждому выбранному элементу данных. Элементы данных выбираются с использованием фильтра элементов данных (/узел_сети/ключ?[group="группа узлов сети"]
), из истории элементов данных. Для получения более подробных сведений смотрите функции foreach.
Если некоторые элементы данных не имеют данных за требуемый период, они при вычислении игнорируются. Если никакие элементы данных не имеют данных, то функция вернет ошибку.
В качестве альтернативы вы можете перечислить несколько элементов данных для агрегации:
Обратите внимание, что здесь функция
должна быть функцией истории или динамики изменений.
Если в результате агрегации получится значение числа с плавающей точкой, оно будет обрезаться до целого числа, если типом информации вычисляемого элемента данных выбрано Числовой (целое положительное).
Пользовательские макросы и макросы низкоуровневого обнаружения поддерживаются в:
Агрегированное вычисление может перейти в неподдерживаемое состояние в нескольких случаях:
Примеры ключей для агрегированных вычислений.
Общий размер дискового пространства в группе узлов сети «MySQL Servers».
Сумма последних значений на узле сети всех элементов данных, совпадающих с net.if.in[*].
Средняя загрузка процессора в группе узлов сети «MySQL Servers».
Усреднение за 5 минут количества запросов в секунду по группе узлов сети «MySQL Servers».
Средняя загрузка CPU по всем узлам сети в нескольких группах узлов сети, у которых имеются заданные теги.
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
Вычисление с использованием суммы последних значений элементов данных по всей группе узлов сети.
sum(last_foreach(/*/net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"]))
Общее количество неподдерживаемых элементов данных в группе узлов сети «Zabbix servers».
Выражения (включая вызовы функций) нельзя использовать в качестве параметров к функциям истории, динамики изменений или foreach. Однако, сами эти функции могут быть использованы в параметрах других (не относящихся к истории) функций.
Выражение | Пример |
---|---|
Допустимое | avg(last(/host/key1),last(/host/key2)*10,last(/host/key1)*100) max(avg(avg_foreach(/*/system.cpu.load?[group="Servers A"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers B"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers C"],5m))) |
Недопустимое | sum(/host/key,10+2) sum(/host/key, avg(10,2)) sum(/host/key,last(/host/key2)) |
Обратите внимание, что в таком выражении, как:
нельзя гарантировать, что обе части всегда будут иметь одинаковый набор значений. Пока вычисляется одна часть выражения, может прийти новое значение за запрашиваемый период, и тогда вторая часть выражения будет иметь отличающийся набор значений.