supervisor — управление процессами и сервисами
supervisor
— система для управления сервисами, написана на Python, использует INI-конфиги для настроек.
Домашняя страница и документация — тут>>>, репозиторий — тут>>>.
Состоит из:
supervisord
: сам север, обрабатывающий запросы от клиентов и считывающий файлы настроек для сервисовsupervisorctl
: CLI для управдения процессами под контролемsupervisord
, подключаясь к нему через сокет или TCP порт- HTTP сервер: предоставляет веб-интерфейс для доступа к
supervisord
Установка
В Debian/Ubuntu можно устанвить из репозитория:
sudo apt install supervisor
Но в репозиториях может быть устаревшая версия (3.2.0 на момент написания), более новую можно получить из PyPi:
sudo apt install python-pip
sudo pip install supervisor
Версия:
ubuntu@ip-172-31-37-96:~$ supervisord —version
Файл настроек
Что бы создать файл настроек — используем echo_supervisord_conf
.
Файл настроек, который supervisord
использует по умолчанию — /etc/supervisord.conf
, при желании можно указать другой, используя опцию -c
.
Создаём файл:
sudo sh -c ‘echo_supervisord_conf > /etc/supervisord.conf’
Запуск
Для тестов можно запускать supervisord
напрямую, и передавая ему опцию -n
, что бы оставался в foreground
:
ubuntu@ip-172-31-37-96:~$ /usr/local/bin/supervisord -n
2018-05-04 14:23:55,083 INFO RPC interface ‘supervisor’ initialized
2018-05-04 14:23:55,084 CRIT Server ‘unix_http_server’ running without any HTTP authentication checking
2018-05-04 14:23:55,084 INFO supervisord started with pid 8875
Если выполнить его без -n
— сервис запустится сразу в фоне, и будет писать данные в лог /var/log/supervisor/supervisord. log
.
Для запуска вместе с системой, используя systemd
— на Ubuntu 16.04 надо написать свой сервис-файл.
Создаём файл /etc/systemd/system/supervisord.service
:
[Unit] Description=Supervisor daemon Documentation=http://supervisord.org After=network.target [Service] ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target Alias=supervisord.service
Переносим дефолтный файл настроек:
sudo mkdir /etc/supervisor/
sudo mv /etc/supervisord.conf /etc/supervisor/
Запускаем:
sudo systemctl start supervisord.service
И проверяем:
ubuntu@ip-172-31-37-96:~$ ps aux | grep super
root 9069 0. 1 3.7 57596 18804 ? Ss 14:36 0:00 /usr/bin/python /usr/local/bin/supervisord -n -c /etc/supervisord.conf
Добавление сервисов
Что бы добавить сервис, который будет обслуживаться supervisord
— создадим файл в каталоге /etc/supervisor/conf.d/
:
sudo mkdir /etc/supervisor/conf.d
Редактируем /etc/supervisor/supervisord.conf
, обновляем [include]
в самом конце файла:
... [include] files=conf.d/*.conf files=conf.d/*.ini ;files = relative/directory/*.ini
Каждый сервис, который будет управляться supervisord
, добавляется через отдельный блок [program]
.
Для примера — создадим скрипт, который пишет в stdout и stderr:
#!/usr/bin/env bash while true; do # out to stdout echo "stdout at $(date)" # out to stderr echo "stderr at $(date)" > &2 sleep 1 done
Устанавливаем бит выполнения:
chmod +x /home/ubuntu/supr_expl. sh
Добавляем новый конфиг для supervisor — /etc/supervisor/conf.d/supr_expl.conf
:
[program:supr_expl] command=/home/ubuntu/supr_expl.sh autostart=true autorestart=true stderr_logfile=/var/log/supr_expl.err.log stdout_logfile=/var/log/supr_expl.out.log
Тут:
command
: путь к исполняемому файлу программыautostart
: запускать программу при запуске самогоsupervisord
autorestart
: перезапускать программу, если она «вылетела»stderr_logfile
: вывод stderrstdout_logfile
: вывод stdout
Теперь можно использвать supervisorctl
для управления программой.
Перечитываем конфиги:
root@ip-172-31-37-96:~# supervisorctl reread
supr_expl: available
Добавляем его в supervisord
:
root@ip-172-31-37-96:~# supervisorctl add supr_expl
supr_expl: added process group
Проверяем статус:
root@ip-172-31-37-96:~# supervisorctl status
supr_expl RUNNING pid 13584, uptime 0:00:40
Останавливаем:
root@ip-172-31-37-96:~# supervisorctl stop supr_expl
supr_expl: stopped
Удаляем:
root@ip-172-31-37-96:~# supervisorctl remove supr_expl
supr_expl: removed process group
Проверяем логи:
root@ip-172-31-37-96:~# head -n 3 /var/log/supr_expl. *
==> /var/log/supr_expl.err.log <==
stderr at Mon May 7 08:49:29 UTC 2018
stderr at Mon May 7 08:49:30 UTC 2018
stderr at Mon May 7 08:49:31 UTC 2018
==> /var/log/supr_expl.out.log <==
stdout at Mon May 7 08:49:29 UTC 2018
stdout at Mon May 7 08:49:30 UTC 2018
stdout at Mon May 7 08:49:31 UTC 2018
И пример добавления NGINX, создаём файл:
[program:nginx] command=/usr/sbin/nginx -g "daemon off;" autostart=true autorestart=true stdout_events_enabled=true stderr_events_enabled=true
Перечитываем конфиги:
root@ip-172-31-37-96:~# supervisorctl reread
supr_expl: available
Устанавливаем сам nginx
:
Запускаем его:
root@ip-172-31-37-96:~# supervisorctl add nginx
nginx: added process group
Проверяем:
root@ip-172-31-37-96:~# supervisorctl status nginx
nginx RUNNING pid 14647, uptime 0:00:02
И curl
-ом:
root@ip-172-31-37-96:~# curl localhost -I
HTTP/1. 1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Mon, 07 May 2018 08:58:22 GMT
См. документацию тут>>>.
Веб-интерфейс
Кроме supervisorctl
— доступен веб-интерфейс через встроенный в supervisor
веб-сервер.
Редактируем /etc/supervisor/supervisord.conf
... [inet_http_server] ; inet (TCP) server disabled by default port=*:9001 ; ip_address:port specifier, *:port for all iface ;username=user ; default is no username (open server) ;password=123 ; default is no password (open server) ...
Перезапускаем supervisord
:
systemctl restart supervisord.service
Проверяем:
Готово.
supervisord и непрерывная работа служб на сервере
supervisord — демон и служба, позволяющая обеспечивать непрерывную работу критичных сервисов. Это самый простой способ следить за процессами и перезапускать их при необходимости.
На любом сервере есть процессы которые должны выполняться постоянно. Например, для веб-сервера это может быть PHP-FPM или любой другой бэкенд (ниже рассмотрим Angular-CLI в development режиме).
Если происходит ситуация, вызванная кратковременными причинами, при которой процесс завершается посетитель сайта увидит серверную ошибку 502. Причиной может быть нехватка памяти и OOM.
И хотя после OOM сервер вновь работоспособен ошибка не исчезнет поскольку процесс завершился. Администратору придется запускать его вручную.
Чтобы этого избежать пишут скрипты для запуска сервисов для systemd или upstart. Или же используют runit. Службы перезапускать может система мониторинга monit.
Самый простой способ — supervisor (официальный сайт проекта).
Пакет устанавливается из репозитория при помощи apt-get install supervisor и очень прост в настройке. Работает так же эффективно как runit, но удобнее него при конфигурации. Достаточно создать файл с настройками и прописать в нем несколько директив.
Основной конфигурационный файл пакета обычно менять не требуется
less /etc/supervisor/supervisord.conf
В нем подключаются все файлы директории conf.d с расширением .conf
Поэтому если нужно добавить новый сервис создается такой файл
mcedit /etc/supervisor/conf.d/angular.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
supervisorctl
ang RUNNING pid 624, uptime 2 days, 2:26:29
Приглашение к вводу команды изменилось, из такого режима можно выполнять те же действия, но без указания supervisorctl . Например, посмотреть справку:
supervisor> help
Самые популярные команды при управлении supervisor
На иллюстрации представлен синтаксис любой команды по управлению службой при помощи supervisor
supervisorctl stop ang
Остановит один сервис
supervisorctl start all
Запустит все
supervisorctl restart all
Перезапустит все сервисы, о которых знает supervisor
supervisorctl reread
Перечитывает все конфигурационные файлы, сервисы не перезапускает
supervisorctl update
Используется в паре с предыдущей командой — перезапускает все сервисы, в конфигурационных файлах которых произошли изменения
В случае возникновения ошибок информацию о причинах следует искать в логах supervisor
less /var/log/supervisor/supervisord. log
Или каждого из сервисов (идентификатор генерируется заново при рестарте)
less /var/log/supervisor/ang-stderr—supervisor-Zkoh5I.log
Рассмотренное решение часто применяется для запуска приложений на Ruby, Python и NodeJS. На одном сервере может быть неограниченное количество управляемых сервисов, которым можно отдавать команды по одному или всем вместе.
Monit является другим способом автоматически перезапускать сервисы, которые по каким-то причинам перестали работать.
Supervisor. Поднимаем веб-интерфейс / Мастерская интернет-разработчика
14 февраля 2013 г. Nginx Python Мониторинг Supervisor FreeBSD
В предыдущей статье о Supervisor я рассказывал о том, как управлять запущенными через supervisorctl в консоли. Сегодня расскажу как запустить веб-интерфейс Supervisor и мониторить уже через веб, это может пригодится для тех пользователей, которым не стоит давать доступ по SSH, так как он просто им не нужен для работы, а смотреть процессы им надо.
Устанавливаем пропатченную версию
В свое время, я исправлял проблемы в веб-интерфейсной части Supervisor, но pull-request до сих пор не принят. Поэтому советую устанавливать из моего репозитория:
pip install -e git://github.com/adw0rd/supervisor.git#egg=supervisor
Настраиваем Supervisor
Открываем на редактирование файл /usr/local/etc/supervisord.conf и приводим секцию inet_http_server к виду:
[inet_http_server] port=127.0.0.1:9001 username=<username> ; Сам я не указываю username/password, password=<password> ; так как использую "auth_basic" для всего хоста в Nginx
Настраиваем Nginx
Если вы не хотите использовать сабдомен для Supervisor, то вот такой конфиг вам поможет:
server { listen 80; server_name example. /supervisor(.+)$ $1 break; proxy_pass http://localhost:9001; proxy_redirect http://example.orghttp://example.org/supervisor; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Иначе, с сабдоменом это будет так:
server { listen 80; server_name supervisor.example.org; location / { proxy_pass http://localhost:9001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Перезагружаем Nginx и Supervisor:
/usr/local/etc/rc.d/nginx reload /usr/local/etc/rc.d/supervisord restart
Вот что должно в итоге у нас получиться, при входе в веб-интерфейс:
Вот и всё!
Укращение Демонов или инфраструктура для Gearman / Хабр
Gearman — фреймворк для распределения задач. Подробней о нем можно почитать: Здесь или Здесь. Этот инструмент — находка для решения целого ряда задач. Но при его эксплуатации на боевых серверах мы столкнулись с некоторыми проблемами, решением которых я хочу поделится:
— Как автоматически запускать демонов и следить за их здоровьем?
— Как запустить несколько инстансов воркеров?
— Куда демоны будут писать сообщения, предназначенные для вывода на экран?
— А как следить, чтобы демоны не отвлекались на грудастых гаргулий, а работали. словом следить за нагрузкой.
Для этого есть довольно удобные инструменты:
Предполагаем, что у нас имеется запущенный и настроенный Gearman-сервер, воркеры и клиенты, которые периодически что-то хотят от воркеров.
Supervisor
Проблема: Мы запустили Gearman сервер, теперь необходимо запустить n-ое количество различных воркеров.
— Запускать вручную и отвязывать от консоли?
— а как узнать что кто-то упал? и идет ли работа?
— ах, не отвязывать от консоли. Нет, попахивает мазохизмом.
Для решения этих проблем можно использовать Supervisor.
Как говорится в руководстве: Supervisor — клиент-серверная система, которая помогает пользователям мониторить и управлять количеством процессов в Unix-like операционной системе.
С его помощью мы можем демонизировать всех воркеров в нужном количестве, а так же отслеживать их работу
Необходимо для каждого воркера написать отдельный конфиг-файл и поместить его в /etc/supervisor/conf.d/
Конфиг-файл имеет довольно простую структуру:
[program:<worker_name>]
command=<execution_file>
process_name=%(process_num)s
stdout_logfile=/var/log/<worker_name>.log
stderr_logfile=/var/log/<worker_name>.log
redirect_stderr=true
autostart=true
autorestart=true
startsecs=5
numprocs=1
[program:<worker_name>] — заголовок секции. Нижеследующие параметры будут относится только к этому воркеру(демону)
command — команда на запуск файла. чаще всего путь к исполняемому файлу.
process_name — имя каждого инстанса воркера. Здесь есть тонкость — В мануале указано, что этот параметр не обязательный. Но у меня были проблемы с запуском нескольких инстансов воркера, если его не указывать. Дело в том, что имена процессов должны отличаться. Здесь помимо названия воркера указываем его порядковый номер.
stdout_logfile — говорит само за себя. куда перенаправляем стандартную консоль вывода.
stderr_logfile — то же самое, только для ошибок. Рекомендую указывать эти 2 параметра. Они могут очень выручить, когда придется разбераться почему падают ваши демоны.
autostart — как и следовало ожидать. запускаем воркеров при запуске супервизорда. Как правило при старте системы.
autorestart — уже за один этот параметр стоит использовать супервизор. Рестартует вашего воркера, если тот при выполнении одного из заданий упал с Exception’ом.
startsecs — сколько времени нужно ждать воркера, чтобы он запустился (не обязательный параметр)
numprocs — это второй параметр, за который можно любить супервизора — количество инстансов воркеров.
Контроль и управление демонами
Есть 2 возможности контролировать демоны, запущенные супервизором это консольная утилита supervisorCtl и веб интерфейс.
SupervisorCtl при запуске отображает информацию о статусе демонов:
Gearman_AddressCodeFinder:0 RUNNING pid 2060, uptime 10:15:01
Gearman_MessageSender:0 RUNNING pid 2064, uptime 10:15:01
Gearman_MessageSender:1 RUNNING pid 2063, uptime 10:15:01
Gearman_ReportCreator:0 RUNNING pid 2055, uptime 10:15:01
Gearman_WorkplanNotifier:0 RUNNING pid 2061, uptime 10:15:01
Universal:0 RUNNING pid 2059, uptime 10:15:01
Universal:1 RUNNING pid 2058, uptime 10:15:01
Здесь все понятно и без объяснений. Можно понять кто работает, кто упал.
С помощью этой утилиты из консоли можно останавливать\запускать демонов, переконфигурировать супервизорд. Довольно интересна команда fg, позволяющая подключится к процессу в фоновом режиме (Он становится привязан к вашей консоли). Довольно удобная вещь для отладки на боевой системе 🙂
Управление демонами из веб-интерфейса
Помимо консольного интерфейса Супервизор имеет веб-интерфейс:
Попасть в него как правило можно по Url: 127.0.0.1:9211/ В вашем случае порт может отличаться. настройки можно найти в секции
[inet_http_server]
port = 127.0.0.1:9211
конфиг файла (в моем случае /etc/supervisor/supervisord.conf)
Из веб-интерфейса, так же как и из консоли, можно запускать\останавливать демонов, следить за тем, что они выводят на консоль. Последнее особенно ценно когда приходится отлавливать баги демонов на боевой системе
Gearman tools
Мониторинг демонов это хорошо. Но как узнать сколько задач на сервере очередей, а сколько и каких задач исполняются в данный момент. Есть как минимум 2 способа:
1) Подключение по telnet к серверу очередей и запрос состояния:
telnet localhost 4730
status //запрашиваем информацию о состоянии очередей
address:find 0 0 1
workplan:sendnotify 0 0 1
report:createreport 0 0 1
message:send 0 0 2
universal:universal 0 0 2
Но ифнормация довольно скудна. и вспомните ли вы через 2 месяца что за цифра в 3ей колонке? Я — точно нет.
2) Есть более красивое решение — утилита gearman_top
Она показывает ту же информацию, но в более удобном виде, и обновление данных происходит в реальном времени.
Устанавивается довольно просто:
apt-get install gearman-tools
Запускается командой:
gearman_top
Выводит информацию:
Queue Name | Woker Available | Jobs Waiting | Jobs Running
----------------------------------------------------------------------
address:find | 1 | 0 | 0
message:send | 2 | 0 | 0
report:createreport | 1 | 0 | 0
universal:universal | 2 | 0 | 0
workplan:sendnotify | 1 | 0 | 0
----------------------------------------------------------------------
Текст вывода на экран говорит сам за себя: Какие очереди присутствуют на сервере, сколько воркеров доступно в данный момент, сколько задач выполняется и сколько ждет выполнения.
Управляем процессами с Supervisor | Тегированный Вилан
Автор: spions on 13 ноября 2015
Supervisor — демон, который управляет процессами в системе, позволяет отслеживать их состояние, в случаи непредвиденного выхода — перезапускать. Особая популярность применения как правило связана с внешними скриптами, которые необходимо запускать по определенным правилам и отслеживать их состояние. Например, с статье Gearman: распределяем задачи мы используем воркеты, их стоит поместить в окружение Supervisor.
Кроме демона система оснащена веб-интерфейсом и консольной утилитой supervisorctl: для мониторинга и управления процессами .
Установка supervisor.
Как правило пакет «supervisor» присутствует в системных репозитариях, однако стоит обратить внимание на версию. В связи с развитием проекта, на момент написания статьи, нас интересует 3 версия. К сожалению CentOS ставит вторую версию пакета, по этому перед выполнением команд следуют убедиться, что пакет не установлен или если установлен и версия ниже 3-й — удалить.
Непосредственно установка:
#yum install python-setuptools #easy_install supervisor # supervisord --version 3.1.3 |
#yum install python-setuptools #easy_install supervisor # supervisord —version 3.1.3
Easy Install не создает нам конфигурационный файл и файл запуска демона:
Исправим это недоразумение.
echo_supervisord_conf > /etc/supervisord.conf |
echo_supervisord_conf > /etc/supervisord.conf
В конфигурационном файле снимаем комментарий с «[include]»:
[include] files = /etc/supervisord.d/*.conf |
Скрипт запуска помещаем в /etc/rc.d/init.d/supervisord:
#!/bin/bash . /etc/init.d/functions DAEMON=/usr/bin/supervisord PIDFILE=/var/run/supervisord.pid [ -x "$DAEMON" ] || exit 0 start() { echo -n "Starting supervisord: " if [ -f $PIDFILE ]; then PID=`cat $PIDFILE` echo supervisord already running: $PID exit 2; else daemon $DAEMON --pidfile=$PIDFILE -c /etc/supervisord. conf RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord return $RETVAL fi } stop() { echo -n "Shutting down supervisord: " echo killproc -p $PIDFILE supervisord echo rm -f /var/lock/subsys/supervisord return 0 } case "$1" in start) start ;; stop) stop ;; status) status supervisord ;; restart) stop start ;; *) echo "Usage: {start|stop|status|restart}" exit 1 ;; esac exit $? |
#!/bin/bash . /etc/init.d/functions DAEMON=/usr/bin/supervisord PIDFILE=/var/run/supervisord.pid [ -x «$DAEMON» ] || exit 0 start() { echo -n «Starting supervisord: « if [ -f $PIDFILE ]; then PID=`cat $PIDFILE` echo supervisord already running: $PID exit 2; else daemon $DAEMON —pidfile=$PIDFILE -c /etc/supervisord. conf RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord return $RETVAL fi } stop() { echo -n «Shutting down supervisord: « echo killproc -p $PIDFILE supervisord echo rm -f /var/lock/subsys/supervisord return 0 } case «$1» in start) start ;; stop) stop ;; status) status supervisord ;; restart) stop start ;; *) echo «Usage: {start|stop|status|restart}» exit 1 ;; esac exit $?
Не забываем выдать права на запуск:
chmod 755 /etc/rc.d/init.d/supervisord |
chmod 755 /etc/rc.d/init.d/supervisord
Применение на практике:
В папке /etc/supervisor/conf. d создаем необходимое нам задание на запуск.
Одиночное:
[program:gearman_client] command=/usr/bin/php gearman_client.php directory=/mnt/vhosts/httpdocs/ autostart=true autorestart=true |
Или несколько потоков:
[program:yii-gearman-worker] command=/usr/bin/php /yii/yii gearman/start %(process_num)s directory=/mnt/vhosts/httpdocs/ process_name=gearman-worker-%(process_num)s priority=1 numprocs=3 numprocs_start=1 autorestart=true |
Проверяем что все работает:
# ps -ax| grep php Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ 11943 ? S 0:00 /usr/bin/php /mnt/vhosts/httpdocs/include/cron/gearman_client.php 12167 ? S 0:13 /usr/bin/php /home/vhosts/yii/yii gearman/start 1 12168 ? S 0:13 /usr/bin/php /home/vhosts/yii/yii gearman/start 3 12170 ? S 0:12 /usr/bin/php /home/vhosts/yii/yii gearman/start 2 16443 pts/3 S+ 0:00 grep php |
# ps -ax| grep php Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ 11943 ? S 0:00 /usr/bin/php /mnt/vhosts/httpdocs/include/cron/gearman_client.php 12167 ? S 0:13 /usr/bin/php /home/vhosts/yii/yii gearman/start 1 12168 ? S 0:13 /usr/bin/php /home/vhosts/yii/yii gearman/start 3 12170 ? S 0:12 /usr/bin/php /home/vhosts/yii/yii gearman/start 2 16443 pts/3 S+ 0:00 grep php
Вы можете оставить комментарий ниже.Supervisor или как запускать скрипты в фоне
Supervisor или как запускать скрипты в фоне
Часто бывает потребность в запуске определенных скриптов в фоновом режиме. Многие просто ставят «&» и радуются, но скрипты имеют свойство падать в самый неподходящий момент и хотелось бы сразу их заново запускать и читать логи. На помощь приходит supervisor.
Supervisor — менеджер долгосрочных процессов, который выступает в качестве прослойки для мониторинга и управления Вашими процессами.
Установка
apt-get install supervisor
После установки supervisor должен запуститься сам, но для пущей надежности лучше его рестартануть:
service supervisor restart
Установка завершена…
Настройка
Запуск каждого процесса(скрипта) осуществляется при помощи создания конфигурационного файла с расширением .conf в папке
/etc/supervisor/conf.d
Переходим в папку:
cd /etc/supervisor/conf.d
Создаем файл запуска процесса «test»:
nano test.conf
В файле пишем:
[program:test] command=/home/test.py autostart=true autorestart=true stderr_logfile=/var/log/test.err.log stdout_logfile=/var/log/test.out.log
А теперь все разберем:
[program:test] — задает названия процесса в supervisor, в данном случае «test»command=/home/test.py — полный путь к запускаемому скрипту
autostart=true — запускать ли процесс при старте системы, доступные варианты: true, false
autorestart=true — запускать ли процесс при его остановке, доступные варианты: true, false, unexpected (запускать в том случае, если процесс был завершен неправильно)
stderr_logfile=/var/log/test.err.log — файл с выводом лога ошибки
stdout_logfile=/var/log/test.out.log — файл с выводом лога процесса при работе
Данные параметры минимальные для запуска скрипта, полный список параметров находится здесь.
Настройка закончена, нужно, что б supervisor считал обновленные настройки:
supervisorctl reread
После того, как настройки считаны — нужно дать комманду запуска все сконфигурированых процессов, для этого вводим:
supervisorctl update
Всё, все процессы запущены и работают проверить статус Ваших процессов можете с помощью cli:
supervisorctl
Как только выполняете эту команду — видите текущие процессы и их статусы. Можете ввести help, что б получить помощь по командам.
Основные команды: start, stop, restart
Что б перезапустить процесс вводите:
restart test
Где рестарт — комманда, а test — название процесса
Что б выйти из cli, вводим:
quit
Надеюсь, что это кому-то поможет
Кто наблюдает за супервайзерами? | Выучите Erlang на благо!
Привет, похоже, ваш Javascript отключен. Ничего страшного, сайт без него работает. Однако вы можете предпочесть читать его с подсветкой синтаксиса, для чего требуется Javascript!
Кто наблюдает за супервайзерами?
От плохого к хорошему
Супервизоры — одна из самых полезных частей OTP, которые вы можете использовать. Мы уже видели базовых супервизоров в статьях «Ошибки и процессы» и «Проектирование параллельного приложения».Мы видели в них способ сохранить работу нашего программного обеспечения в случае ошибок, просто перезапустив неисправные процессы.
Чтобы быть более подробным, наши супервизоры запускали процесс worker , связывались с ним и перехватывали сигналы выхода с помощью process_flag (trap_exit, true)
, чтобы узнать, когда процесс завершился, и перезапускали его. Это нормально, когда нам нужен перезапуск, но это также довольно глупо. Представим, что вы используете пульт дистанционного управления для включения телевизора. Если это не сработает с первого раза, вы можете попробовать один или два раза на случай, если вы нажали неправильно или сигнал пошел не так.Наш руководитель, если бы он пытался включить тот самый телевизор, продолжал бы пытаться бесконечно, даже если бы выяснилось, что в пульте нет батареек или он даже не подходит к телевизору. Довольно тупой начальник.
Еще кое-что, что было глупо в отношении наших руководителей, это то, что они могли наблюдать только за одним работником за раз. Не поймите меня неправильно, иногда полезно иметь одного супервизора для одного работника, но в больших приложениях это означает, что у вас может быть только цепочка супервизоров, а не дерево. Как бы вы руководили задачей, когда вам нужно сразу 2 или 3 сотрудника? С нашей реализацией это просто невозможно.
К счастью, диспетчеры OTP обеспечивают гибкость для обработки таких (и многих других) случаев. Они позволяют вам определить, сколько раз рабочий должен быть перезапущен за определенный период времени, прежде чем отказаться от него. Они позволяют иметь более одного работника на одного супервизора и даже позволяют выбирать между несколькими шаблонами, чтобы определить, как они должны зависеть друг от друга в случае сбоя.
Концепции супервизора
Супервизоры — одно из самых простых способов поведения для использования и понимания, но одно из самых сложных для написания хорошего дизайна.Существуют различные стратегии, связанные с супервизорами и дизайном приложений, но прежде чем перейти к ним, нам нужно понять более базовые концепции, потому что в противном случае это будет довольно сложно.
Одно из слов, которые я использовал в тексте до сих пор с
Определение супервизора от Merriam-Webster
su · per · vi · sor | \ ˈSü-pər-ˌvī-zər \ : тот, который контролирует, в частности, : административного сотрудника, отвечающего за бизнес, правительство или школьное подразделение или деятельностьДругие слова от руководителя
надзорного \ ˌsü- pər- ˈVī- zə- rē, — ˈvīz- rē \ прилагательноеПримеры супервизора в предложении
Наблюдатель уволил его после того, как он появился на работе в нетрезвом виде.Если у вас возникла проблема, обратитесь к своему супервизору .
Последние примеры в сети Наблюдатель , Идрис-Фарид Кларк, был приговорен к 18 месяцам тюремного заключения за нападение, а также за последующие угрозы коллегам-офицерам дать показания от его имени. — Адам Ферриз, , кливленд, , «Округ Кайахога сталкивается с 27 судебными исками в связи с нарушением дисциплины в тюрьме в связи с чередой смертей заключенных, на данный момент выплачено 1,35 миллиона долларов», 22 декабря.2020 Среди тех, кто получил первые вакцины в районе Портленда, были медсестра отделения интенсивной терапии, начальник домашнего хозяйства , респираторный терапевт, видеооператор и медсестра отделения неотложной помощи. — Из Usa Today Network And Wire Reports, USA TODAY , «Дома престарелых, заразные статьи, стимулирование игрушечного драйва: новости из примерно 50 наших штатов», 18 декабря 2020 г. Среди прочего, внутренние сообщения показали, что непосредственный руководитель Фрэнка и Гарвина , Capt.- Кевин Ректор, Los Angeles Times , «Выплата 700 000 долларов после обнаружения того, что осведомитель полиции Лос-Анджелеса был ошибочно уволен, как показывают записи» 15 декабря 2020 г.Недавно днем к нему присоединился только еще один студент-сотрудник и их руководитель , которые в этом году наблюдает за семью студентами вместо ее обычных 16-18. — Ник Ролл, The Christian Science Monitor , «Когда ваши студенты — ваша рабочая сила, что происходит во время пандемии?», 9 декабря.Департамент услуг по уборке и хранению 2020 DeSoto ISD назвал Джеклин Диллон, начальник утренней опеки средней школы DeSoto , ее сотрудница 2020 года за ее работу по обеспечению безопасности учеников. — Тайлер Картер, Dallas News , «Во время пандемии этот надзиратель-надзиратель для средней школы ДеСото помогает обеспечивать безопасность учащихся», 8 декабря 2020 г. Скотт и Диксон позже собрались вместе и наняли супервайзера по футбольному судейству Дэвида Коулман.- Джон Канзано, oregonlive , «Канцано: Pac-12 тонет в море управленческих осечек», 5 декабря 2020 г. Данфорд был нанят в качестве справочного библиотекаря и занимал несколько должностей, в том числе помощника начальника отдела, супервизора служб для взрослых и библиотеки менеджер по бул. Напер. — chicagotribune.com , «Люди Нэпервилля в новостях», 28 ноября 2020 г. В состав группы входили Джек Хайн, руководитель парка и сотрудник Сара Люси (зеленая куртка), а также участница «Друзей» Лора Борг (на фото) , Линн Уилкинсон (в синем) и Дороти Миллен (клетчатая рубашка).- courant.com , «Новости сообщества The Colchester Edition», 25 ноября 2020 г.Эти примеры предложений автоматически выбираются из различных источников новостей в Интернете, чтобы отразить текущее использование слова «руководитель». Взгляды, выраженные в примерах, не отражают мнение компании Merriam-Webster или ее редакторов. Отправьте нам отзыв.
ПодробнееПервое известное использование супервизора
15 век в значении, определенном выше
История и этимология супервизора
Среднеанглийский язык, от средневековой латыни, от supervidēre
Узнать больше о супервизоре
Статистика для супервизора
Процитируйте эту запись
«Руководитель.” Merriam-Webster.com Dictionary , Merriam-Webster, https://www.merriam-webster.com/dictionary/supervisor. Доступ 12 января 2021 г.
MLA Chicago APA Merriam-WebsterДополнительные определения для супервизора
su · per · vi · sor | \ ˈSü-pər-ˌvī-zər \Kids Определение супервизора
1 : лицо, отвечающее за других
2 : сотрудник, отвечающий за подразделение или деятельность предприятия, правительство, или школа
su · per · vi · sor | \ ˈSü-pər-ˌvī-zər \Юридическое определение контролера
: тот, который руководит или наблюдает за лицом, группой, отделом, организацией или операцией, в частности : всенародно избранный главный административный чиновник поселка или другое подразделение в некоторых штатах США.S.
Другие слова от супервайзера
supervisorial \ ˌsü- pər- vī- ˈzōr- ē- əl \ прилагательное
supervisor \ ˌsü- pər- vī- zə- rē \ прилагательноеКомментарии к supervisor
Что заставило вас искать supervisor ? Сообщите, пожалуйста, где вы это читали или слышали (включая цитату, если возможно).
Важность | Знание |
---|---|
Производство и обработка — Знание сырья, производственных процессов, контроля качества, затрат и других методов для максимального повышения эффективности производства и распределения товаров. | |
Механика — Знание машин и инструментов, включая их конструкцию, использование, ремонт и техническое обслуживание. | |
Администрирование и управление — Знание принципов бизнеса и управления, связанных со стратегическим планированием, распределением ресурсов, моделированием человеческих ресурсов, техникой лидерства, методами производства и координацией людей и ресурсов. | |
Персонал и человеческие ресурсы — Знание принципов и процедур найма, отбора, обучения, вознаграждения и льгот, трудовых отношений и переговоров, а также информационных систем персонала. | |
Техника и технологии — Знание о практическом применении инженерных наук и технологий. Это включает применение принципов, методов, процедур и оборудования для проектирования и производства различных товаров и услуг. | |
Компьютеры и электроника — Знание схемных плат, процессоров, микросхем, электронного оборудования, компьютерного оборудования и программного обеспечения, включая приложения и программирование. | |
Образование и обучение — Знание принципов и методов разработки учебных программ и тренингов, преподавания и обучения для отдельных лиц и групп, а также измерения результатов обучения. | |
Английский язык — знание структуры и содержания английского языка, включая значение и написание слов, правила композиции и грамматику. | |
Математика — знание арифметики, алгебры, геометрии, исчисления, статистики и их приложений. | |
Психология — знание человеческого поведения и работоспособности; индивидуальные различия в способностях, личности и интересах; обучение и мотивация; методы психологического исследования; и оценка и лечение поведенческих и аффективных расстройств. | |
Дизайн — Знание методов проектирования, инструментов и принципов, используемых при производстве точных технических планов, чертежей, чертежей и моделей. | |
Клиентское и персональное обслуживание — Знание принципов и процессов предоставления клиентских и персональных услуг. Это включает в себя оценку потребностей клиентов, соответствие стандартам качества услуг и оценку удовлетворенности клиентов. | |
Канцелярские услуги — Знание административных и канцелярских процедур и систем, таких как обработка текста, управление файлами и записями, стенография и транскрипция, разработка форм и других офисных процедур и терминологии. |