С помощью удаленных команд вы можете указать какие из предустановленных команд будут выполнены на наблюдаемом узле сети при выполнении некоторых условий.
Таким образом, удаленные команды являются мощным механизмом для умного про-активного мониторинга.
Из наиболее очевидных применений функции вы можете попробовать:
Настройка действий для удаленных команд аналогична настройке действий для отправки сообщений, с той лишь разницей, что вместо отправки сообщения Zabbix будет выполнять команду.
Удаленные команды могут выполняться на стороне Zabbix сервера, прокси или агента. Удаленные команды на Zabbix агенте могут выполняться напрямую Zabbix сервером или через Zabbix прокси. По умолчанию удаленные команды отключены как у Zabbix агента, так и у Zabbix прокси. Их можно включить, изменив значение параметра EnableRemoteCommands на значение '1'.
Ограничение длины удаленных команд после раскрытия всех макросов зависит от типа базы данных и заданной кодировки (для хранения не-ASCII символов требуется более одного байта):
База данных | Ограничение в символах | Ограничение в байтах |
MySQL | 65535 | 65535 |
Oracle Database | 2048 | 4000 |
PostgreSQL | 65535 | не ограничено |
IBM DB2 | 2048 | 2048 |
SQLite (только Zabbix прокси) | 65535 | не ограничено |
Удаленные команды выполняемые Zabbix сервером запускаются как описано в разделе Выполнение команд, включая проверку кода выхода.
Удаленные команды будут выполнены даже если намеченный узел сети в обслуживании.
Следующее руководство содержит пошаговые инструкции о том, как настроить удаленные команды.
Удаленные команды, которые выполняются на стороне Zabbix агента (пользовательские скрипты) сначала должны быть включены в соответствующем zabbix_agentd.conf.
Убедитесь, что параметр EnableRemoteCommands равен 1 и раскомментирован. Перезапустите демона агента, если изменили этот параметр.
Удаленные команды не работают с активными Zabbix агентами.
Затем, при настройке нового действия в Настройка → Действия:
Все обязательные поля ввода отмечены красной звёздочкой.
Например:
В этом случае, Zabbix попытается перезапустить процесс Apache. Используя эту команду, убедитесь, что она будет выполнена Zabbix агентом (нажмите на Zabbix агент напротив Выполнять на).
Обратите внимание на использование sudo - пользователь Zabbix не имеет прав на перезапуск системных сервисов по умолчанию. Смотрите подсказки ниже о том, как настроить sudo.
Zabbix агент должен работать на удаленном узле сети и должен принимать входящие подключения. Zabbix агент выполняет команды в фоновом режиме.
Удаленные команды на стороне Zabbix агента выполняются без учета времени ожидания при помощи ключа system.run[,nowait], таким образом результаты выполнения не проверяются. На стороне Zabbix сервера команды выполняются с учетом времени ожидания, как указано в параметре TrapperTimeout в файле zabbix_server.conf и результаты выполнения проверяются.
Убедитесь, что пользователь 'zabbix' имеет права на выполнение добавленных команд. Один наиболее интересный вариант - использование sudo для предоставления доступа к привилегированным командам. Для настройки доступа, выполните из под root:
Примеры строк, которые можно использовать в файле sudoers:
# разрешает пользователю 'zabbix' выполнение любых команд без пароля.
zabbix ALL=NOPASSWD: ALL
# разрешает пользователю 'zabbix' перезапуск apache без пароля.
zabbix ALL=(ALL) NOPASSWD: /etc/init.d/apache restart
В некоторых системах настройки в файле sudoers будут препятствовать не-локальным пользователям выполнять команды. Для изменения этого, раскомментируйте опцию requiretty в /etc/sudoers.
Если целевая система имеет несколько интерфейсов выбранного типа (Zabbix агент или IPMI), удаленные команды будут выполнены на интерфейсе по умолчанию.
Имеется возможность выполнения удаленных команд через SSH и Telnet, используя отличный интерфейс от интерфейса Zabbix агента. Доступный интерфейс, который будет использоваться, выбирается в следующем порядке:
* Zabbix агент интерфейс по умолчанию
* SNMP интерфейс по умолчанию
* JMX интерфейс по умолчанию
* IPMI интерфейс по умолчанию
В случае удаленных команд через IPMI необходимо использовать следующий синтаксис:
где
Перезагрузка Windows при определенном условии.
Для того, чтобы автоматически перезагрузить Windows, когда Zabbix обнаруживает проблемы, определим следующие действия:
ПАРАМЕТР | Описание |
---|---|
Тип операции | 'Удаленная команда' |
Тип | 'Пользовательский скрипт' |
Команда | c:\windows\system32\shutdown.exe -r -f |
Перезагрузка узла сети с использованием управления по IPMI.
ПАРАМЕТР | Описание |
---|---|
Тип операции | 'Удаленная команда' |
Тип | 'IPMI' |
Команда | reset |
Выключение узла сети с использованием управления по IPMI.
ПАРАМЕТР | Описание |
---|---|
Тип операции | 'Удаленная команда' |
Тип | 'IPMI' |
Команда | power off |