Supervisor Linux что это такое

Обновлено: 02.07.2024

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

Supervisor – это программа на языке Python, которая упрощает управление другими программами (процессами). Это может облегчить процесс запуска, уничтожения и перезапуска приложений, которые вы разрабатываете. Я объясню различные аспекты, которые необходимо учитывать при использовании Supervisor.

Индекс

Основы

  • Supervisor может помочь вам администрировать и автоматизировать процесс запуска приложений на вашем веб-сервере. Он может выполнять указанные вами шаги и запускать несколько приложений. Возможно, вы хотите, чтобы кто-то автоматически запускал приложение после того, как вы перезагрузили сервер. Супервизор может делать все это и многое другое.
  • Supervisor запускает ваше приложение или сценарий как собственный дочерний процесс. Таким образом, он может убить их, когда захочет. Он демонизирует что-то, что работает бесконечно, скажем, веб-сервер. Вы не должны использовать его для управления процессом, который имеет определенный конец (скажем, задача, которая занимает 3 минуты и завершается после этого).
  • Команда для запуска определенного процесса и различные параметры задаются через файл .conf.
  • Supervisor ищет файлы, оканчивающиеся на .conf, в определенных каталогах. Затем он следует инструкциям, указанным в этих файлах.
  • После написания соответствующего файла .conf запуск любой программы осуществляется с помощью
    supervisorctl start appname .
  • Он демонизирует процесс, который вы хотите запустить. Вы можете сохранять журналы, созданные вашим приложением, в файлах.
  • Скажем, на вашем сервере запущено 50 процессов. Было бы неудобно запускать каждый из них каждый раз, когда вы перезагружаете сервер. Supervisor имеет параметр автозапуска, который запускает процесс при инициализации Supervisor.
  • Вы можете заставить Supervisor запускать программу от имени определенного пользователя. Существует множество таких вариантов, которые могут облегчить вашу повседневную жизнь.

Установка супервизора

В Ubuntu или Debian вы можете

Запись файлов конфигурации

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

Мне очень помог этот пример из Digital Ocean. Поэтому я адаптирую аналогичный подход, но с другим сценарием. Ради этого примера и краткости мы напишем небольшой скрипт, который отображает объем оперативной памяти, которой оснащена машина.

Перейдите в свой домашний каталог (~/) и сохраните следующее как displayram.sh

Обратите внимание, что это бесконечный процесс. Он работает вечно из-за цикла while. Я повторяю, что Supervisor может только управлять и контролировать бесконечные процессы.

Сделайте только что созданный файл исполняемым.

Сохраните следующее как displayram.conf . Супервизор будет использовать этот файл для управления процессом. Замените abhirath своим именем пользователя.

Переместите только что созданный файл в /etc/supervisor/conf.d/displayram.conf . Это каталог по умолчанию, в котором Supervisor ищет программы.

Затем на терминале

Наш скрипт запускается мгновенно. Вы можете убедиться, что он работает, открыв /home/yourusername/displayram.out.log . Он должен быть заполнен строками, отображающими установленную на машине оперативную память.

Лучше запустить следующее на терминале.

Он будет продолжать распечатывать новые записи на терминале.

Вам также необходимо ознакомиться с созданием более одного процесса — пример, который требует запуска нескольких процессов для запуска приложения.

Чтобы остановить скрипт, который мы только что запустили, запустите

Объяснение нескольких вариантов

Каталог

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

Команда

  • Способ, с помощью которого Supervisor запускает определенную программу. Укажите команду / путь, который вы обычно используете для запуска своей программы.
  • Команды не эквивалентны bash или обычным командам терминала по умолчанию. Они довольно похожи, но команда, которую вы используете на своем терминале, может не дать такого же эффекта здесь.
  • Команды могут содержать абсолютные или относительные пути. В примере displayram используются абсолютные пути. Если вы хотите использовать относительные пути, вам нужно установить путь. Подробнее об этом можно прочитать здесь.
  • Вы можете убедиться, что ваша команда обрабатывается как команда bash, используя bash -c "command here" . Наш предыдущий пример можно переписать как

