Zabbix Documentation 3.4

2.23.04.04.2 (current)In development:4.4 (devel)Unsupported:1.82.02.43.23.4

User Tools

Site Tools


ru:manual:config:items:userparameters

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
ru:manual:config:items:userparameters [2018/06/13 05:17]
ru:manual:config:items:userparameters [2019/05/29 13:33] (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) для выполнения.\\ Ссылки на позиции интерпретируются Zabbix агентом независимо от того заключены ли они в двойные (") или в одинарные (') кавычки.\\ Для использования ссылок на позиции без изменения,​ укажите двойной символ доллара - например,​ awk '​{print $$2}'. В этом случае ''​$$2''​ фактически превратится в ''​$2''​ при выполнении команды. |
 + 
 +<note important>​Ссылки на позиции,​ начинающиеся со знака $, ищутся и заменяются Zabbix агентом только в случае гибких пользовательских параметров. В случае простых пользовательских параметров такие ссылки пропускаются и, следовательно,​ экранирование любых знаков $ не требуется.</​note>​
 +
 +<note important>​По умолчанию некоторые символы не разрешены в пользовательских параметрах. Смотрите документацию по [[ru:​manual:​appendix:​config:​zabbix_agentd|UnsafeUserParameters]] для получения полного списка таких символов.</​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]
 +
 +=== Результат команды ===
 +
 +Результирующим значением команды является стандартный вывод вместе со стандартным выводом ошибок.
 +
 +<note important>​​Текстовый элемент данных (символ,​​ журнал или текст типами информации) не станет неподдерживаемым в случае вывода ошибки стандартным выводом.</​note>​
 +
 +Код выхода не проверяется.
 +
 +Обратите внимание,​ что в Zabbix версиях 3.4.0-3.4.2 у результата выполнения проверялся код выхода. В этих версиях элемент данных становился неподдерживаемым,​ если код выхода отличался от 0 (нуля).
 +
 +Пользовательские параметры,​ которые возвращают текст (символ,​ журнал,​ текстовый типы информации) могут возвращать пробел. В случае ошибочного результата элемент данных станет неподдерживаемым.