Вернуться назад

Мониторинг процесса

Взято с https://losst.ru/avtomaticheskij-perezapusk-servisa-linux

АВТОМАТИЧЕСКИЙ ПЕРЕЗАПУСК СЕРВИСА LINUX

Иногда сервисы ни с того ни с сего падают и приходиться их вручную восстанавливать. Если для пользователя домашнего компьютера это не критично, потому что как упало так и поднимем, но вот на серверах это может вызвать серьезные затруднения, ведь не всегда есть возможность зайти на сервер удаленно и перезапустить сломленный сервис.

В этой инструкции я покажу как настроить автоматический перезапуск сервиса в Linux несколькими способами: с помощью скрипта мониторинга периодически запускаемого через cron и набора утилит для управления демонами daemontools.  Пожалуй начнем с последнего.

АВТОМАТИЧЕСКИЙ ПЕРЕЗАПУСК СЕРВИСА ЧЕРЕЗ DEAMONTOOLS

Daemontools — это набор утилит для управления и мониторинга состояния сервисов в Linux. Основной важной для нас особенностью Daemontools есть возможность автоматически перезапускать сервисы при их падении. Также Daemontools поддерживает ротацию логов, но об этом уже не в этой статье.

Для большинства популярных дистрибутивов есть готовые установочные пакеты в их официальных репозиториях.

Для установки в Ubuntu, Debian, Linux Mint выполните:

 sudo apt-get install daemontools

Для Fedora и RHEL команда установки будет выглядеть следующим образом:

 sudo yum install daemontools

А для Gentoo:

 sudo emerge daemontools

Пользователи ArchLinux могут найти соответствующий пакет в AUR.

Теперь необходимо добавить daemontools в автозагрузку. Сделать это можно добавив следующую команду в конец rc.local:

 sudo nano /etc/rc.local

 svscanboot &

Программа svscanboot запускает и контролирует другие утилиты для управления демонами, если хотите более подробную информацию смотрите на опеннете.

Для управления демонами в Linux Deamontools создает папку /service, все сервисы описанные в этой папке автоматически запускаются при запуске daemontools. Каждый демон должен иметь свой подкаталог и в нем скрипт запуска с названием run.

Теперь рассмотрим создание скриптов для daemontools. Они ничем не отличаются от обычных скриптов linux. Рассмотрим все на примере запуска и мониторинга сервиса apache.

Сначала создайте подкаталог в папке /service:

 mkdir /service/apache

Теперь создайте сам скрипт запуска:

 nano /etc/service/apache/run

/bin/bash

/usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5 -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -k start

У меня Apache запускается такой командой, но у вас может быть по другому. После сохранения сделайте скрипт исполняемым:

 sudo chmod ugo+x /service/apache/run

Далее нужно перезагрузить систему, и можно проверять работоспособность. Найдем список процессов сервиса с помощью ps:

 ps aux | grep apache

Уничтожим все утилитой kill:

 sudo kill -9 <тут pid>

Опять смотрим список процессов и видим что все на месте:

 ps aux | grep apache

АВТОМАТИЧЕСКИЙ ПЕРЕЗАПУСК СЕРВИСА С ПОМОЩЬЮ СКРИПТА

Это самый простой и самый надежный способ работающий абсолютно во всех дистрибутивах linux и не требующий установки дополнительных утилит. Для того же Apache скрипт выглядит следующим образом:

!/bin/bash

ps -A | grep apache || /etc/init.d/apache start

Сохраните файл, сделайте его исполняемым:

 chmod ugo+x ~/path/to/script

Теперь добавьте запись в cron для периодического запуска скрипта:

 crontab -e

*/5 * * * * /path/to/script

В скрине

screen -A -m -d -S name_screen_id1 /path/to/script

Осталось перезапустить cron:

 sudo /etc/init.d/cron restart


igel
Дата: 25 января 2019 г. в 01:23:12

Автор: igel