14 февраля 2013 г. FreeBSD Nginx Python Мониторинг Supervisor

Supervisor. Поднимаем веб-интерфейс

В предыдущей статье о 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.org;
    location /supervisor/ {
        rewrite ^/supervisor(.+)$ $1 break;
        proxy_pass http://localhost:9001;
        proxy_redirect http://example.org http://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

Вот что должно в итоге у нас получиться, при входе в веб-интерфейс:

Веб-интерфейс Supervisor

Вот и всё!

Комментарии

какой смысл использовать supervisor с uwsgi ? Он и так прекрасно работает как демон + есть emperor

Я не пользовался uWSGI Emperor, но с виду тоже самое что и в случае с Supervisor. Встречный вопрос, какой смысл использовать Emperor, если есть Supervisor? То есть мне интересны превосходящие возможности Emperor.

Что касается вопроса, зачем у меня uwsgi запущен из под supervisor, то мне надо мониторить его, в том числе supervisor у меня подключен к Nagios и все это работает как единное целое. То есть uWSGI упал, я об этом узнал по смс, в тоже время supervisor его поднял и т.д. При этому мне не надо отдельно писать плагин для Nagios для отдельного uWSGI-демона и т.п.

А ты сам просто запускаешь uWSGI и никак его не мониторишь? Я просто все мониторю, что-то через supervisor, что-то через monit.

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

А по поводу нотификаций о крашах, в uwsgi 1.4 появилась такая возможность как "alarm subsystem" , но сам не пользовался

Спасибо за информацию!

http://openid.yandex.ru/vvitalvas/ 15 февраля 2013 г. 11:51

Напиши еще, как можно использовать RPC интерфейс, будет интересно

Давай уже пиши про настоящий supervisor!

Напишу, статья в процессе, только она более общая по Erlang :-)

Подскажите, а может supervisor управлять прогами, которые прописаны в автостарте или для которых я сделал скрипт для автостарта? И если можно подскажите ссылку где глянуть, спс

прописаны в автостарте

Если у вас есть init-скрипты, то думаю лучше подойдет monit

Оставьте свой комментарий

Markdown