Остановить и убить группой

  • Иногда ваша программа на самом деле не уничтожается.У них могут быть дети, которых они не убивают. Таким образом, чтобы остановить их, супервизор должен быть злым и убить каждый процесс, который мог породить. Одна из возможных причин заключается в том, что они ожидают другой сигнал об уничтожении.
  • Вам не нужно их использовать, если только вы не заметите, что ваша программа продолжает работать даже после того, как вы явно запустили команду supervisorctl stop имя_программы
  • Это мне очень помогло — программа действительно убивает.
  • stderr_logfile — файл, в который он должен перенаправить stderr. Если установлено значение NONE, вывод из stderr не будет записываться в журнал.
  • stdout_logfile — файл, в который перенаправляется стандартный вывод. Также можно установить значение NONE.
  • stderr_logfile_maxbytes — максимальное пространство, которое займет файл журнала, прежде чем Supervisor использует новый файл для хранения журналов. Вы можете ввести число, а затем ГБ, КБ и т. д. По умолчанию установлено значение 50 МБ.
  • stdout_logfile_maxbytes — то же, что и выше, но для стандартного вывода.
  • stdout_logfile_backups — количество сохраняемых файлов резервных копий. Скажем, вы установили его на 3. После того, как первые файлы превысят значение stdout_logfile_maxbytes, будет создан второй файл, а затем третий. Если третий файл превышает размер, он удаляет первый файл и продолжает регистрацию. В целом в нашем случае будет использоваться максимум 3 * 50 МБ. По умолчанию имеет значение 10.
  • stderr_logfile_backups — то же, что и выше, но для stderr.

Supervisor также сохраняет собственные журналы. Они отличаются от журналов, которые вы устанавливаете для своей программы. Эти журналы содержат информацию о Supervisor. Они хранятся в /var/log/supervisor/supervisord.log Чтобы увидеть несколько последних журналов, вы можете просмотреть /var/log/supervisor/supervisord.log

Некоторые распространенные ошибки

<р>1. Вы получите сообщение, похожее на unix:///var/run. sock нет такого файла?

Это означает, что Supervisor не запущен. Вам нужно будет запустить Supervisor. перезапуск диспетчера службы sudo

<р>2. Ошибки спавна. Supervisord не может запустить вашу программу?

  • Проверьте журнал ошибок и журналы вывода. Supervisor продолжает добавлять данные в файл журнала вашей программы. Поэтому рекомендуется использовать tail -f /path/to/program/log/file, чтобы отслеживать происходящие изменения.
  • Проверьте параметры среды и каталога в вашей программе. Укажите абсолютные пути, например /home/abhirath/so/and/so .
<р>3. Supervisor не запускается автоматически после загрузки?

  • В Ubuntu 16 вы можете включить его с помощью sudo systemctl enable supervisor . Также прочитайте этот вопрос об обмене стеками. - сценарии инициализации для различных операционных систем.
  • Часто создаваемые вами новые файлы .conf не распознаются. Если это так, сделайте следующее: - Проверьте синтаксис всего в файле. В случае ошибки Supervisor даже не показывает файл. Также файлы должны иметь расширение .conf .
<р>4. Какие-либо признаки того, что процесс/приложение, которое вы хотите запустить, уже запущены?

Supervisor — это клиент-серверная система, позволяющая пользователям управлять рядом процессов в UNIX-подобных операционных системах. Это было вдохновлено следующим:

Часто неудобно писать сценарии rc.d для каждого отдельного экземпляра процесса. Сценарии rc.d — это отличная форма инициализации/автозапуска/управления процессами с наименьшим общим знаменателем, но их написание и поддержка могут быть сложными. Кроме того, сценарии rc.d не могут автоматически перезапустить процесс, в котором произошел сбой, и многие программы не перезапускаются должным образом при сбое. Supervisord запускает процессы как свои подпроцессы, и его можно настроить на автоматический перезапуск при сбое. Его также можно автоматически настроить для запуска процессов при его собственном вызове.

