设置 Supervisord Web Gui 仪表板,以便使用 NGINX 在 Ubuntu AWS EC2 实例上远程访问

设置 Supervisord Web Gui 仪表板,以便使用 NGINX 在 Ubuntu AWS EC2 实例上远程访问

我的目标:我正在使用一个运行着 Ubuntu 的 AWS EC2 实例。我正在使用 Supervisord 来启动和监控我的长时间运行的进程,并且我想使用内置的 Web GUI 仪表板来监控我的长时间运行的进程。

我的卡点:我可以找到有关如何进行设置的说明,但我找不到如何在 ec2 实例上进行设置。我目前只能通过 ssh 命令行访问我的 AWS ec2 实例。我希望能够通过办公室笔记本电脑上的浏览器查看仪表板。

我的印象是我需要配置 nginx 来“提供”这个 GUI 状态页面。

我的/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 地址。我知道我的服务器在端口 9001 上有 TCP 侦听器。通过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 页面作为主管 GUI 的文本返回给我。

我知道:1. 服务已启动 2. 端口 9001 已打开,并且有一个服务正在监听该端口。

我不知道:1.如何通过我的笔记本电脑上的浏览器访问它:(

答案1

我最终确实明白了这一点。

  1. 使用您的安全组为您的 ec2 实例打开端口 80 和 443。首先确定您的 ec2 实例在哪个安全组中。在您的 ec2 仪表板中,如果您选择您的 ec2 实例,您将能够在同一行中看到它所在的安全组,您可能需要向右滚动才能看到它。转到安全组仪表板并选择您的安全组。将其设置为类似以下内容,您可以稍后使其更具限制性,这只是暂时让它运行: 安全组规则

  2. 制作此/etc/nginx/sites-available/supervisord文件:

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;
        }

}

好的,您需要将公共 DNS(IPV4)放在我这里server_name ec2-**-***-**-**.compute-1.amazonaws.com; 。如果您转到 ec2 仪表板并选择您的实例,您将在屏幕底部看到一个“描述”选项卡,您可以在其中获取此信息。我在这里输入 * 以免暴露我的,但您将在那里输入实际数字,而不是星号。

  1. 建立它的符号链接:
sudo ln -s /etc/nginx/sites-available/supervisord /etc/nginx/sites-enable/supervisord
  1. 重启 nginx:
sudo nginx -s reload
  1. 转到 ec2--*--浏览器中的 .compute-1.amazonaws.com 它在浏览器中看起来像这样,您可以检查所需进程的控制台日志。如果您想与其他人共享某个服务器的状态,但又不想向他们提供您的 ssh 凭据,这非常方便。出色的通信工具,可保护您的凭据。

参考: https://www.dangtrinh.com/2013/11/supervisord-using-built-in-web.html

相关内容