如何使用主管控制和监视远程主机中的进程?

How to control and monitor processes in remote host with supervisor?

Supervisor 文件提到 remote command line

Supervisor provides you with one place to start, stop, and monitor your processes. Processes can be controlled individually or in groups. You can configure Supervisor to provide a local or remote command line and web interface.

这是否意味着 supervisor 可以控制和监视远程主机上的进程 运行ning?

例如,

  1. 有三台服务器ABC
  2. 服务器A运行主管。
  3. 主管 运行 在 BC 中处理。
  4. 主管可以监视和控制(停止和启动)BC 中的进程。

如果可能的话,你能给我一个 Supervisor 配置示例吗?

引用的意思不是 100% 清楚。恕我直言,这意味着控制可以远程或本地进行。

总之,发现主管文档的这一部分非常有帮助。 http://supervisord.org/plugins.html

它提到了可以帮助您从单一来源控制多台机器上的主管的工具。

你不能只使用 supervisor 来管理远程主机的进程。

但是你可以在每台主机上都安装supervisor,然后在控制主机上使用supervisor XML-RPC API管理它们,这是官方的。

很多插件都是这样实现的

使用xml-rpc

import socket
from http.client import HTTPConnection
from xmlrpc import client


class UnixStreamHTTPConnection(HTTPConnection):
    def connect(self):
        self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
        self.sock.connect(self.host)


class UnixStreamTransport(client.Transport, object):
    def __init__(self, socket_path):
        self.socket_path = socket_path
        super(UnixStreamTransport, self).__init__()

    def make_connection(self, host):
        return UnixStreamHTTPConnection(self.socket_path)


server = client.ServerProxy('http://127.0.0.1',transport=UnixStreamTransport("/path/to/supervisor.sock"))
print(proxy.supervisor.getState())
server.supervisor.stopProcess("test")
server.supervisor.startProcess("test")