Часто сложно получить точный статус запуска/остановки процессов в UNIX. Пидфайлы часто врут. Supervisord запускает процессы как подпроцессы, поэтому он всегда знает истинный статус включения/выключения своих дочерних элементов и может удобно запрашивать эти данные.

Пользователям, которым необходимо контролировать состояние процесса, часто достаточно делать только это. Они не хотят и не нуждаются в полноценном доступе оболочки к машине, на которой запущены процессы. Процессы, которые прослушивают «низкие» TCP-порты, часто необходимо запускать и перезапускать от имени пользователя root (ошибка UNIX). Обычно совершенно нормально разрешать «обычным» людям останавливать или перезапускать такой процесс, но предоставление им доступа к оболочке часто нецелесообразно, а предоставление им доступа root или доступа sudo часто невозможно. Также (правильно) трудно объяснить им, почему существует эта проблема. Если супервизор запущен как root, можно позволить «обычным» пользователям управлять такими процессами без необходимости объяснять им тонкости проблемы. Supervisorctl предоставляет очень ограниченную форму доступа к машине, по сути позволяя пользователям видеть состояние процесса и управлять подпроцессами, контролируемыми супервизором, с помощью команд «стоп», «запуск» и «перезапуск» из простой оболочки или веб-интерфейса.

Процессы часто нужно запускать и останавливать группами, иногда даже в «приоритетном порядке». Часто бывает сложно объяснить людям, как это сделать. Supervisor позволяет вам назначать приоритеты процессам и позволяет пользователю подавать команды через клиент supervisorctl, такие как «запустить все» и «перезапустить все», которые запускают их в заранее заданном порядке приоритета. Кроме того, процессы можно группировать в «группы процессов», а набор логически связанных процессов можно останавливать и запускать как единое целое.

Функции¶

Supervisor настраивается с помощью простого файла конфигурации в стиле INI, который легко освоить. Он предоставляет множество опций для каждого процесса, которые облегчают вашу жизнь, например перезапуск сбойных процессов и автоматическая ротация журналов.

Supervisor предоставляет вам единое место для запуска, остановки и мониторинга ваших процессов. Процессами можно управлять индивидуально или в группах. Вы можете настроить Supervisor для предоставления локальной или удаленной командной строки и веб-интерфейса.

Supervisor запускает свои подпроцессы через fork/exec, и подпроцессы не демонизируются. Операционная система немедленно сигнализирует Supervisor, когда процесс завершается, в отличие от некоторых решений, которые полагаются на проблемные файлы PID и периодический опрос для перезапуска сбойных процессов.

Supervisor имеет простой протокол уведомления о событиях, который программы, написанные на любом языке, могут использовать для мониторинга, а также интерфейс XML-RPC для управления. Он также содержит точки расширения, которые могут использоваться разработчиками Python.

Supervisor работает практически со всем, кроме Windows. Он протестирован и поддерживается в Linux, Mac OS X, Solaris и FreeBSD. Он полностью написан на Python, поэтому для установки не требуется компилятор C.

Хотя сегодня Supervisor очень активно развивается, это не новое программное обеспечение. Supervisor существует уже много лет и уже используется на многих серверах.

Компоненты супервизора¶

руководитель

Серверная часть супервизора называется supervisord. Он отвечает за запуск дочерних программ по своему собственному вызову, ответ на команды клиентов, перезапуск аварийных или завершившихся подпроцессов, регистрацию вывода своего подпроцесса stdout и stderr, а также создание и обработку «события», соответствующие точкам времени жизни подпроцесса.

Серверный процесс использует файл конфигурации. Обычно он находится в /etc/supervisord.conf . Этот файл конфигурации представляет собой файл конфигурации в стиле «Windows-INI». Важно обеспечить безопасность этого файла с помощью соответствующих разрешений файловой системы, поскольку он может содержать незашифрованные имена пользователей и пароли.

руководитель

Клиентская часть командной строки супервизора называется supervisorctl. Он предоставляет интерфейс, похожий на оболочку, для функций, предоставляемых супервизором. Из supervisorctl пользователь может подключаться к различным процессам супервизора (по одному), получать статус контролируемых подпроцессов, останавливать и запускать подпроцессы и получать списки запущенных процессов супервизора.

