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

Обзор

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

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

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

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

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

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

· zabbix_agentd -R userparameter_reload

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

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

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

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

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

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

UserParameter=ping,echo 1
Copy
✔ Copied

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

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

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

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

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

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

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

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

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

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

Пример 1

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

UserParameter=ping[*],echo $1
Copy
✔ Copied

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

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

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

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

Этот параметр можно использовать для мониторинга доступности баз данных MySQL. Параметрами мы можем передать имя пользователя и пароль:

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

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

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

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

wc[/etc/passwd,root]
       wc[/etc/services,zabbix]
Copy
✔ Copied

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

Результирующим значением команды является стандартный вывод вместе со стандартным выводом ошибок.

​Текстовый элемент данных (с типами информации символ,​ журнал или текст) не станет неподдерживаемым в случае вывода в стандартный вывод ошибок.

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

To toggle search highlight, press Ctrl+Alt+H
Have an improvement suggestion for this page? Select the text that could be improved and press Ctrl+Enter to send it to the editors.