集中式监控UI(Web & CLI)
项目描述
Multivisor
集中式监控UI(Web & CLI)
- 进程状态始终是最新的
- 异步操作的反应性
- 状态变化时通知
- 移动感知,单页应用(SPA)网页
- 强大的过滤器
- 交互式CLI
- 在 supervisor 和 supervisor-win 上运行
Multivisor由3个组件组成
- web服务器:从所有监控器收集信息,并为整个系统提供一个类似仪表板的UI
- multivisor RPC:用于在每个supervisord和multivisor web服务器之间通信的supervisor的RPC扩展
- CLI:一个可选的CLI,与multivisor web服务器通信
安装和配置
安装和配置步骤在Linux和Windows上完全相同。
感谢 ESRF 的赞助,multivisor能够很好地与 supervisor-win 一起工作。
RPC
多视窗RPC必须安装在与您的supervisord实例相同的环境(们)中。它可以在2.7到3.x的Python环境中安装。
在您的supervisord进程相同的Python环境中,输入
pip install multivisor[rpc]
配置多视窗RPC有两种选择:1)作为额外的rpcinterface配置到supervisord或2)由supervisord管理的eventlistener进程。
第一种方法的优势是不需要额外的进程,但其实现依赖于supervisord的内部细节。因此,多视窗作者建议使用第二种方法。
选项1:rpcinterface
通过将以下行添加到您的supervisord.conf文件来配置多视窗RPC接口
[rpcinterface:multivisor]
supervisor.rpcinterface_factory = multivisor.rpc:make_rpc_interface
bind=*:9002
如果没有提供bind,它默认为*:9002
。
为每台正在运行的supervisor重复上述步骤。
选项2:eventlistener
通过将以下行添加到您的supervisord.conf文件来配置多视窗RPC接口
[eventlistener:multivisor-rpc]
command=multivisor-rpc --bind 0:9002
events=PROCESS_STATE,SUPERVISOR_STATE_CHANGE
如果没有提供bind,它默认为*:9002
。
您可以选择事件监听器的名称。作为一种惯例,我们建议使用multivisor-rpc
。
注意:确保multivisor-rpc
命令可访问或提供完整的PATH。
为每台正在运行的supervisor重复上述步骤。
Web服务器
多视窗Web服务器需要一个Python 3.x环境。它必须安装在一个可以访问不同supervisors的机器上。这是通过以下方式实现的
pip install multivisor[web]
Web服务器使用类似于INI的配置文件(类似于supervisor本身)进行配置,该文件作为命令行参数传递。它通常命名为multivisor.conf,但可以是您想要的任何文件名。
该文件包含一个global
部分,其中您可以提供可选的名称给您的多视窗实例(默认是multivisor。此名称将出现在多视窗网页的左上角)。
要添加新的supervisor到列表中,只需添加一个[supervisor:<name>]
部分。它接受一个可选的格式为[<host>][:<port>]
的url
。默认为<name>:9002
。
以下是一个示例
[global]
name=ACME
[supervisor:roadrunner]
# since no url is given it will be roadrunner:9002
[supervisor:coyote]
# no host is given: defaults to coyote
url=:9011
[supervisor:bugsbunny]
# no port is given: defaults to 9002
url=bugsbunny.acme.org
[supervisor:daffyduck]
url=daffyduck.acme.org:9007
安装和配置完成后,可以从命令行启动Web服务器
multivisor -c ./multivisor.conf
启动一个指向localhost:22000的浏览器。在移动设备上,它应该看起来像右边的图。
当然,多视窗Web服务器本身也可以作为普通程序在supervisor中进行配置。
认证
为了保护多视窗免受未授权访问,您可以启用认证。
在配置文件的global
部分指定username
和password
参数,例如
[global]
username=test
password=test
您也可以将password
指定为SHA-1散列的十六进制值,以{SHA}
前缀开头:例如{SHA}a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
(示例散列是SHA-1中的test
)。
为了使用认证,您还需要设置环境变量MULTIVISOR_SECRET_KEY
,因为flask会话模块需要一些秘密值来创建安全的会话。您可以使用python轻松生成一些随机散列:python -c 'import os; import binascii; print(binascii.hexlify(os.urandom(32)))'
CLI
多视窗CLI是一个可选组件,可以通过以下方式安装
pip install multivisor[cli]
CLI直接通过HTTP REST API连接到Web服务器。它不需要任何配置。
它可以通过以下方式启动
multivisor-cli --url localhost:22000
从头开始运行示例
# Fetch the project:
git clone https://github.com/tiagocoutinho/multivisor
cd multivisor
# Install frontend dependencies
npm install
# Build for production with minification
npm run build
# feel free to use your favorite python virtual environment
# here. Otherwise you will need administrative privileges
pip install .[all]
# Launch a few supervisors
mkdir examples/full_example/log
supervisord -c examples/full_example/supervisord_lid001.conf
supervisord -c examples/full_example/supervisord_lid002.conf
supervisord -c examples/full_example/supervisord_baslid001.conf
# Finally, launch multivisor:
multivisor -c examples/full_example/multivisor.conf
就这样!
启动一个指向localhost:22000的浏览器。在移动设备上,它应该看起来像这样
技术
multivisor
后端运行一个flask Web服务器。
multivisor-cli
运行一个基于prompt-toolkit的控制台。
开发
构建和安装
# install frontend
npm install
# build for production with minification
npm run build
# install backend
pip install -e .
运行
# serve at localhost:22000
multivisor -c multivisor.conf
启动浏览器指向 localhost:22000
开发模式
您可以使用 webpack 开发服务器来运行后端,以方便您的开发周期
首先,启动多视器(默认监听 22000 端口)
python -m multivisor.server.web -c multivisor.conf
现在,在另一个控制台中运行 webpack 开发服务器(它将在浏览器和多视器之间转发请求)
npm run dev
就是这样。例如,如果您修改了 App.vue
,您应该在浏览器上直接看到更改。
项目详情
multivisor-6.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f834f7b6968d478e1e2e24638d4fc29a9a57947fe5642cb266f109745112835b |
|
MD5 | 332053a8131e01924d6314d2f90e1eb1 |
|
BLAKE2b-256 | 21b57d68162a01f2ba087b3033f5dfaa907dd0555d1d5c62f57164ddfaaca8b5 |