Агрегированные вычисления
Агрегированные вычисления – это тип вычисляемых элементов данных, который позволяет собирать информацию с нескольких элементов данных Сервером и затем вычислять совокупность в зависимости от использованной функции агрегирования.
Для элементов данных агрегированного вычисления поддерживаются только целочисленные значения и значения с плавающей точкой (тип информации).
Агрегированные вычисления не требуют наличия какого-либо Агента, запущенного на наблюдаемом узле сети.
Для получения агрегирования можно:
- перечислить элементы данных для агрегации:
функция_агрегации(функция(/узел_сети/ключ,параметр),функция(/узел_сети2/ключ2,параметр),...)
Следует обратить внимание, что здесь функция должна быть функцией истории/динамики изменений.
- использовать функцию foreach в качестве единственного параметра и ее фильтр элементов данных для выбора требуемых элементов данных:
функция_агрегации(функция_foreach(/узел_сети/ключ?[group="узел сети"],период_времени))
Функция агрегации – одна из поддерживаемых функций агрегации: avg, max, min, sum и т.д.
Функция foreach (такая как avg_foreach, count_foreach и т.п.) возвращает одно совокупное значение по каждому выбранному элементу данных. Элементы данных выбираются с использованием фильтра элементов данных (/узел_сети/ключ?group="группа узлов сети") из истории элементов данных.
Если некоторые элементы данных не имеют данных за требуемый период, они игнорируются в вычислении. Если никакие элементы данных не имеют данных, то функция вернет ошибку.
Для получения более подробных сведений о функции foreach (см. п. Функции агрегации).
Если в результате агрегации получится значение числа с плавающей точкой, оно будет обрезаться до целого числа, если типом информации вычисляемого элемента данных выбрано "Числовой (целое положительное)".
Агрегированное вычисление может перейти в неподдерживаемое состояние в нескольких случаях:
- ни один из указанных элементов данных не найден (что может произойти, если ключ элемента данных некорректный, элементы данных не существуют или все включенные в вычисление группы узлов сети некорректны);
- отсутствуют данные для вычисления функции.
Примеры ключей для агрегированных вычислений
Пример 1. Общий размер дискового пространства в группе узлов сети "MySQL Servers".
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
Пример 2. Сумма последних значений на узле сети всех элементов данных, совпадающих с net.if.in*.
sum(last_foreach(/host/net.if.in[*]))
Пример 3. Средняя загрузка процессора в группе узлов сети "MySQL Servers".
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
Пример 4. Усреднение за 5 минут количества запросов в секунду по группе узлов сети "MySQL Servers".
avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
Пример 5. Средняя загрузка 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")]))
Пример 6. Вычисление с использованием суммы последних значений элементов данных по всей группе узлов сети.
sum(last_foreach(/*/net.if.out[eth0,Bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"]))
Пример 7. Общее количество неподдерживаемых элементов данных в группе узлов сети "Zabbix servers".
sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
Примеры корректного/некорректного синтаксиса. Выражения (включая вызовы функций) нельзя использовать в качестве параметров к функциям истории, динамики изменений или foreach. Но сами эти функции могут быть использованы в параметрах других (не относящихся к истории) функций (таблица 79).
Следует обратить внимание, что в таком выражении:
sum(sum_foreach(//resptime[*],5m))/sum(count_foreach(//resptime[*],5m))
нельзя гарантировать, что обе части всегда будут иметь одинаковый набор значений. Пока вычисляется одна часть выражения, может прийти новое значение за запрашиваемый период, и тогда вторая часть выражения будет иметь отличающийся набор значений.