Variables

С помощью Variables вы можете просматривать отладочную информацию о работе счетчиков
Возвращаемое значение: нет

Предназначение Variables

Variables позволяет просмотреть отладочную информацию, полученную при вычислении значения счетчика.

Для того, чтобы по счетчику можно было получить отладочную информацию, необходимо в Counter settings включить опцию Enable Debug. Кроме того, в файле настроек системы должна быть установлена опция "debugCounters": { "disable": false }

Сбор отладочной информации может потребовать повышенного расхода ресурсов и помешать нормальной работе системы. Поэтому на высоконагруженных системах желательно избегать использования этой функции. Для отладки функционирования системы лучше использовать тестовое окружение. Если по какой-то причине избежать использования функции невозможно, необходимо ограничить количество счетчиков, с которых собирается отладочная информация. Для ограничения возможности использовать функцию сбора отладочных данных можно использовать опцию в файле настроек "debugCounters": { "disable": true }

Отладочная информация позволяет проанализировать:

  1. Результат выполнения выражений
  2. Представление вычисления выражения в обратной польской нотации
  3. Результаты проведения конверсий
  4. Результаты выполнения функций
  5. Результаты выполнения запросов в базу данных
  6. Результат вычисления событий Update events
  7. Значения переменных
  8. Переменные, которые не удалось вычислить
  9. Количество итераций для вычисления переменных

Описание интерфейса

Верхняя панель Variables позволяет выбрать пару объект-счетчик для отображения отладочной информации.

Object list

Если в системном меню Objects выбрать объекты, а затем запустить Variables, выбранные объекты появятся в поле Objects list. При необходимости можно добавить объекты в поле Objects list. Для этого нужно выбрать объекты в системном меню Objects и нажать на ADD SELECTED OBJECTS. Если нажать на крестик справа от объекта в поле Objects list, объект будет удален. Удалить все объекты из Objects list можно нажав на REMOVE ALL OBJECTS.

Выбрать объект, с котором планируется работать можно из списка объектов над Object list

Filter counter by group

Для поиска счетчика, можно отфильтровать их по группе

Counter selection

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

Reload

Для обновления загруженных отладочных данных по выбранному счетчику служит кнопка Reload

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

Отладочные данные

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

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

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

Описание полей таблицы

  1. Time - время вычисления переменной
  2. Name - Имя переменной. Для Update event в столбце так же будет представлена информация о режиме обновления счетчика
  3. Expression - вычисляемое выражение или историческая функция
  4. Result - результат вычисления выражения и количество итераций, необходимых для вычисления. Большое количество итераций может создавать повышенную нагрузку на систему.
  5. Variables - Значения всех переменных во время вычисления значения текущей переменной. Unresolved variables показывает переменные, значения которых вычислить не удалось. Если нажать на элемент в ячейке столбца Variables, откроется форма в которой будут отображены значения переменных.
  6. Functions
    1. Если переменная вычислялась как выражение, то в ячейке будет записано выражение и обратная польская нотация, использованная для его вычисления, включая типы объектов, значения переменных, функций, операнды и результат вычисления.
    2. Если переменная вычисляется как значение функции для работы с историческими данными, то в ячейке будет записан результат выполнения запроса к базе данных и список полученных исторических данных.

Примеры отображения отладочной информации

Вычисление Update event

На примере показано вычисление Update event. Бирюзовый цвет фона означает, что результат вычисления значения выражения Update event такой, что будет запущен сборщик

В столбце Name указано, что переменная является Update event. Режим обновления для счетчика выбран как "Update each time when expression value is changed to true and once when changed to false", то есть обновлять каждый раз, когда значение выражения изменится на true и один раз, когда значение выражения изменится на false.

В столбце Expression указано выражение Update event: %:PARENT_VALUE:% < %:FREE_MEMORY_LIMIT:%. В данном случае сравнивается значение, полученное от родительского счетчика %:PARENT_VALUE:% со значением переменной %:FREE_MEMORY_LIMIT:%

В столбце Result есть информация, что результатом вычисления выражения стало false и количество итераций для вычисления выражения было 2. Первая итерация потребовалась для вычисления значения переменной %:FREE_MEMORY_LIMIT:%.

