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

Обзор

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

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

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

UserParameter=<ключ>,<команда>

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

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

zabbix_agentd -R userparameter_reload

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

Команды из пользовательских параметров выполняются Zabbix агентом. Может быть возвращено до 16 МБ данных до шагов предварительной обработки элементов данных.

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

Смотрите также:

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

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

UserParameter=ping,echo 1

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

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

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

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

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

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

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

UserParameter=ключ[*],команда
Параметр Описание
Ключ Уникальный ключ элемента данных. [*] задаёт, что ключ может принимать параметры из скобок. Параметры указываются при настройке элемента данных.
Команда Команда, которая выполняется для получения значения ключа.
Только для гибких пользовательских параметров:
Вы можете использовать в команде позиционные ссылки $1…$9 для того, чтобы сослаться на соответствующий параметр в ключе элемента данных.
Zabbix разбирает параметры, заключенные в [ ] ключа элемента данных, и заменяет $1,…,$9 в команде соответственно.
$0 будет заменена оригинальной командой (до раскрытия $0,…,$9) для выполнения.
Позиционные ссылки интерпретируются Zabbix агентом независимо от того, заключены ли они в двойные (") или в одинарные (') кавычки.
Для использования позиционных ссылок без изменения, укажите двойной символ доллара - например, 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 МБ (включая конечные пробелы, которые усекаются); также применяются ограничения баз данных.

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