Среда, 27.11.2024
TiM
Меню сайта
Категории раздела
Мои статьи [9]
1С Бухгалтерия [1]
Arduino / ATMEGA [10]
ESP8266 [1]
OrangePi PC и Raspberry Pi 2 Model B V1.1 [4]
Шаговые двигатели [1]
PHPProBid [0]
CMS DLE (DataLife Engine) [0]
CMS Joomla [13]
SugarCRM [5]
Базы данных [5]
PHP скрипты [16]
Bash и скрипты [27]
IP АТС Elastix / Asterisk [12]
CentOS [6]
Debian [8]
Lubuntu / LinuxMINT [29]
Windows [28]
Умный дом [1]
Сервера [16]
Natural Selection [1]
System Shock 2 [1]
Форма входа
Главная » Статьи » Сервера

Supervisor система управления и контроля процессов

Supervisor

С помощью supervisor можно автоматически запускать и контролировать состояние приложений. Для контроля приложений под управлением supervisor можно использовать удаленный консольный клиент supervisorctl или через web интерфейс.

Официальный сайт проекта: http://supervisord.org

Установка

sudo aptitude update
sudo aptitude install supervisor

Общая настройка демона supervisor

Откроем для редактирования основной конфиг supervisor

mcedit /etc/supervisor/supervisord.conf

и приведем к виду:

[unix_http_server]
file=/var/run/supervisor.sock 
chmod=0400 
chown=root:root ; только root сможет использовать supervisorctl 
#username=user
#password={SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

[inet_http_server]
port = 192.168.10.1:9988
username = user
password = {SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes = 10MB
logfile_backups=10
loglevel = info
pidfile=/var/run/supervisord.pid
childlogdir=/var/log/supervisor 

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
[include]
files = /etc/supervisor/conf.d/*.conf

Подробнее см. на http://supervisord.org/configuration.html

Получаем хэш SHA-1 пароля для доступа через supervisorctl и http.

echo -n your_password | sha1sum | awk '{print $1}'

Сценарии управления процессами

В каталоге /etc/supervisor/supervisor.d/ по умолчанию находятся файлы со сценариями запуска и управления приложениями через  supervisor.

Пример конфигурационного файла supervisor для запуска двух процессов shadowsocks:

[program:ssserver]
command=sslocal --user shadowsocks -qq -c /etc/shadowsocks/shadowsocks_%(process_num)s.conf
process_name=%(program_name)s_%(process_num)d
numprocs=2
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
redirect_stderr=true
user=root
stdout_logfile=/var/log/shadowsocks/%(program_name)s_%(process_num)d.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5

#stderr_logfile=/var/log/shadowsocks/stderr_%(program_name)s_%(process_num)d.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=5

Использование

После первоначальных настроек перезапустим демон supervisord

sudo invoke-rc.d supervisor restart

Далее для работы с supervisor лучше использовать supervisorctl.

После добавления/редактирования конфигурации нового сервиса необходимо «перечитать» конфиги.

Показать список приложений, конфиги которых были изменены.

sudo supervisorctl reread

Перечитать конфиги и перезапустить сервисы, конфиги которых были изменены.

sudo supervisorctl update

Показать текущий статус всех процессов под управлением supervisor
sudo supervisorctl status
или только статус конкретного процесса

sudo supervisorctl status sslocal:sslocal_0

Перезапустить процесс

sudo supervisorctl restart sslocal:sslocal_0
Описание возможных статусов

 

  • STOPPED — процесс остановлен в обычно порядке, т.е. не аварийно;
  • STARTING — процесс запускается;
  • RUNNING — процесс запущен/работает;
  • BACKOFF — процесс запускался, но так и не запустился (такие процессы supervisor перезапускает. Если не получилось через некоторое время запустить процесс, то статус программы устанавливается в FATAL. Почитайте об опции startretries;
  • STOPPING — процесс останавливается;
  • EXITED — процесс завершился (будет автоматически запущен, если установлено autorestart=true);
  • FATAL — процесс не смог запуститься (скорее всего есть ошибки в конфигурационном файле программы);
  • UNKNOWN — неизвестное состояние процесса («supervisord programming error»).

Возможные переходы состояний процесса:

subprocess-transitions_1

Краткий список команд управления supervisorctl

 

avail Вывести все доступные программы
add <name> Активация значений в секции программы или группы
remove <name> Деактивация программы или группы
update Перечитать файл конфигураций и выполнить add/remove, если необходимо. Например, если мы добавили в конфигурационный файл новую секцию с программой, то после update для неё будет вызван add, а если мы удалим секцию, то remove
status [<name>] Вывести текущее состояние всех процессов либо конкретного процесса, передав его имя
pid [<name>] [all] Вывести pid демона supervisord. Если ввести <name>, то выведется pid указаной программы. Если ввести pid all, то выведется список pid‘ов для каждого процесса по одному на каждую строчку
start [<name>] [<gname:*>] [all] Введите <name>, чтобы запустить процесс или группу по имени. Введите all, чтобы запустить все процессы
stop [<name>] [<gname:*>] [all] Введите <name>, чтобы остановить процесс. Введите <gname:*>, чтобы остановить все процессы в группе. Введите all, чтобы остановить все процессы
restart [<name>] [<gname:*>] [all] Введите <name>, чтобы перезагрузить процесс или группу по имени. Введите all, чтобы перезагрузить все процессы
fg <name> Подключиться к процессу. После нажатия на Ctrl+c вы вернетесь в supervisorctl
open <url> Присоединиться к удаленному supervisord (формат записи для UNIX-сокета: unix:///socket/path)
shutdown Остановить supervisord
reload Перезагрузить supervisord
reread Перечитать файл конфигураций (чтобы не перезагружать сам supervisord)
tail [-f] [-<num>] <name> [stdout|stderr] Вывести логи указанного процесса, для выхода из режима нажать Ctrl+c. Если укажете флаг -f, то tail будет следить за логом и выводить вновь появившиеся данные (в общем, работает по аналогии с консольным вызовом tail -f). Если, например, введете tail -100 , то выведется 100 байт log-файла указанного процесса. По умолчанию выводится stdout
maintail [-f][-<num>] Вывести данные из главного log-файла supervisor’a, для выхода нажать Ctrl+c. Если укажите флаг -f, то maintail будет следить за логом и выводить вновь появившиеся данные (в общем, работает по аналогии с консольным вызовом tail -f). Если, например, введете -100, то выведется 100 байт log-файла
clear [<name>] [all] Очистить log-файлы для опеределенных программ (либо для всех программ, если указать all)
version Вывести версию supervisord
exit, quit Выйти из supervisorctl

 

Настройка init,  supervisor

Настроим автоматическую загрузку демона supervisord на втором уровне init (Debian и Ubuntu по умолчанию запускаются на втором уровне инициализии).

sudo update-rc.d -f supervisor remove
sudo sysv-rc-conf --level 2 supervisor on
sudo sysv-rc-conf --list supervisor
Категория: Сервера | Добавил: Timofey (13.01.2016)
Просмотров: 2774
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
YANDEX
Яндекс.Метрика
Сайты
  • Харьковский Юридический Альянс
  • Оцифровка кинопленки
  • TiM ©
    Харьков 2024