клиент командной строки взаимодействует с сервером через сокет домена UNIX или сокет Интернета (TCP). Сервер может утверждать, что пользователь клиента должен представить учетные данные для аутентификации, прежде чем он позволит ему выполнять команды. Клиентский процесс обычно использует тот же файл конфигурации, что и сервер, но любой файл конфигурации с разделом [supervisorctl] в нем будет работать.

Требования к платформе¶

Supervisor был протестирован и, как известно, работает в Linux (Ubuntu 18.04), Mac OS X (10.4/10.5/10.6), Solaris (10 для Intel) и FreeBSD 6.1. Скорее всего, он будет нормально работать в большинстве систем UNIX.

Supervisor не вообще не работает под любой версией Windows.

Supervisor предназначен для работы с Python 3 версии 3.4 или более поздней версии и с Python 2 версии 2.7.

© Copyright 2004-2022, Agendaless Consulting and Contributors. Последнее обновление: 22 марта 2022 г.

supervisor Monitoring linux

Некоторым пользователям нужно только контролировать состояние процесса, и им не нужен полноценный доступ к оболочке компьютера, на котором выполняются процессы. Им часто не нужно знать процессы, которые прослушивают «низкие» TCP-порты, и их часто нужно запускать и перезапускать от имени пользователя root. Есть процессы, которые часто нужно запускать и останавливать группами, иногда в порядке приоритета. Супервизор имени инструмента помогает пользователям управлять вашими процессами на вашем сервере и контролировать каждый процесс или группу процессов.

Что такое руководитель?

Supervisor – это клиент-серверная система, позволяющая пользователям управлять рядом процессов в Linux и UNIX-подобных операционных системах. Процессы можно объединять в «группы процессов», а набор логически связанных процессов можно останавливать и запускать как единое целое.Он запускает свои подпроцессы через fork/exec, а подпроцессы не демонизируются. Операционная система немедленно сигнализирует Supervisor, когда процесс завершается.

Supervisor основан на четырех компонентах:

Инструмент супервизора позволяет назначать приоритеты процессам и позволяет пользователю подавать команды через клиент supervisorctl, такие как «запустить все» и «перезапустить все», которые запускает их в заранее заданном порядке приоритета. Он полностью написан на Python, и на самом деле используется версия 3.2.1. Supervisor не работает на Python 3

1) Установить диспетчер

Supervisor предлагает возможность установки, но я покажу вам установку через дистрибутивы.

2) Начните с супервизора инструмента мониторинга

Файл конфигурации супервизора — /etc/supervisord.conf . Он используется как для команд supervisord, так и для команд supervisorctl.

a) Настройте веб-сервер супервизора

b) Добавить программу для мониторинга

Прежде чем супервизор начнет что-то делать, вам нужно добавить хотя бы один раздел program в его конфигурацию, чтобы вы могли контролировать саму программу. Раздел program определяет программу, которая запускается и управляется при вызове команды supervisord. Итак, для добавления программы отредактируем конфигурационный файл и добавим в конец, например, команду ниже:

команда=/bin/cat ; программа (относительно использует PATH, может принимать аргументы) имя_процесса=%(имя_программы)s ; имя_процесса expr (по умолчанию %(имя_программы)s) numprocs=1 ; количество копий процессов для запуска (по умолчанию 1)

command=/usr/sbin/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND redirect_stderr=true

c) Запустить супервизор

Чтобы запустить supervisord, мы запустим команду supervisord. Впервые вы можете использовать параметр -n, чтобы запустить его на переднем плане, что полезно для отладки проблем с запуском, и флаг -c, чтобы указать полный путь к файлу конфигурации. Полученный процесс демонизирует себя и отсоединяется от терминала. По умолчанию журнал операций хранится в /var/log/supervisor/supervisord.log. Если вы не используете -c , супервизор сначала будет искать конфигурацию в текущей папке

Теперь мы можем проверить файл журнала супервизора

Мы видим, что он запускается. Если вы используете параметр -n, супервизор будет запущен на переднем плане, и вам нужно будет отправить его в фоновом режиме для управления вашим терминалом

