This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Previous revision | ||
ru:manual:config:items:userparameters [2015/12/22 20:51] |
ru:manual:config:items:userparameters [2018/03/07 22:38] (current) dotneft |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ==== - #4 Пользовательские параметры ==== | ||
+ | === Обзор === | ||
+ | |||
+ | Иногда вы можете захотеть выполнять проверку через агент, которая не предопределена в Zabbix. В этом случае вам на помощь придут пользовательские параметры. | ||
+ | |||
+ | Вы можете написать команду, которая вернет необходимые вам данные и добавить эту команду как пользовательский параметр в [[:ru:manual:appendix:config:zabbix_agentd|файл конфигурации агента]] (параметр конфигурации 'UserParameter'). | ||
+ | |||
+ | Пользовательский параметр имеет следующий синтаксис: | ||
+ | |||
+ | UserParameter=<ключ>,<команда> | ||
+ | |||
+ | Как вы можете видеть, пользовательский параметр также содержит ключ. Ключ потребуется при настройке элемента данных. Введите ключ на ваш выбор, на который будет легко ссылаться (он должен быть уникальным в пределах узла сети). Перезапустите агента. | ||
+ | |||
+ | Затем, когда [[item|настроите элемент данных]], введите ключ на который ссылается команда из пользовательского параметра, которую вы хотите выполнять. | ||
+ | |||
+ | Команды из пользовательских параметров выполняются Zabbix агентом. Может быть возвращено до 512КБ данных. Однако следует отметить, что текстовое значение, которое может в конечном итоге записано в базу данных ограничено 64КБ в MySQL (по остальным базам данных смотрите информацию в [[:ru/manual/config/notifications/action/operation/remote_command#обзор|таблице]]). | ||
+ | |||
+ | Возвращаемым значением команды является стандартный вывод; стандартный вывод ошибок отбрасывается. В операционных системах UNIX используется интерпретатор командной строки **/bin/sh**. Пользовательские параметры подчиняются времени ожидания проверок на агента; если время ожидания будет превышено, созданный по пользовательским параметрам процесс будет завершен. | ||
+ | |||
+ | Смотрите также: | ||
+ | |||
+ | * [[ru:manual:config:items:userparameters:extending_agent|Пошаговую инструкцию]] по использованию пользовательских параметров. | ||
+ | * [[ru/manual/appendix/command_execution|Выполнение команд]] | ||
+ | |||
+ | == Примеры простых пользовательских параметров == | ||
+ | |||
+ | Простая команда: | ||
+ | |||
+ | 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'' при выполнении команды. | | ||
+ | |||
+ | <note important>Ссылки на позиции со знака $ ищутся и заменяются Zabbix агентом только с гибкими пользовательскими параметрами. В случае с простыми пользовательскими параметрами подобная обработка ссылок опускается и, поэтому, никакое экранирование символа $ не требуется.</note> | ||
+ | |||
+ | <note important>Если опция [[ru:manual:appendix:config:zabbix_agentd|UnsafeUserParameters]] активирована в файле конфигурации Zabbix агента, то в командах недопустимы следующие символы: \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @. Также, в дополнение к этому, новые строки не разрешены.</note> | ||
+ | |||
+ | <note>Пользовательские параметры которые возвращают текст (символ, журнал, текстовые типы информации) теперь могут возвращать только пробел, при этом полученное значение становится пустой строкой (поддерживается начиная с 2.0). Если командой возвращено несоответствующее требованиям значение, тогда агент отправляет сообщение ZBX_NOTSUPPORTED.</note> | ||
+ | |||
+ | == Пример 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] | ||
+ | |||
+ | === Результат команды === | ||
+ |