Zabbix. Удалённое выполнение команды (SSH)

Автор: Андрей Торженов

Допустим, у вас есть два сервера (Сервер-А и Сервер-Б) связанных между собой по VPN и в случае, если Сервер-Б стал недоступен (упал VPN), то после поднятия VPN, на Сервере-А нужно перезапустить определенный сервис.

Для выполнения команды на перезапуск сервиса используется SSH.

Логика работы

В Zabbix настроен мониторинг Сервера-Б (icmppingloss) и когда 100% потери пакетов до Сервера-Б, то срабатывает Триггер (Trigger), который инициирует Действие (Action) — «Отправить сообщение» (Send message) о проблеме на e-mail. В нашем случае будет и второе Действие (Action) — «Удалённая команда» (Remote command), т.е. перезапуск сервиса.

Создаём действие

Меню: Настройка > Действия > Создать действие (источник события: Триггеры)

Menu: Configuration > Actions > Create action (Event source: Triggers)

В Условия (Conditions) добавляем Триггер (Trigger), на который будет реакция.

Zabbix: Создание действия

Zabbix: Создание действия

Настраиваем «Операции восстановления»

Нам нужно перезапустить сервис только когда VPN канал восстановится, т.е. когда два сервер будут уже видеть друг друга. Поэтому, идём в закладку «Операции восстановления» (Recovery operations).

Zabbix: Создание действия > Операции восстановления

Zabbix: Создание действия > Операции восстановления

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

Добавляем операции

В поле «Операции» (Operations) нажимаем кнопка «Новый» (New).

Добавляем операцию «Отправить сообщение« (Send message).

Zabbix: Создание действия > Операции восстановления > Отправка сообщения

Zabbix: Создание действия > Операции восстановления > Отправка сообщения

Не забываем везде нажимать кнопку «Добавить» или «Обновить» !

 

Добавляем операцию «Удаленная команда» (Remote command).

Zabbix: Создание действия > Операции восстановления > Удалённая команда

Zabbix: Создание действия > Операции восстановления > Удалённая команда

В поле «Список целей» (Target list) указываем Сервер-А (именно на нём нам нужно перезапустить сервис).

В поле «Команды» (Commands), указываем команду, которую нужно выполнить удалённо на Сервере-А для перезапуска нужного сервиса.

Остальные поля понятны.

В результате будет выглядеть следующим образом:

Zabbix: Создание действия > Операции восстановления

Zabbix: Создание действия > Операции восстановления

Нажимаем кнопку «Добавить»!

Теперь, когда сработает Триггер и произойдёт восстановление (VPN канал поднялся), нам придёт сообщение на e-mail и произойдёт подключение по SSH к Серверу-А и выполнение команды на перезапуск сервиса.

Отладка «Действий»

Если возникают проблемы с выполнением удалённых команд, то идём в «Отчёты > Журнал действий» (Reports > Actions log) и смотрим, какие там ошибки относящиеся к нашему Действию.

Например:

Zabbix: Журнал действий

Zabbix: Журнал действий

Команда не выполнилась, неверно указал пароль для подключения по SSH.

Если у вас удалённые команды корректно выполняются, но в «Отчёты > Журнал действий» (Reports > Actions log) появляется следующая ошибка: «Cannot read data from SSH server»,

Zabbix. Cannot read data from SSH server

Zabbix. Cannot read data from SSH server

то вам нужно в конфигурационном файле zabbix_server.conf (в CentOS 7 он находится в /etc/zabbix) настроить параметр: Timeout=30

Ссылки

The following two tabs change content below.
В профессиональной сфере занимаюсь всем, что связанно с IT. Основная специализация - VoIP и сети передачи данных. Стараюсь не заниматься Windows серверами (но иногда приходится) и 1С.

Добавить комментарий