Обзор агрегированных вычислений
Агрегированные вычисления — это специальный тип вычисляемых элементов, который позволяет серверу Glaber собирать данные из нескольких источников и затем выполнять вычисления с использованием агрегатных функций.
Для агрегированных вычислений поддерживаются только два типа данных: целые числа без знака и значения с плавающей запятой.
Для работы агрегированных вычислений не требуется установка агента на отслеживаемом узле сети.
Синтаксис
Чтобы получить агрегированные данные, у вас есть два варианта:
- Перечислите несколько элементов для агрегирования:
aggregate_function(function(/host/key, parameter), function(/host2/key2, parameter),...)
Обратите внимание, что в данном случае функция должна представлять собой функцию истории или тренда.
- Используйте функцию foreach в качестве единственного параметра и примените ее элементный фильтр для выбора необходимых элементов:
aggregate_function(foreach_function(/host/key?[group="host group"], timeperiod))
Функция foreach (например, avg_foreach, count_foreach и т.д.) возвращает одно агрегированное значение для каждого выбранного элемента. Элементы выбираются с помощью фильтра элементов (/host/key?[group="host group"]) из истории элементов.
Если для некоторых элементов нет данных за запрашиваемый период, они будут проигнорированы при вычислении. В случае, когда данные отсутствуют для всех элементов, функция вернет ошибку.
Если результатом агрегирования является значение с плавающей точкой, оно будет преобразовано в целое число, если тип агрегированного элемента информации является числовым (без знака).
Агрегированный расчет может стать неподдерживаемым в следующих случаях:
- Ни один из указанных элементов не найден. Это может произойти, если ключ элемента указан неверно, элемент не существует или все включенные группы указаны неправильно.
- Нет данных для вычисления функции.
Примеры
- Средняя загрузка процессора группы ущлов сети "Серверы MySQL".
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
- Средняя загрузка ЦП на всех узлах сети в нескольких группах узлов сети с определёнными тегами.
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
- Сумма последних значений всех элементов, соответствующих net.if.in[*] на узле сети.
sum(last_foreach(/host/net.if.in[*]))
Примеры действивтельного и недействивтельного ситаксиса
Действивтельный
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))