Иногда вы можете захотеть выполнять проверку через агент, которая не предопределена в Zabbix. Здесь на помощь придут пользовательские параметры.
Вы можете написать команду, которая вернет необходимые вам данные и добавить эту команду как пользовательский параметр в файл конфигурации агента (параметр конфигурации 'UserParameter').
Пользовательский параметр имеет следующий синтаксис:
UserParameter=<ключ>,<команда>
Как вы можете видеть, пользовательский параметр также содержит ключ. Ключ будет необходим при настройке элемента данных. Укажите ключ на ваш выбор, на который будет легко ссылать (он должен быть уникальным в пределах узла сети). Перезапустите агента.
Затем, когда настроите элемент данных, укажите ключ на который ссылается команда из пользовательского параметры, которую вы хотите выполнять.
Команды из пользовательских параметров выполняются Zabbix агентом. Может быть возвращено до 512КБ (64КБ до Zabbix 2.0.5). В операционных системах UNIX используется интерпретатор командной строки /bin/sh. Таким образом, вы можете повысить функциональность Zabbix агентов.
Смотрите пошаговую инструкцию по использованию пользовательских параметров.
Простая команда:
UserParameter=ping,echo 1
Агент будет всегда возвращать '1' для элемента данных с ключем 'ping'.
Более сложный пример:
UserParameter=mysql.ping,mysqladmin -uroot ping|grep -c alive
Агент будет возвращать '1', если MySQL сервер доступен, '0' - в противном случае.
Flexible user parameters accept parameters with the key. This way a flexible user parameter can be the basis for creating several items.
Flexible user parameters have the following syntax:
UserParameter=ключ[*],команда
Параметр | Описание |
---|---|
Ключ | Уникальный ключ элемента данных. [*] задает, что ключ может принимать параметры из скобок. |
Команда | Команда, которая будет выполнена для получения значения ключа. Zabbix агент производит анализ содержимого внутри квадратных скобок [] и заменяет им переменные $1,…,$9 в команде. Переменная $0 будет заменена оригинальной командой (до расширения $0,…,$9) для выполнения. |
Очень простой пример:
UserParameter=ping[*],echo $1
Мы можем создать неограниченное количество элементов данных для наблюдения за чем угодно, указав в таком формате ping[что угодно].
Давайте добавим больше смысла!
UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive
Этот параметр может быть использован для мониторинга доступности баз данных MySQL. В качестве параметров мы можем передать имя пользователя и пароль. Ключ элемента данных в таком случае выглядит вот так:
mysql.ping[zabbix,our_password]
Сколько строк в файле, которые соответствуют регулярному выражению?
UserParameter=wc[*],grep -c "$2" $1
Этот параметр может быть использован для подсчета количества строк в файле.
wc[/etc/passwd,root] wc[/etc/services,zabbix]