Настройте панель мониторинга Supervisord Web Gui на удаленный доступ в Ubuntu AWS EC2 Instance с NGINX - PullRequest
0 голосов
/ 06 июня 2019

Моя цель: я использую экземпляр AWS EC2 с запущенным на нем Ubuntu. Я использую supervisord для запуска и мониторинга моих долго выполняющихся процессов, и я хочу использовать встроенную панель веб-интерфейса с графическим интерфейсом пользователя для мониторинга моих долго выполняющихся процессов.

Моя точка застревания: я могу найти инструкции о том, как настроить это, но я не мог найти, как настроить это на экземпляре ec2. В настоящее время я могу получить доступ к своему экземпляру AWS ec2 только через командную строку ssh. Я хочу иметь возможность просматривать панель управления из браузера в моем офисе на моем ноутбуке.

У меня сложилось впечатление, что мне нужно настроить nginx для "обслуживания" этой страницы статуса графического интерфейса.

Мой /etc/nginx/sites-available/supervisord файл:

server {

  location / supervisord/ {
    proxy_pass http://127.0.0.1:9001/;
    proxy_http_version 1.1;
    proxy_buffering     off;
    proxy_max_temp_file_size 0;
    proxy_redirect     default;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header   Connection       "";
  }

}

Я предполагаю, что я могу просто изменить http://127.0.0.1:9001 на IPV4-адрес моего фактического сервера. Я знаю, что мой сервер имеет прослушиватель TCP на порт 9001. по результатам netstat -tulpn | grep LISTEN

tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      -

Мой /etc/supervisord.conf файл:

[inet_http_server]          ; inet (TCP) server disabled by default
port=127.0.0.1:9001         ;

[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10           ; (num of main logfile rotation backups;default 10)
loglevel=debug               ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false               ; (start in foreground if true;default false)
minfds=1024                  ; (min. avail startup file descriptors;default 1024)
minprocs=200                 ; (min. avail process descriptors;default 200)
nocleanup=true              ; (don't clean up tempfiles at start;default false)
childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
;serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket

; The below sample program section shows all possible program subsection values,
; create one or more 'real' program: sections to be able to control them under
; supervisor.

[program:my_program]
command=my_program.py ; the program (relative uses PATH, can take args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1                    ; number of processes copies to start (def 1)
autostart=true                ; start at supervisord start (default: true)
startsecs=3                   ; # of secs prog must stay up to be running (def. 1)

Когда я делаю curl http://127.0.0.1:9001, я получаю всю страницу index.html, возвращенную мне как текст графического интерфейса супервизора.

Я знаю: 1. Служба работает 2. Порт 9001 открыт, и служба прослушивает этот порт.

Я не знаю: 1. Как добраться до него с моего ноутбука в браузере: (

1 Ответ

0 голосов
/ 07 июня 2019

Я наконец-то понял это.

  1. Откройте порты 80 и 443 для вашего экземпляра ec2, используя вашу группу безопасности.Сначала определите, в какой группе безопасности находится ваш экземпляр ec2. Если вы выберете свой экземпляр ec2, на своей панели мониторинга ec2 вы сможете увидеть, в какой группе безопасности он находится в той же строке, возможно, вам придется прокрутить вправо, чтобы увидеть его.,Перейдите на панель инструментов групп безопасности и выберите свою группу безопасности.Установите для этого что-то вроде этого, вы можете сделать это более ограничительным позже, это только сейчас, чтобы начать: security group rules

  2. Сделайте это /etc/nginx/sites-available/supervisord file:

upstream supervisord {
server localhost:9001 fail_timeout=0;
}

server {
        listen 80;
        server_name ec2-**-***-**-**.compute-1.amazonaws.com;
        access_log /var/log/access_supervisor.log;
        error_log /var/log/error_supervisor.log;

        location / {

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;

                proxy_pass http://supervisord;
        }

}

Хорошо, поэтому, где у меня есть server_name ec2-**-***-**-**.compute-1.amazonaws.com; Вам необходимо поместить свой Public DNS (IPV4).Если вы перейдете на панель мониторинга ec2 и выберите свой экземпляр, вы увидите вкладку «Описание» в нижней части экрана, где вы можете получить эту информацию.Я поставил * здесь, чтобы не выставлять мои, но вы поставите здесь реальные цифры, а не звездочки.

Создайте символическую ссылку на него:
sudo ln -s /etc/nginx/sites-available/supervisord /etc/nginx/sites-enable/supervisord
Перезапустите nginx:
sudo nginx -s reload
Перейдите на ec2- - * - - .compute-1.amazonaws.com в вашем браузере

Ссылка: https://www.dangtrinh.com/2013/11/supervisord-using-built-in-web.html

...