Quantcast
Channel: Библиотека знаний
Viewing all articles
Browse latest Browse all 1318

Supervisor by python - [Supervisor]

$
0
0

Supervisor by python

Служит для демонизации процессов/программ с определенными параметрами и отслеживания их состояния. Запуск процессов supervisord производит от своего имени, как под процессы, поэтому контроль остается за визором. Supervisorctl предоставляет системный- и веб-интерфейсы для мониторинга и управления процессами. Вы можете предоставить пользователям доступ на определенные программы, а они в свою очередь смогут видеть состояние этих программ и совершать действия над ними (start, stop, restart). Также имеется XML-RPC интерфейс, которым вы можете пользоваться для написания своих расширений и приложений, которым нужен доступ к Supervisord. Supervisor написан на Python.

Установка

apt-get

$ sudo apt-get install supervisor

pip

Можно установить еще и c помощью пакетного мененджера pip для Python, самая свежая версия из питоновского установщика, но для этого нужно еще тянуть кучу пакетов для питона и компиляторов

sudo pip install --upgrade supervisor
sudo ln -s /usr/local/bin/supervisord /usr/bin/supervisord
sudo ln -s /usr/local/etc/supervisord.conf /etc/supervisord.conf

Настройка

nano /etc/supervisor/supervisor.conf

или

$ echo_supervisord_conf > /etc/supervisor/supervisor.conf
[unix_http_server]
file = /tmp/supervisor.sock

[supervisord]
logfile          = ./logs/supervisord.log
logfile_maxbytes = 50MB
logfile_backups  = 10
loglevel         = info
pidfile          = /tmp/supervisord.pid
nodaemon         = false
minfds           = 1024
minprocs         = 200

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

[supervisorctl]
serverurl = unix:///tmp/supervisor.sock

[program:someprogram1]
command                 = bash -c "ulimit -n 10000; exec /usr/bin/php ./bin/some-program-1.php"
process_name            = Some-Program
numprocs                = 1
autostart               = true
autorestart             = true
user                    = root
stdout_logfile          = ./logs/some-program-info.log
stdout_logfile_maxbytes = 1MB
stderr_logfile          = ./logs/some-program-error.log
stderr_logfile_maxbytes = 1MB

WEB GUI

Для запуска web интерфейса supervisorctl необходимо в файле /etc/supervisor/supervisord.conf проверить наличие секции:

[inet_http_server]
port=127.0.0.1:9771
;username=user
;password=123

Для работы через nginx c web версией можно написать прокси сервер:

server {
    listen 80;
    server_name supervisor.loc;
    location / {
        proxy_pass http://127.0.0.1:9771;
        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' ом:

/etc/init.d/supervisor restart
/etc/init.d/nginx restart

Если при запуске supervisor возникла ошибка: Starting supervisor: Error: Another program is already listening on a port that one of our HTTP..., то для решения данной проблемы нужно убить socket supervisor.sock, где находится видно из конфига

Пример:

$sudo unlink /tmp/supervisor.sock

Далее из браузера заходим на http://supervisor.loc

supervisorctl

Создание задач для supervisor:
Для создания задач, необходимо прописывать конфиги в /etc/supervisor/conf.d/ Структура файла конфигураций для worker'а supervisor'а:

[program:]
command=
process_name=%(process_num)s                          
stdout_logfile=/var/log/.log
stderr_logfile=/var/log/.log
redirect_stderr=true
autostart=true                                         
autorestart=true                                       
startsecs=5                                            
numprocs=1   
  • [program:] — заголовок секции. Нижеследующие параметры будут относится только к этому воркеру(демону)
  • command — команда на запуск файла. чаще всего путь к исполняемому файлу.
  • process_name — имя каждого инстанса воркера. Здесь есть тонкость — В мануале указано, что этот параметр не обязательный. Но у меня были проблемы с запуском нескольких инстансов воркера, если его не указывать. Дело в том, что имена процессов должны отличаться. Здесь помимо названия воркера указываем его порядковый номер.
  • stdout_logfile — говорит само за себя. куда перенаправляем стандартную консоль вывода.
  • stderr_logfile — то же самое, только для ошибок. Рекомендую указывать эти 2 параметра. Они могут очень выручить, когда придется разбераться почему падают ваши демоны.
  • autostart — как и следовало ожидать. запускаем воркеров при запуске супервизорда. Как правило при старте системы.
  • autorestart — Перазапуск воркера, если тот при выполнении одного из заданий упал с Exception'ом.
  • startsecs — сколько времени нужно ждать воркера, чтобы он запустился (не обязательный параметр)
  • numprocs — количество инстансов воркеров.

Наблюдения

Иногда при останове supervisor'а остается висеть на порту http сервера python - нужно найти кто висит

sudo netstat -nap | grep 9771

И грохнуть по pid процесс:

sudo kill 2342

Прописать параметры $_SERVER в конфиге supervisor можно через переменную environment:

[program:php-test]
command=php /path/file.php
environment=HTTP_HOST="blog-tree.com",SOME_SERVER_PARAM="my_param"

далее нам эти переменные будут доступны из $_SERVER['HTTP_HOST'] и $_SERVER['SOME_SERVER_PARAM']


Viewing all articles
Browse latest Browse all 1318

Trending Articles


Girasoles para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Tagalog Quotes About Crush – Tagalog Love Quotes


OFW quotes : Pinoy Tagalog Quotes


Long Distance Relationship Tagalog Love Quotes


Tagalog Quotes To Move on and More Love Love Love Quotes


5 Tagalog Relationship Rules


Best Crush Tagalog Quotes And Sayings 2017


Re:Mutton Pies (lleechef)


FORECLOSURE OF REAL ESTATE MORTGAGE


Sapos para colorear


tagalog love Quotes – Tiwala Quotes


Break up Quotes Tagalog Love Quote – Broken Hearted Quotes Tagalog


Patama Quotes : Tagalog Inspirational Quotes


Pamatay na Banat and Mga Patama Love Quotes


Tagalog Long Distance Relationship Love Quotes


BARKADA TAGALOG QUOTES


“BAHAY KUBO HUGOT”


Vimeo 10.7.0 by Vimeo.com, Inc.


Vimeo 10.7.1 by Vimeo.com, Inc.