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

Обзор

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

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

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

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

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

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

Команды из пользовательских параметров выполняются Zabbix агентом. Может быть возвращено до 512КБ данных. Однако следует отметить, что текстовое значение, которое может в конечном итоге записано в базу данных ограничено 64КБ в MySQL (по остальным базам данных смотрите информацию в таблице).

Возвращаемым значением команды является стандартный вывод; стандартный вывод ошибок отбрасывается. В операционных системах 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) для выполнения.
Ссылки на позиции со знака $ интерпретируются независимо от того заключены ли они в двойные (") или одинарные (') кавычки.
Для использования ссылок на позиции без изменения, укажите двойной символ доллара - например, awk '{print $$2}'. В этом случае $$2 фактически превратится в $2 при выполнении команды.

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

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

Пользовательские параметры которые возвращают текст (символ, журнал, текстовые типы информации) теперь могут возвращать только пробел, при этом полученное значение становится пустой строкой (поддерживается начиная с 2.0). Если командой возвращено несоответствующее требованиям значение, тогда агент отправляет сообщение 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]

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