14 Вычисляемый элемент данных

Обзор

Вычисляемый элемент данных позволяет создать вычисление на основе значений некоторых существующих элементов данных. Например, можно вычислить среднее почасовое значение элемента данных или общее значение для группы элементов данных. Именно для этого предназначен вычисляемый элемент данных.

В вычислениях можно использовать:

  • отдельные значения отдельных элементов данных;
  • сложный фильтр для выбора нескольких элементов данных для агрегации (подробности см. в разделе агрегированные вычисления).

Вычисляемые элементы данных позволяют создавать виртуальные источники данных. Все вычисления выполняются только сервером Zabbix и обрабатываются процессами history poller. Значения периодически вычисляются на основе используемого выражения.

Обратите внимание, что вычисляемые элементы данных могут получать доступ к истории других элементов данных, включая элементы данных, к которым у пользователя, создающего вычисляемый элемент данных, нет доступа. Если такое поведение нежелательно, вычисляемые элементы данных можно отключить, установив значение конфигурационного параметра StartHistoryPollers, равное 0.

Полученные данные сохраняются в базе данных Zabbix так же, как и данные любого другого элемента данных; сохраняются как значения истории, так и значения трендов, а также могут создаваться графики.

Если результат вычисления имеет тип float, он будет преобразован в целое число, если тип информации вычисляемого элемента данных — Числовой (без знака).

Кроме того, если в кэше нет последних данных и в функции не задан период запроса, Zabbix по умолчанию будет обращаться к базе данных за историческими значениями на глубину до одной недели.

Вычисляемые элементы данных используют тот же синтаксис, что и выражения триггеров. В вычисляемых элементах данных допускается сравнение со строками. На вычисляемые элементы данных можно ссылаться с помощью макросов или других сущностей так же, как и на элементы данных любого другого типа.

Чтобы использовать вычисляемые элементы данных, выберите тип элемента данных Вычисляемый.

Настраиваемые поля

Ключ — уникальный идентификатор элемента данных (в пределах узла сети). Вы можете создать любое имя ключа, используя поддерживаемые символы.

Формулу вычисления необходимо ввести в поле Формула. Нет никакой связи между формулой и ключом. Параметры ключа не используются в формуле никоим образом.

Синтаксис простой формулы:

функция(/узел сети/ключ,<параметр1>,<параметр2>,...)

где:

функция Одна из поддерживаемых функций: last, min, max, avg, count и т.д.
узел сети Узел сети элемента данных, который используется в вычислении.
Текущий узел сети может быть опущен (примерно как в функция(//ключ,параметр,...)).
ключ Ключ элемента данных, который используется в вычислении.
Элементы данных, возвращающие значения с бинарным типом данных, не поддерживаются.
параметр(ы) Параметры функции, если требуются.
Поддерживаются суффиксы времени и суффиксы памяти.

Пользовательские макросы в формуле будут раскрыты, если они используются для ссылки на параметр функции, параметр фильтра элементов данных или константу. Пользовательские макросы НЕ будут раскрыты при использовании ссылки на функцию, имя узла сети, ключ элемента данных, параметры ключа элементов данных или оператор.

Для получения более сложной формулы можно использовать комбинацию функций, операторов и скобок. Вы можете использовать все функции и операторы, которые поддерживаются в выражениях триггеров. Логика и приоритет операторов точно такие же.

В отличие от выражений триггеров, Zabbix обрабатывает вычисляемые элементы данных в соответствии с интервалом обновления элемента данных, а не при получении нового значения.

Все элементы данных, на которые имеются ссылки из функций истории в формуле вычисляемого элемента данных, должны существовать и собирать данные. Также, если вы измените ключ элемента данных, на который ссылается вычисляемый элемент данных, вам придётся вручную обновить все формулы, в которых этот ключ используется.

Вычисляемый элемент данных может перейти в неподдерживаемое состояние в нескольких случаях:

  • элемент(ы) данных, на которые имеется ссылка
    • не найден
    • деактивирован
    • принадлежит деактивированному узлу сети
    • не поддерживается (за исключением функции nodata() и операторов с неизвестными значениями)
  • отсутствуют данные для вычисления функции
  • деление на ноль
  • использован некорректный синтаксис

Примеры использования

Пример 1

Вычисление процентного отношения свободного места на диске для '/'.

Использование функции last:

100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total])

Zabbix будет брать последние значения полного и свободного объёма диска и вычислять процентное отношение в соответствии с заданной формулой.

Пример 2

Вычисление 10-минутного усреднения количества значений, обрабатываемых Zabbix.

Использование функции avg:

avg(/Zabbix Server/zabbix[wcache,values],10m)

Обратите внимание, что интенсивное использование вычисляемых элементов данных с большими периодами времени может повлиять на производительность Zabbix сервера.

Пример 3

Вычисление общей пропускной способности на eth0.

Сумма двух функций:

last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])
Пример 4

Расчет процента входящего трафика.

Более сложное выражение:

100*last(//net.if.in[eth0,bytes])/(last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]))

См. также: Примеры агрегатных вычислений