Zabbix. User Parameters (Пользовательские параметры)

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

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

В качестве примера возьмем, например, такую задачу: необходимо мониторить и выводить на график количество файлов в каталоге /var/www/. Команда в данном случаи будет такая: dir /var/www/ | wc -l. Запускаем ее в терминале и убеждаемся, что ее результатом действительно является число, равное количеству файлов в нужной директории.

Теперь, когда у нас есть команда необходимо добавить ее в конфиг zabbix-агента. Допишем в файл /etc/zabbix/zabbix-agent.conf (на том сервере, значение с которого будем снимать) такую строчку:

UserParameter mon.filecount,dir /var/www/ | wc -l

и перезапустим zabbix-agentd

Теперь о том, что это за параметры.

В данном случае mon.filecount - это уникальный ключ, который однозначно характеризует снимаемый параметр. Он может быть любым, но не должен пересекаться с уже существующими. Этот ключ позже необходимо будет ввести при создании нового Элемента данных (Data Item) в поле Ключ (Key).

dir / | wc -l - Команда, которая будет использоваться для получения значения.

Также реализована возможность передачи параметров нашей команде. Например, если мы заранее не знаем, для какой директории нам необходимо мониторить количество файлов, то мы можем написать в конфиге агента так:

UserParameter mon.filecount[*],dir $1 | wc -l

И использовать в качестве ключа Элемента данных такую строчку: mon.filecount[/var/www/], то передаваемый параметр подставится вместо $1 и результат будет таким же.

Для передачи нескольких параметров необходимо указывать их через запятую, а в команде использовать $1, $2 и т. д.