В столбце Variables в заголовке формы с переменными есть информация о том, что в счетчике есть 11 переменных. Так же нет ни одной переменной, значение которой не удалось вычислить. Если нажать на панель с этой информацией, откроется форма в которой по алфавиту будут перечислены переменные и их значения. Для вычисления выражения %:PARENT_VALUE:% < %:FREE_MEMORY_LIMIT:% используется %:PARENT_VALUE:% = 1631703040 и %:FREE_MEMORY_LIMIT:% = 1572864000.

Столбец Functions в данном случае показывает выражение %:PARENT_VALUE:% < %:FREE_MEMORY_LIMIT:% и процесс его вычисления, используя алгоритм обработки обратной польской нотации.

(object: {"type":"digit","data":1631703040},
 object: {"type":"digit","data":1572864000},
 object: {"type":"operator","operator":"<"})
  1. Первый объект является числом "digit" и его значение 1631703040.
  2. Второй объект является числом "digit" и его значение 1572864000.
  3. К ним применяется операнд "<"

Результат вычисления данного выражения является false (result: false)

Вычисление конверсии

На примере ниже показано вычисление конверсии. Значение 1500Mb преобразуется в байты.

В столбце Name указано название переменной FREE_MEMORY_LIMIT

В столбце Expression отображено исходное значение для конверсии - 1500Mb

В столбце Result представлен результат вычисления - 1572864000

Вычисление значения параметра для сборщика

Для сборщика Event generator вычисляется параметр Description of event, который будет отображаться в Dashboard.

В столбце Name отображается параметр счетчика, значение которого будет рассчитываться:

Free memory is %:FREE_MEMORY:%. Threshold %:HUMAN_FREE_MEMORY_LIMIT:%

и сборщик Event generator со всеми параметрами, которые ему передаются, включая тот, который будет рассчитываться:

[event-generator(
    1,
    2,
    ,
    Free memory is %:FREE_MEMORY:%. Threshold %:HUMAN_FREE_MEMORY_LIMIT:%,
    1,
    На %:ZABBIX_HOSTNAME:% %:FREE_MEMORY:% свободной памяти
)]

В столбце Expression еще раз отображается вычисляемое выражение Free memory is %:FREE_MEMORY:%. Threshold %:HUMAN_FREE_MEMORY_LIMIT:%

В столбце Result отображается результат вычисления выражения:

Free memory is 1.52GB. Threshold 1.46GB
Вычисление функции

Пример вычисления значения функции с переменной

В столбце Name отображается имя переменной (HUMAN_FREE_MEMORY_LIMIT), значение которой вычисляется

В столбце Expression Показана функция с параметрами toHuman(%:FREE_MEMORY_LIMIT:%, "Bytes"). Функция переводит значение переменной из байт (1572864000) в удобную для восприятия для человека форму (1.46GB)

В столбце Result - результат вычисления функции: 1.46GB

Столбец Variables позволяет посмотреть значения вычисленных переменных

Столбец Functions показывает процесc вычисления функции включая процесс вычисления использующихся в функции переменных

toHuman(number: 1572864000, string: Bytes);
result: 1.46GB
toHuman(%:FREE_MEMORY_LIMIT:%, "Bytes")(object: {"type":"other","data":"1.46GB"});
result: 1.46GB
Вычисление функции на основе исторических значений

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

Столбец Name содержит имя переменной START_TIME

Столбец Expression содержит функцию с параметрами, значение которой будет вычислено.

MY_SERVICE {SERVER1} (I: SERVICE START TIME): lastRob(#20, #0, 0)

Столбец Result содержит результат вычисления: 32600365 (время в формате timestamp)

Столбец Function содержит исторические данные, на основе которых было вычислено значение функции.

29.03 09:00:27: 32419988
30.03 09:00:28: 32424616
31.03 09:00:14: 32414023
01.04 09:00:16: 32415277
02.04 09:00:24: 32424799
03.04 09:00:22: 32421961
04.04 09:00:12: 32412465
05.04 09:01:44: 32504857
07.04 09:00:53: 32434470
08.04 09:00:27: 32427185
10.04 09:03:10: 32590293
11.04 09:01:08: 32468366
13.04 09:00:24: 32419006
14.04 09:01:17: 32408282
16.04 09:00:13: 32413117
18.04 09:01:30: 32421608
20.04 09:03:14: 32594494
21.04 09:00:43: 32421835
22.04 09:03:11: 32591450
24.04 09:03:20: 32600365