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

Обзор

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

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

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

UserParameter=<key>,<command>

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

Перезапустите агент или используйте опцию управления во время выполнения агента, чтобы применить новый параметр, например:

zabbix_agentd -R userparameter_reload

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

Пользовательские параметры — это команды, выполняемые агентом Zabbix. Обратите внимание, что до 16 МБ данных может быть возвращено до этапов предобработки значения элемента данных.

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

См. также:

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

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

UserParameter=ping,echo 1

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

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

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

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

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

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

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

UserParameter=key[*],command
Параметр Описание
Ключ Уникальный ключ элемента данных. [*] означает, что этот ключ принимает параметры внутри квадратных скобок.
Параметры задаются при настройке элемента данных.
Команда Команда, которая будет выполнена для определения значения ключа.
Только для гибких пользовательских параметров:
Вы можете использовать позиционные ссылки $1…$9 в команде, чтобы обратиться к соответствующему параметру в ключе элемента данных.
Zabbix разбирает параметры, заключенные в [ ], в ключе элемента данных и подставляет $1,...,$9 в команду соответствующим образом.
$0 будет заменен исходной командой (до расширения $0,...,$9), которая должна быть выполнена.
Позиционные ссылки интерпретируются независимо от того, заключены ли они в двойные (") или одинарные (') кавычки.
Чтобы использовать позиционные ссылки без изменений, укажите двойной знак доллара — например, awk '{print $$2}'. В этом случае $$2 фактически превратится в $2 при выполнении команды.

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

По умолчанию в пользовательских параметрах не допускаются некоторые символы. Полный список символов см. в UnsafeUserParameters.

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

Результат команды

Возвращаемое значение команды — это стандартный вывод вместе со стандартным потоком ошибок, созданным командой.

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

Возвращаемое значение ограничено 16 МБ (включая завершающие пробелы, которые обрезаются); ограничения базы данных также применяются.

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