依然是阿里开源的一个专门用于监控Node应用服务的库 --> Pandora,专门为Node而生并且对于Egg的多进程模型也有很好支持,这里将Egg服务如何快速接入Pandora进行简要说明。
安装Pandora
npm i pandora -g // 安装在全局
npm i pandora --save // 安装在应用
首先全局需要安装,安装完成之后可以使用pandora
命令,如下:
$ pandora --help
pandora <command>
Commands:
pandora init <filePath> Init a Pandora.js project
pandora start [targetPath] Start an application
pandora stop [appName] Stop an application
pandora restart [appName] Restart a running application
pandora reload <appName> Reload an application
pandora log [appName] Show logs of an application
pandora pid <appName> Get the PID of a running application
pandora ps <appName> Get a tree composed of
pandora list List all applications
pandora dev [targetPath] Debug an application
pandora exit Stop all applications and exit the pandora daemon process
Options:
--help Show help [boolean]
-v, --version Show version number
创建Egg测试项目
$ npm i egg-init -g //如果没有安装过 egg-init 需要安装
$ egg-init pandora-demo --type=simple
安装 egg-pandora-script
npm i egg-pandora-script
熟悉egg的应该知道egg的启动是使用egg-script工具进行启动的,但是如果使用pandora就需要替换掉egg-script,所以egg-pandora-script是本人根据egg-script的逻辑翻写了一版。
创建procfile.js
procfile.js文件是pandora默认读取的启动配置文件,位于项目的根目录下,可以使用pandora init
命令直接创建,但是对于egg应用需要手动创建,然后将下面的代码copy进去:
const path = require('path');
const utility = require('utility');
const pkgPath = path.join(__dirname,'package.json');
const pkg = utility.readJSONSync(pkgPath);
const eggPandoraPath = path.join(__dirname,'node_modules/egg-pandora-script/index.js');
module.exports = (pandora) => {
pandora
.fork(pkg.name,eggPandoraPath)
}
可视化控制面板 -- Pandora-Dashboard
Pandora-Dashboard 是一个可视化的控制面板,可以通过这个面板查看所有通过pandora start
启动的应用,详见说明文档。
$ npm i pandora-dashboard -g # 全局安装,会全局注册一个命令 pandora-dashboard-dir
$ pandora start --name dashboard `pandora-dashboard-dir` # 使用该命令获得路径,用于启动
启动应用
切换命令行到项目根目录(也就是procfile所在目录),然后执行pandora start
启动应用,这里也可以将package.json
中原来的egg-script start
改成pandora start
然后用npm start
, 效果是一样的。
查看应用
我们可以用 pandora log <项目名>
来查看日志, 可以使用 pandora list
来查看所有启动的应用:
当然使用Pandora-Dashboard才是最直观的,下面截取部分图片:
这里只是快速的说明了egg应用如何的接入,还有很多的参数配置都没有仔细的研究,但是相信很多人跟我一样看待这样的面板就觉得棒极了,尤其是看到多进程的性能数据面板。