【问题标题】:How to control and monitor processes in remote host with supervisor?如何使用主管控制和监视远程主机中的进程?
【发布时间】:2016-08-04 13:26:56
【问题描述】:

Supervisor 文档提到了 remote command line

Supervisor 为您提供一个启动、停止和监控的地方 你的流程。可以单独或分组控制过程。 您可以配置 Supervisor 以提供本地或远程命令行 和网络界面。

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

例如,

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

如果可能的话,你能给我一个为此目的的主管配置示例吗?

【问题讨论】:

    标签: supervisord


    【解决方案1】:

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

    但您可以在每台主机上安装supervisor,并在控制主机上使用supervisor XML-RPC API进行管理,这是官方的。

    而且很多插件都是这样实现的。

    【讨论】:

      【解决方案2】:

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

      无论如何,主管文档的这一部分非常有帮助。 http://supervisord.org/plugins.html

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

      【讨论】:

        【解决方案3】:

        使用 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")
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-09
          • 1970-01-01
          • 1970-01-01
          • 2016-08-31
          • 2012-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多