3) Контролируйте свои процессы с супервайзером

Мы можем использовать веб-интерфейс для управления процессами с помощью супервизора или использовать командную строку supervisorctl. Мы настроили два процесса, но один процесс работает плохо, так что посмотрим, как супервизор проверит наши процессы

a) Контролируйте процесс с помощью supervisorctl

supervisorctl использует некоторые основные команды для управления процессами: stop, start, status, restart, reload, tail и т. д.. Для управления процессом используйте команду supervisorctl

Вы можете видеть, что команда cat работает хорошо, а команда apache — нет, и у нас есть возврат.

Вы можете перезапустить процесс с помощью приведенной ниже команды

б) Мониторинг процессов через веб-интерфейс

Теперь вы можете открыть веб-браузер и ввести IP-адрес вашего сервера с портом, как показано ниже


Вы видите, что можете перезапускать, останавливать или просматривать журналы.

Мы увидели, как мы можем контролировать новый процесс с помощью супервизора, что может быть полезно для пользователей, которым не нужно контролировать сам сервер, а нужно только отслеживать, запущен ли нужный им процесс или нет, чтобы они сможет перезапустить его, если это необходимо. Когда вы добавляете новые процессы, вам нужно использовать команды reread и update команды supervisorctl, чтобы супервизор добавил их в текущие процессы.

Теги Приложения и инструментыМониторинг slug; $list = get_page_by_title('related', 'OBJECT', 'wp_show_posts'); wpsp_display($list->ID, 'tax_term="' . $cat_slug . '"' );*/ ?>

Во многих средах VPS часто бывает так, что у вас будет несколько небольших программ, которые вы хотите постоянно запускать, будь то небольшие сценарии оболочки, приложения Node.js или любые пакеты большого размера.

Обычно внешние пакеты поставляются с файлом модуля, который позволяет управлять ими с помощью системы инициализации, такой как systemd , или упаковываются в виде образов Docker, которыми может управлять механизм контейнера. Однако для программного обеспечения, которое плохо упаковано, или для пользователей, которые предпочитают не взаимодействовать с низкоуровневой системой инициализации на своем сервере, полезно иметь облегченную альтернативу.

Supervisor – это диспетчер процессов, предоставляющий единый интерфейс для управления и мониторинга ряда долго выполняющихся программ.В этом руководстве вы установите Supervisor на сервер Linux и узнаете, как управлять конфигурациями Supervisor для нескольких приложений.

Предпосылки

Для выполнения этого руководства вам потребуется:

  • Сервер Linux и пользователь без полномочий root с привилегиями sudo. Вы можете узнать больше о том, как настроить пользователя с этими привилегиями, в нашем руководстве Initial Server Setup with Ubuntu 20.04.

Кроме того, вы можете использовать интерактивный терминал, встроенный в эту страницу, чтобы поэкспериментировать с примерами команд из этого руководства. Щелкните следующее Запустить интерактивный терминал! кнопку, чтобы открыть окно терминала и начать работу в среде Linux (Ubuntu).

Запустите интерактивный терминал!

Шаг 1. Установка

Начните с обновления исходных кодов пакетов и установки Supervisor:

Служба супервизора запускается автоматически после установки. Вы можете проверить его статус:

Вы должны получить следующий вывод:

Теперь, когда у нас установлен Supervisor, мы можем добавить наши первые программы.

Шаг 2. Добавление программы

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

Все программы, запускаемые под Supervisor, должны выполняться в режиме без демонизации (иногда также называемом «режимом переднего плана»). Если по умолчанию ваша программа автоматически возвращается в оболочку после запуска, вам может потребоваться обратиться к руководству программы, чтобы найти возможность включения этого режима, иначе Supervisor не сможет правильно определить статус программы.

Чтобы продемонстрировать функциональные возможности Supervisor, мы создадим сценарий оболочки, который не делает ничего, кроме создания предсказуемого вывода раз в секунду, но будет непрерывно работать в фоновом режиме, пока не будет остановлен вручную. Используя nano или ваш любимый текстовый редактор, откройте файл с именем idle.sh в вашем домашнем каталоге:

