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

7.1 Обзор

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

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

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

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

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

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

Формула расчета должна быть введена в поле Формула (с названием 'Выражение' в 1.8.1 и в 1.8.2). Не существует практически никакой связи между формулой и ключем. Параметры ключа ни в каком случае не используются в формуле.

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

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

Где:

АРГУМЕНТ ОПРЕДЕЛЕНИЕ
функ Одна из функций поддерживаемых в выражениях триггеров: last, min, max, avg, count и остальные
ключ Ключ другого элемента данных, данные которого вы хотите использовать. Он может быть задан как ключ или узел сети:ключ.
Обратите внимание: Настоятельно рекомендуется заключение всего ключа в двойные кавычки ("..."), во избежании неправильного разбора из-за пробелов или запятых в ключе.
Также если в ключе имеются параметры заключенные в кавычки, то двойные кавычки должны быть экранированы с помощью обратной косой чертой (\). Смотрите ниже Пример 5.
параметр(ы) Любые дополнительные параметры, которые могут потребоваться.

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

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

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

Поддерживаемые символы для функции:

a..zA..Z0..9_

Поддерживаемые символы в имени узла сети:

a..zA..Z0..9 ._-

Поддерживаемые символы для ключа:

a..zA..Z0..9.,_

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

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

  1. не найдены элементы данных, на которые он ссылается
  2. нет данных для вычисления функции
  3. деление на ноль
  4. использован некорректный синтаксис

Поддержка вычисляемых элементов данных была введена в Zabbix 1.8.1

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

Example 1

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

Используйте функцию last:

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

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

Пример 2

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

Используйте функцию avg:

avg("Zabbix Server:zabbix[wcache,values]",600)

Обратите внимание, что интенсивное использование вычисляемых элементов данных с большими периодами времени может повлиять на производительность 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]"))
Пример 5

Использование агрегированных элементов данных возможно с вычисляемым элементом данных.

Возьмите на заметку, каким образом двойные кавычки экранируются в заключенном кавычками ключе:

last("grpsum[\"video\",\"net.if.out[eth0,bytes]\",\"last\",\"0\"]") / last("grpsum[\"video\",\"nginx_stat.sh[active]\",\"last\",\"0\"]")