Supervisor linux что это
Запуск процессов в supervisor
Supervisor — это система клиент/сервер, при помощи которой пользователь (администратор) может контролировать подключенные процессы в системах типа UNIX. Инструмент создает процессы в виде под-процессов от своего имени, поэтому имеет полный контроль над ними.
Supervisor состоит из серверной части под названием supervisord, которая создает и управляет всеми процессами, и системного/веб-интерфейса supervisorctl для управления и мониторинга supervisord.
Установка и настройка supervisor
Процесс установки supervisord в Debian предельно прост. Нужно выполнить команду:
apt-get install supervisor
Установка supervisor, необходимо иметь права root
После установки, supervisor нужно сконфигурировать и добавить программы/процессы, которыми он будет управлять. Файл конфигурации по умолчанию находится в /etc/supervisor/supervisord.conf (для Ubuntu, Debian) или /etc/supervisord.conf для других систем(FreeBSD и т.д.).
Для добавления нового процесса (воркера) нужно дополнить файл аналогичным кодом:
Создание воркера для управления процессом PHP
Кратко пройдемся по параметрам
В случае, когда требуется запуск сразу нескольких инстансов одного и того же процесса, конфигурация будет иметь вид:
Создание 10 копий процесса
После добавления новых процессов/воркеров не забывайте перезагружать supervisor:
Supervisor также включает пользовательский веб-интерфейс supervisorctl, который включается при помощи файла конфигурации. Для этого нужно изменить секцию [inet_http_server], вписав туда верные имя пользователя и пароль:
Включение веб-консоли supervisorctl на 9001-м сокете
Теперь всеми доступными процессами можно управлять через браузер. Помните, что после изменения конфига supervisor и/или supervisorctl нужно обновить.
Дополнительные возможности
В supervisor есть встроенный механизм мониторинга событий, при помощи которого система может оповещать об ошибках:
Если процесс потребляет более 200 МБ памяти, memmon перезапускает его и отправляет уведомление на почту, проверка каждые 60 секунд
При помощи ивентов и собственного скрипта на Pyton можно произвести проверку буквально любого аспекта нужного процесса.
Самое главное
Supervisor — простой и достаточно мощный инструмент для контроля процессов. С правильной настройкой он способен обеспечить бесперебойную работу вашего веб-сервиса.
Этот текст был написан несколько лет назад. С тех пор упомянутые здесь инструменты и софт могли получить обновления. Пожалуйста, проверяйте их актуальность.
Запуск и контроль PHP демона (фоновый процесс) для использования в очередях сообщений
Несколько удобных инструментов для анализа производительности серверов
Настройка supervisor’a для логирования потоков в отдельные файлы
Установка и управление Supervisor на сервере Ubuntu и Debian
В среде многих выделенных серверов часто встречается ряд программ, которые должны работать постоянно, будь то небольшие сценарии оболочки, приложения Node.js, некоторые объемные пакеты.
Конечно, для каждой из этих программ можно написать init-скрипт, но такой подход требует больших затрат времени и ресурсов и не всегда понятен новичкам.
Supervisor – это менеджер процессов, который существенно упрощает управление долго работающими программами, предоставляя простой и понятный интерфейс.
Примечание: Для выполнения данного руководства необходимо уметь работать с командной строкой и устанавливать пакеты, а также иметь базовые навыки управления сервером.
Установка Supervisor
Процесс установки Supervisor в системы Ubuntu и Debian предельно прост, поскольку предварительно собранные пакеты можно найти в репозиториях обеих операционных систем.
Чтобы установить Supervisor, запустите следующую команду с привилегиями root:
apt-get install supervisor
После выполнения этой команды демон Supervisor будет уже запущен, поскольку предварительно собранные пакеты поставляются с init-скриптом (благодаря чему Supervisor будет перезапускаться при каждой перезагрузке системы). Чтобы убедиться, что все работает должным образом, наберите:
service supervisor restart
Итак, теперь Supervisor установлен; попробуйте добавить в него некоторые программы.
Настройка Supervisor
Новые программы добавляются в Supervisor посредством конфигурационных файлов, которые передают переменные среды и сообщают, какой из исполнительных файлов нужно запустить в определенный момент, как обрабатывать вывод.
Примечание: все программы, запущенные через Supervisor, должны работать в режиме non-daemon (который также называется приоритетным режимом). В противном случае Supervisor не сможет определить статус программы. Чтобы включить данный режим, обратитесь к документации и мануалам необходимых программ.
Для примера предположим, что на сервере есть скрипт оболочки, который должен работать постоянно; он находится в /usr/local/bin/long.sh и выглядит так:
#!/bin/bash
while true
do
# Echo current date to stdout
echo `date`
# Echo ‘error!’ to stderr
echo ‘error!’ >&2
sleep 1
done
chmod +x /usr/local/bin/long.sh
Конечно, в практическом смысле, этот сценарий явно бессмысленный, но зато он позволит продемонстрировать основы настройки Supervisor.
[program:long_script] command=/usr/local/bin/long.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log
Ниже приведено описание каждой строки и некоторые тонкие настройки, которые могут пригодиться в дальнейшем.
Конфигурация начинается с определения программы и полного пути к ней.
Эти строки определяют базовое автоматическое поведение скрипта в определенных условиях. Опция autostart запускает программу при загрузке системы; значение false заставит включать программу вручную. Опция autorestart определяет, как Supervisor будет управлять программой в случае ее отключения, и имеет три опции:
Последние две строки определяют местонахождение двух основных лог-файлов программы. В соответствии с именами опций, stdout и stderr задают расположение файлов stdout_logfile и stderr_logfile.
Примечание: Если указанного каталога не существует, его нужно создать до запуска программы, поскольку Supervisor не создает отсутствующие каталоги.
Только что созданная конфигурация – это минимальный шаблон для внесения программы в Supervisor. В документации проекта можно найти множество дополнительных опций конфигурации для тонкой настройки.
Создав конфигурационный файл, нужно известить Supervisor о появлении новой программы; для этого используется команда supervisorctl. Сначала Supervisor должен просмотреть каталог /etc/supervisor/conf.d на наличие новых или измененных программ:
Затем можно активировать новые конфигурации:
Примечание: чтобы эти изменения вступили в силу, всегда запускайте две вышеперечисленные команды после редактирования любого конфигурационного файла программы.
На данный момент программа должна быть запущена; это можно проверить при помощи лог-файла:
$ tail /var/log/long.out.log
Sat Jul 20 22:21:22 UTC 2013
Sat Jul 20 22:21:23 UTC 2013
Sat Jul 20 22:21:24 UTC 2013
Sat Jul 20 22:21:25 UTC 2013
Sat Jul 20 22:21:26 UTC 2013
Sat Jul 20 22:21:27 UTC 2013
Sat Jul 20 22:21:28 UTC 2013
Sat Jul 20 22:21:29 UTC 2013
Sat Jul 20 22:21:30 UTC 2013
Sat Jul 20 22:21:31 UTC 2013
Управление программами
После запуска программ, несомненно, наступит момент, когда их понадобится остановить, перезапустить или просмотреть их статус. Ранее упомянутая программа supervisorctl имеет интерактивный режим, который позволяет управлять программами Supervisor.
Чтобы включить интерактивный режим, запустите supervisorctl без аргументов:
$ supervisorctl
long_script RUNNING pid 12614, uptime 1:49:37
supervisor>
После запуска supervisorctl выведет статус и аптайм всех программ, а также откроет командную строку.
Опция help выведет на экран все доступные команды:
supervisor> help
default commands (type help ):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version
Для начала попробуйте запустить, остановить и перезапустить программу при помощи следующих команд (команды start, stop, restart + имя программы):
supervisor> stop long_script
long_script: stopped
supervisor> start long_script
long_script: started
supervisor> restart long_script
long_script: stopped
long_script: started
Команда tail выведет самые последние записи в логах stdout и stderr для заданной программы:
supervisor> tail long_script
Sun Jul 21 00:36:10 UTC 2013
Sun Jul 21 00:36:11 UTC 2013
Sun Jul 21 00:36:12 UTC 2013
Sun Jul 21 00:36:13 UTC 2013
Sun Jul 21 00:36:14 UTC 2013
Sun Jul 21 00:36:15 UTC 2013
Sun Jul 21 00:36:17 UTC 2013
supervisor> tail long_script stderr
error!
error!
error!
error!
error!
error!
error!
Команда status покажет текущее состояние выполнения программы после внесения каких-либо изменений:
supervisor> status
long_script STOPPED Jul 21 01:07 AM
Завершив работу с supervisorctl, закройте интерфейс при помощи комбинации Ctrl-C или команды quit:
Теперь вы знакомы с основами использования Supervisor. Более подробную информацию можно найти в документации проекта. Если у вас есть какие-либо вопросы или дополнения, пожалуйста, оставьте комментарий под этим руководством.
Русские Блоги
Инструмент управления процессами Linux supervisord
1. Введение
2. Серверная сторона супервизора называется супервизором, который в основном отвечает за запуск управляемого подпроцесса, когда он запускается сам, ответ на команду клиента, перезапуск сбойного или завершенного подпроцесса, запись выходных данных подпроцесса. stdout и stderr, генерирующие и обрабатывающие жизненный цикл подпроцесса В событии. Вы можете настроить связанные параметры в файле конфигурации, включая состояние самого Supervisord и соответствующие атрибуты каждого подпроцесса, которым он управляет. Файл конфигурации обычно находится в /etc/supervisord.conf.
4.Supervisor также предоставляет веб-страницу для просмотра и управления статусом процесса, эта функция меньше используется людьми.
2. Установка
Необходимо использовать Python2, потому что 3 не поддерживает
Проверьте, прошла ли установка успешно:
Создайте файл конфигурации:
3. Настройки файла конфигурации
Бинарные файлы, созданные при установке pip, находятся в /home/jinhan/.local/bin/supervisord под
4. Часто используемые команды:
1. Запустить все процессы, управляемые супервайзером. supervisorctl start all
2. Остановить все процессы, управляемые супервизором. supervisorctl stop all
3. Запустить определенный процесс, управляемый супервайзером.
4. Остановить определенный процесс, управляемый супервайзером.
5. Перезапустите все процессы или определенный процесс.
6. Просмотрите статус всех процессов, которыми в настоящее время управляет руководитель.
Настройка supervisord на Debian сервере
На любом сервере есть процессы которые должны выполняться постоянно. Например, для веб-сервера это может быть PHP-FPM или любой другой бэкенд (ниже рассмотрим Angular-CLI в development режиме).
Если происходит ситуация, вызванная кратковременными причинами, при которой процесс завершается посетитель сайта увидит серверную ошибку 502. Причиной может быть нехватка памяти и OOM.
И хотя после OOM сервер вновь работоспособен ошибка не исчезнет поскольку процесс завершился. Администратору придется запускать его вручную.
Чтобы этого избежать пишут скрипты для запуска сервисов для systemd или upstart. Или же используют runit. Службы перезапускать может система мониторинга monit.
Самый простой способ — supervisor (официальный сайт проекта).
Пакет устанавливается из репозитория при помощи apt-get install supervisor и очень прост в настройке. Работает так же эффективно как runit, но удобнее него при конфигурации. Достаточно создать файл с настройками и прописать в нем несколько директив.
Основной конфигурационный файл пакета обычно менять не требуется
В нем подключаются все файлы директории conf.d с расширением .conf
Поэтому если нужно добавить новый сервис создается такой файл
[program:ang]
command=ng serve
directory=/home/angular/
stdout_logfile=/var/log/ang.log
autostart=true
autorestart=true
startretries=6
user=root
stopsignal=KILL
Простейшая конфигурация представляет собой имя приложения, команду которой, оно запускается. Каталог, в котором должна быть выполнена команда. Также логирование, сигнал по которому производится завершение работы и пользователь — владелец процесса.
Директивы autostart=true и autorestart=true обеспечат перезапуск в случае если сервер по какой-то причине перестал работать. Возможности очень широкие, можно настроить отправку уведомлений на почту (так же может Monit).
После добавления конфигурационного файла supervisor перезапускается. Дальнейшее управление возможно при помощи supervisorctl
ang RUNNING pid 624, uptime 2 days, 2:26:29
Самые популярные команды при управлении supervisor
На иллюстрации представлен синтаксис любой команды по управлению службой при помощи supervisor
Остановит один сервис
Перезапустит все сервисы, о которых знает supervisor
Перечитывает все конфигурационные файлы, сервисы не перезапускает
Используется в паре с предыдущей командой — перезапускает все сервисы, в конфигурационных файлах которых произошли изменения
В случае возникновения ошибок информацию о причинах следует искать в логах supervisor
Или каждого из сервисов (идентификатор генерируется заново при рестарте)
Рассмотренное решение часто применяется для запуска приложений на Ruby, Python и NodeJS. На одном сервере может быть неограниченное количество управляемых сервисов, которым можно отдавать команды по одному или всем вместе.
Monit является другим способом автоматически перезапускать сервисы, которые по каким-то причинам перестали работать.
Русские Блоги
Установка и настройка Supervisor (инструмент управления процессами Linux / Unix)
Supervisor(http://supervisord.org/) Является ли клиент-серверная служба, разработанная в Python, инструмент управления процессами в системах Linux / Unix, и не поддерживает системы Windows. Он может легко контролировать, запускать, останавливать, перезапускать один илиболееПроцесс. Когда процесс неожиданно завершается, супервизор автоматически перезапустит его, когда обнаружит, что процесс мертв. Очень удобно выполнять функцию защиты пользовательских процессов без необходимости написания сценария оболочки для управления им.
1. Установите инструмент управления пакетами Python easy_install
2. Установите супервизор
После установки супервизора он будет сгенерирован Три исполнительные программы: supervisortd, supervisorctl, echo_supervisord_conf Соответственно Служба демона Supervisor (используется для получения команд управления процессами), клиент (используется для связи с демоном, отправки инструкций по процессу управления) и создания файла начальной конфигурации 。
3. Конфигурация
При запуске службы супервизора вам необходимо указать файл конфигурации супервизора. Если спецификации отображения нет, по умолчанию будет выполняться поиск в следующем каталоге:
При запуске программы echo_supervisord_conf файл конфигурации инициализации супервизора может быть сгенерирован следующим образом:
4. Описание параметров файла конфигурации
Существует множество параметров конфигурации супервизора. Далее описывается часто используемая конфигурация параметров. Подробную конфигурацию и описание см. ВОфициальный сайт документаВведение.
Примечание. Начните с точки с запятой (;), чтобы указать, что строка закомментирована
Примечание. Для примера include при использовании относительного пути текущим каталогом по умолчанию является каталог, в котором находится supervisord.conf.
5. Процесс управления конфигурацией
Ниже приведен пример настройки процесса Tomcat:
5. Запустите службу Supervisor
6. Управление пользовательскими процессами
6.1 Интерактивный терминал
После успешного запуска supervisord пользовательские процессы управляются через клиент supervisorctl: запуск, остановка и перезапуск. Выполнение команды supervisorctl войдет в интерактивный терминал клиента supervisor и выведет список всех процессов, которыми в данный момент управляют.
Введите справку, чтобы просмотреть список команд. Если вы хотите увидеть эффект команды, запустите «help command name», например: help stop. Остановить Tomcat означает остановить процесс Tomcat, остановить все означает остановить все процессы.
6.2 Bash Terminal
6.3 Веб-интерфейс управления
По соображениям безопасности конфигурация по умолчанию не открывает интерфейс веб-управления, вам необходимо изменить файл конфигурации supervisord.conf, чтобы открыть разрешения доступа http. Поместите следующую конфигурацию
7. Запустите службу Supervisor после загрузки
7.1 Настройка службы systemctl
7.1.1 Войдите в каталог / lib / systemd / system и создайте файл supervisor.service, содержимое которого показано ниже.
7.1.2 Установить загрузку
7.1.3 Изменить права доступа к файлу до 766
7.2 Настройка типа сервиса
Создайте файл /etc/rc.d/init.d/supervisor, содержимое файла выглядит следующим образом:
Измените права доступа к файлу на 755 и настройте загрузку:
Примечание. Измените путь файла конфигурации супервизора в сценарии к пути файла конфигурации супервизора.
Скрипт запуска для других дистрибутивов Linux:https://github.com/Supervisor/initscripts
Примечание. Supervisor может управлять только процессами, не являющимися демонами, а не процессами демонов.В противном случае он выдаст исключение слишком быстро (возможно, в журнале процесса). Tomcat в этом примере запускается демоном по умолчанию, поэтому мы переключились на catalina.sh run и запускаем его как процесс переднего плана.
В приложении: в операционной системе Centos установите его в режиме yum, используйте следующую команду.
Супервизор не выпускается в стандартном источнике CentOS, и необходимо установить источник epel. Установленный таким образом супервизор может быть не последней версией, но он более удобен. После завершения установки файл конфигурации будет автоматически сгенерирован для вас.
Файл конфигурации по умолчанию: /etc/supervisord.conf
Файл конфигурации управления процессами можно поместить в каталог /etc/supervisord.d/.
Интеллектуальная рекомендация
Tree Дерево отрезков линии】 COGS 2632
Ссылочный блогАвтор:dreaming__ldxИсточник: CSDN Портал последовательности операций 【Название описания】 Последовательность длины n, вес порядкового номера в начале равен 0, есть m операций Поддерживают.
PAT-A-1046 кратчайшее расстояние [префикс и]
The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed to tell the shortest distance between any pair of exits. Input Specification: Each input fi.
Как нарисовать несколько линий ROC на одном графике?
Класс коллекции JAVA
Резюме JAVA-коллекции Один, коллекция 1. Характеристики коллекций: коллекции используются только для хранения объектов, длина коллекции является переменной, и в коллекции могут храниться объекты разны.
MySQL репликация главный-подчиненный + переключатель главный-подчиненный
MySQL репликация главный-подчиненный + переключатель главный-подчиненный 05 января 2018 10:46:35Протрите протирать прыжок Количество просмотров: 5183Более Персональная категория:база данныхЭксплуатаци.