Добавьте следующее содержимое:

Сохраните и закройте файл. Если вы используете nano , нажмите Ctrl+X , затем, когда будет предложено, Y и Enter.

Затем сделайте свой скрипт исполняемым:

Файлы конфигурации для программ Supervisor находятся в каталоге /etc/supervisor/conf.d, обычно запуская одну программу в файле и оканчиваясь на .conf. Мы создадим файл конфигурации для этого скрипта, как`/etc/supervisor/conf.d/idle.conf:

Добавьте это содержимое:

Мы рассмотрим это построчно:

Конфигурация начинается с определения программы с именем idle и полного пути к программе:

Следующие две строки определяют автоматическое поведение скрипта при определенных условиях.

Параметр автозапуска сообщает Supervisor, что эта программа должна запускаться при загрузке системы. Установка значения false потребует ручного запуска после любого выключения системы.

автоматический перезапуск определяет, как Supervisor должен управлять программой в случае ее выхода:

  • false указывает Supervisor никогда не перезапускать программу после ее выхода.
  • true указывает Supervisor всегда перезапускать программу после ее выхода.
  • unexpected сообщает Supervisor о необходимости перезапустить программу только в том случае, если она завершится с неожиданным кодом ошибки (по умолчанию любой другой код, кроме кодов 0 или 2). Чтобы узнать больше о кодах ошибок, ознакомьтесь с командой errno.

Последние две строки определяют расположение двух основных файлов журнала программы. Как следует из названий опций, stdout и stderr будут направлены в stdout_logfile и stderr_logfile соответственно. Указанные каталоги должны уже существовать, так как Supervisor не будет пытаться создать какие-либо отсутствующие каталоги.

Созданная здесь конфигурация является минимальным шаблоном для программы Supervisor. В документации Supervisor перечислены многие другие дополнительные параметры конфигурации, доступные для настройки запуска программ.

После создания и сохранения файла конфигурации мы можем сообщить Supervisor о нашей новой программе с помощью команды supervisorctl. Сначала мы указываем Supervisor искать любые новые или измененные конфигурации программ в каталоге /etc/supervisor/conf.d с помощью:

После этого сообщите ему о вступлении в силу любых изменений с помощью:

Каждый раз, когда вы вносите изменения в любой файл конфигурации программы, выполнение двух предыдущих команд приведет к тому, что изменения вступят в силу.

На данный момент наша программа должна работать. Мы можем проверить его вывод, посмотрев файл журнала вывода:

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

Шаг 3. Управление программами

Помимо запущенных программ, вам может потребоваться их остановка, перезапуск или просмотр их состояния. Программа supervisorctl, которую мы использовали на шаге 2, также имеет интерактивный режим, который мы можем использовать для управления нашими программами.

Чтобы войти в интерактивный режим, запустите supervisorctl без аргументов:

supervisorctl сначала распечатает статус и время безотказной работы всех настроенных программ, а затем свою командную строку.При входе в справку отобразятся все доступные команды:

Вы можете запустить или остановить программу с помощью соответствующих команд, за которыми следует имя программы:

С помощью команды tail вы можете просмотреть самые последние записи в журналах stdout и stderr для вашей программы:

Используя статус, вы можете снова просмотреть текущее состояние выполнения каждой программы после внесения любых изменений:

Наконец, вы можете выйти из supervisorctl, нажав Ctrl+C или введя quit в приглашение:

Заключение

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

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

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Supervisor – это инструмент с открытым исходным кодом для управления процессами, который отслеживает и контролирует легкие и длительные процессы. Подробнее на Официальном сайте. В этом руководстве мы создадим простое приложение и увидим, как управлять конфигурациями супервизора для нескольких приложений.

supervisord -> серверная часть супервизора называется supervisord

supervisorctl -> клиентская часть супервизора называется supervisorctl

Мы выполним следующие шаги, чтобы получить полное представление о супервизоре в Linux.

  • Установить диспетчер
  • Рабочий руководитель
  • Создать программу
  • Создать файл конфигурации

Полное руководство по Supervisor в Linux с Примеры

Полное руководство по Supervisor в Linux с примерами

Шаг 1. Предварительные требования

a) У вас должен быть работающий сервер Linux (в нашем случае это CentOS 7 ).

b) У вас должен быть доступ sudo или root для запуска привилегированных команд.

c) На вашем сервере должен быть хотя бы один менеджер пакетов (в данном случае yum или dnf).

Шаг 2. Обновите сервер

Перед установкой любого нового пакета необходимо сначала обновить кеш пакета с помощью команды yum update или dnf update, как показано ниже. Если вы используете системы на базе Debian/Ubuntu, используйте команду apt update или apt-get update.

Шаг 3. Включите EPEL

Для Centos супервизор присутствует в репозитории EPEL. Следовательно, сначала установите пакет epel-release, а затем установите супервизора. Чтобы включить репозиторий EPEL, вам нужно использовать команду yum install epel-release, как показано ниже.

Шаг 4. Установите Supervisor

Следующий шаг — установка супервизора с помощью команды yum install supervisor -y, как показано ниже. Если вы используете какие-либо системы на основе Ubuntu/Debian, вам необходимо использовать команду apt install supervisor -y.

После завершения установки вы увидите каталог «supervisord.d» и файл «supervisord.conf» внутри /etc, как показано ниже.

Шаг 5. Запуск демона Supervisord

Следующий шаг — запустить и включить демон supervisord с помощью приведенной ниже команды.

Проверьте статус демона supervisord с помощью команды systemctl status supervisord, он уже должен быть в рабочем состоянии.

Далее нам нужно сгенерировать файл конфигурации supervisord. Supervisord может создать свой собственный файл конфигурации с помощью команды «echo_supervisord_conf». Давайте перенаправим вывод этой команды в файл по тому пути, по которому мы хотим поместить файл конфигурации.

Обратите внимание, что приведенная выше команда создает шаблон файла supervisord.conf, который мы можем изменить в соответствии с нашими потребностями и требованиями.

Шаг 6. Создайте пример сценария

Для нашего руководства мы создадим простой скрипт с именем sample.sh в каталоге /home/cyberithub. Вы можете выбрать имя сценария и путь. В приведенном ниже сценарии мы направим текущее имя хоста на стандартный вывод и «перенаправим ошибку» на стандартную ошибку. Затем он заснет на одну секунду и снова запустит цикл. Поскольку для условия всегда установлено значение true, оно будет продолжать выполнять одни и те же шаги и, следовательно, будет выполняться бесконечно.

Сохраните файл, нажав Ctrl+C, а затем введите :wq! чтобы сохранить и выйти. Если вы используете систему на основе Ubuntu/Debian, я бы порекомендовал вам использовать редактор nano вместо vi, так как он довольно прост в использовании. Затем сохраните и закройте файл, нажав Ctrl+X .

После создания файла примера вам необходимо предоставить разрешение на выполнение для запуска скрипта. Это можно сделать с помощью команды chmod +x /home/cyberithub/sample.sh, как показано ниже.

Шаг 7. Файл конфигурации

Обратите внимание, что для каждой супервизорной программы должен быть соответствующий файл .conf по пути /etc/supervisord.d/. Мы создадим файл конфигурации для этой программы с именем sample.conf .

Последним шагом будет изменение файла supervisord.conf, чтобы обновить путь, по которому должен быть получен файл .conf. Все остальное можно оставить по умолчанию или полностью изменить в зависимости от требований. Здесь мы изменяем блок включения, как показано ниже.

Затем мы выполним следующие две команды, чтобы изменения вступили в силу.

После чтения изменений должны быть созданы журналы приложений по пути, который мы настроили в файле конфигурации. В нашем случае он находится внутри папки /tmp.

Как указано в логике скрипта, test.out захватит имя хоста, как показано ниже.

Как определено в логике скрипта, test.err захватит строку «ошибка перенаправления», как показано ниже.

Шаг 8. Проверьте дополнительные параметры

Вы можете проверить все действия, доступные с помощью supervisorctl, с помощью команды supervisorctl help, как показано ниже.

Читайте также: