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

1 Обзор

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

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

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

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

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

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

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

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

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

Где:

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

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

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

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

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

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

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

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

Поддержка вычисляемых элементов данных была введена в Zabbix 1.8.1.
Начиная с Zabbix 3.2 вычисляемые элементы данных в некоторых случаях могут использовать неподдерживаемые элементы данных как описано в Функции и неподдерживаемые элементы данных, Выражения с неподдерживаемыми элементами данных и неизвестными значениями и Операторы.

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

Пример 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\"]")