10 Пользовательские параметры

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

Пользовательские параметры это команды, которые выполняются Zabbix агентом. В операционных системах UNIX используется интерпретатор командной строки /bin/sh.

Смотрите пошаговое руководство по использованию пользовательских параметров.

1 Простые пользовательские параметры

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

Пользовательский параметр имеет следующий синтаксис:

UserParameter=ключ,команда
Параметр Описание
Ключ Уникальный ключ элемента данных.
Команда Команда, которая будет выполнена для получения значения ключа.
Пример 1

Простая команда

UserParameter=ping,echo 1

Агент всегда будет возвращать '1' для элемента данных с ключом 'ping'.

Пример 2

Более сложный пример

UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive

Агент будет возвращать '1' если MySQL сервер доступен, '0' – в противном случае.

2 Гибкие пользовательские параметры

Гибкие пользовательские параметры могут быть использованы для большей управляемости и гибкости.

Гибкий пользовательский параметр:

UserParameter=ключ[*],команда
Параметр Описание
Ключ Уникальный ключ элемента данных. [*] определяет, что ключ может принимать параметры.
Команда Команда, которая будет выполнена для получения значения ключа.
Zabbix агент производит анализ содержимого внутри квадратных скобок [] и заменяет им переменные $1,...,$9 в команде. Переменная $0 будет заменена оригинальной командой (до расширения $0,...,$9) для выполнения.

Для использования ссылок на позиции не измененными, укажите двойной символ доллара - например, awk '{print $$2}'.

Если опция UnsafeUserParameters не определена в конфигурационном файле Zabbix агента, то в командах недопустимы следующие символы: \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @

Используемая команда должна всегда возвращать не пустое значение (и не перевод строки). Если командой возвращено несоответствующее требованиям значение, тогда агентом будет отправлено сообщение ZBX_NOTSUPPORTED.

Пример 1

Очень простой пример

UserParameter=ping[*],echo $1

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

  • ping[0] - будет всегда возвращать ‘0’
  • ping[aaa] - будет всегда возвращать ‘aaa’
Пример 2

Давайте добавим больше смысла!

UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive

Этот параметр может быть использован для мониторинга доступности баз данных MySQL. В качестве параметров мы можем передать имя пользователя и пароль. Ключ элемента данных в таком случае выглядит вот так:

mysql.ping[zabbix,our_password]
Пример 3

Сколько строк в файле, которые соответствуют регулярному выражению?

UserParameter=wc[*],grep -c "$2" $1

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

wc[/etc/passwd,root]
       wc[/etc/services,zabbix]

Обратите внимание, что демон Zabbix агента до версии 1.8.3 не поддерживает пользовательские параметры при запуске агента с ключом -t или -p (используются для тестирования одного элемента данных или для вывода списка всех поддерживаемых элементов данных). Смотрите manpage для получения более подробной информации по более ранним версиям.