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

Обзор

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

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

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

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

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

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

Удаленные команды ограничены 255 символами. Несколько команд могут быть выполнены один за другим при размещении их на новой строке. Удаленные команды могут содержать макросы!

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

Настройка

Удаленные команды, которые выполняются на стороне 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 agent or IPMI), удаленные команды будут выполнены на интерфейсе по умолчанию.

Примеры

Пример 1

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

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

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

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

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

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

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