5 Пользовательские параметры
Обзор
Иногда вам может понадобиться выполнить проверку агента, которая не предусмотрена в Zabbix по умолчанию. В этом случае помогают пользовательские параметры.
Вы можете написать команду, которая получает нужные вам данные, и включить ее
в пользовательский параметр в файле конфигурации агента (конфигурационный параметр
UserParameter).
Пользовательский параметр имеет следующий синтаксис:
UserParameter=<key>,<command>
Как видите, пользовательский параметр также содержит ключ. Ключ будет необходим при настройке элемента данных. Укажите любой удобный для вас ключ, который легко использовать в ссылках (он должен быть уникальным в пределах узла сети).
Перезапустите агент или используйте параметр управления во время выполнения агента, чтобы применить новый параметр, например:
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=key[*],command
| Параметр | Описание |
|---|---|
| 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]
Результат команды
Возвращаемое значение команды представляет собой стандартный вывод вместе со стандартным выводом ошибок, сформированным командой.
Элемент данных, возвращающий текст (символьный, журнал или информацию типа text), не станет неподдерживаемым в случае вывода в стандартный поток ошибок.
Возвращаемое значение ограничено 16 МБ (включая завершающие пробельные символы, которые усекаются); также применяются ограничения базы данных.
Пользовательские параметры, возвращающие текст (символьный, журнал или информацию типа text), также могут возвращать пробельные символы. В случае недопустимого результата элемент данных станет неподдерживаемым.