7. Вычисляемые элементы данных

Обзор

При помощи вычисляемых элементов данных имеется возможность выполнять подсчёты на основании значений других элементов данных.

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

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

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

Полученные данные записываются в базу данных 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]))

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