2 Удаленные команды

Обзор

С помощью удаленных команд вы можете указать какие из предустановленных команд будут выполнены на наблюдаемом узле сети при выполнении некоторых условий.

Таким образом, удаленные команды являются мощным механизмом для умного про-активного мониторинга.

Из наиболее очевидных применений функции вы можете попробовать:

  • Автоматический перезапуск какого-либо приложения (веб-сервер, промежуточное ПО, CRM), если оно не отвечает
  • Использовать команду IPMI 'reboot' для перезагрузки некоторого удаленного сервера, если он не отвечает на запросы
  • Автоматическую очистку диска (удаление старых файлов, очистка /tmp), если закончилось место на диске
  • Миграцию VM с одного физического сервера на другой, в зависимости от загрузки CPU
  • Добавление новых узлов в облачную среду при недостаточных ресурсах CPU (диска, памяти, чего-угодно)

Настройка действий для удаленных команд аналогична настройке действий для отправки сообщений, с той лишь разницей, что вместо отправки сообщения Zabbix будет выполнять команду.

Выполнение удаленных команд не поддерживается через Zabbix прокси, поэтому команды с Zabbix сервера на агенте требуют прямого подключения.

Ограничение удаленной команды после раскрытия всех макросов зависит от типа базы данных и выбранной кодировки (при сохранении не-ASCII символы требуют более чем один байт):

База данных //Ограничение в символах // //Ограничение в байтах //
MySQL 65535 65535
Oracle база данных 2048 4000
PostgreSQL 65535 не ограничено
IBM DB2 2048 2048
SQLite (только Zabbix прокси) 65535 не ограничено

Смотрите также страницу о выполнении команд.

Удаленные команды будут выполнены даже если намеченный узел сети в обслуживании.

Следующее руководство содержит пошаговые инструкции о том, как настроить удаленные команды.

Настройка

Удаленные команды, которые выполняются на стороне Zabbix агента (пользовательские скрипты) сначала должны быть включены в соответствующем zabbix_agentd.conf.

Убедитесь, что параметр EnableRemoteCommands равен 1 и раскомментирован. Перезапустите демона агента, если изменили этот параметр.

Удаленные команды не работают с активными Zabbix агентами.

Затем, при настройке нового действия в Настройка→Действия:

  • На вкладке Операции, выберите тип операции Удаленная команда
  • Выберите тип удаленной команды (IPMI, Пользовательский скрипт, SSH, Telnet, Глобальный скрипт)
  • Введите удаленную команду

Например:

sudo /etc/init.d/apache restart 

В этом случае, Zabbix попытается перезапустить процесс Apache. Используя эту команду, убедитесь, что она будет выполнена Zabbix агентом (отметьте соответствующий пункт в Выполнять на).

Обратите внимание на использование sudo - пользователь Zabbix не имеет прав на перезапуск системных сервисов по умолчанию. Смотрите подсказки ниже о том, как настроить sudo.

Zabbix агент должен работать на удаленном узле сети и должен принимать входящие подключения. Zabbix агент выполняет команды в фоновом режиме.

Zabbix не проверяет была ли выполнена команда успешно.

Удаленные команды на Zabbix агенте выполняются без использования какого-либо времени ожидания с помощью ключа system.run[,nowait]. На Zabbix сервере удаленные команды выполняются со временем ожидания указанном в TrapperTimeout параметре в zabbix_server.conf файле.

  • На вкладке Условия определите соответствующие условия. Для этого примера, укажите, чтобы действие активировалось только в случае любых чрезвычайных проблем с одним из приложений Apache.

Права доступа

Убедитесь, что пользователь 'zabbix' имеет права на выполнение добавленных команд. Один наиболее интересный вариант - использование sudo для предоставления доступа к привилегированным командам. Для настройки доступа, выполните из под root:

# visudo

Примеры строк, которые можно использовать в файле sudoers:

# разрешает пользователю 'zabbix' выполнение любых команд без пароля.
       zabbix ALL=NOPASSWD: ALL
       
       # разрешает пользователю 'zabbix' перезапуск apache без пароля.
       zabbix ALL=(ALL) NOPASSWD: /etc/init.d/apache restart

В некоторых системах настройки в файле sudoers будут препятствовать не-локальным пользователям выполнять команды. Для изменения этого, раскомментируйте опцию requiretty в /etc/sudoers.

Удаленные команды в случае нескольких интерфейсов

Если целевая система имеет несколько интерфейсов выбранного типа (Zabbix агент или IPMI), удаленные команды будут выполнены на интерфейсе по умолчанию.

Удаленные команды через IPMI

В случае удаленных команд через IPMI необходимо использовать следующий синтаксис:

<команда> [<значение>]

где

  • <команда> - одна из IPMI команд без пробелов
  • <значение> - 'on', 'off' или любое положительное целое число. <значение> является опциональным параметром.

Примеры

Пример 1

Перезагрузка Windows при определенном условии.

Для того, чтобы автоматически перезагрузить Windows, когда Zabbix обнаруживает проблемы, определим следующие действия:

ПАРАМЕТР Описание
Тип операции 'Удаленная команда'
Тип 'Пользовательский скрипт'
Команда c:\windows\system32\shutdown.exe -r -f
Пример 2

Перезагрузка узла сети с использованием управления по IPMI.

ПАРАМЕТР Описание
Тип операции 'Удаленная команда'
Тип 'IPMI'
Команда reset
Пример 3

Выключение узла сети с использованием управления по IPMI.

ПАРАМЕТР Описание
Тип операции 'Удаленная команда'
Тип 'IPMI'
Команда power off