模块系统 Module System
由 PM2 运行的独立 Node.JS 应用程序
PM2 模块
PM2 模块是由 PM2 安装和管理的独立软件。 这些软件是从 NPM 存储库中提取的,并作为 NPM 上的通用 Javascript 库发布。
任何人都可以创建和发布模块 。 一个模块可以是一个 日志轮换模块 ,一个 独立的 http 代理 , 负载均衡器、基于 Node.js 的维基百科、DNS 服务器或任何类型的实用程序。 你的创造力是极限!
管理模块
管理模块很简单:
# 安装
pm2 install <module-name>
# 更新模块
pm2 install <module-name>
# 从 GitHub(用户名/存储库)安装模块
pm2 install pm2-hive/pm2-docker
# 强制模块重启
pm2 restart <module-name>
# 获取更多信息
pm2 describe <module-name>
# 从本地文件夹以开发模式安装模块
pm2 install .
# 生成模块样板
pm2 module:generate <module-name>
# 卸载模块
pm2 uninstall <module-name>
# 发布新模块(Inc Semver + Git push + NPM publish)
pm2 publish
创建模块
要生成模块示例:
pm2 module:generate <module-name>
现在让我们用 PM2 运行这个模块:
cd <module-name>
pm2 install .
您现在可以编辑源代码,当您更改某些内容时,PM2 将自动重启模块( watch 选项已激活 )。
显示模块日志:
$ pm2 logs <module-name>
要删除模块:
$ pm2 uninstall <module-name>
Package.json 的增强
可以将补充信息添加到 package.json 文件中。
您可以在 config
属性和模块行为下定义配置值,如常见的 pm2 托管进程 。
例子:
{
"name": "pm2-logrotate", // Used as the module name
"version": "1.0.0", // Used as the module version
"description": "my desc", // Used as the module comment
"dependencies": {
"pmx": "latest"
},
"config": { // Default configuration values
// These values can be overridden with `pm2 set <module-name>:<attr> <val>`
"days_interval" : 7, // These value is returned once you call pmx.initModule()
"max_size" : 5242880
},
"apps" : [{ // Module behavior options
"script" : "index.js",
"merge_logs" : true,
"max_memory_restart" : "200M"
}],
"author": "Gataca Sanders",
"license": "MIT"
}
模块入口点
在您的主模块入口点,调用 pmx.initModule(opts, fn(){});
来初始化您的模块:
var pmx = require('pmx');
var conf = pmx.initModule({
// Override PID to be monitored
pid : pmx.resolvePidPaths(['/var/run/redis.pid']),
}, function(err, conf) {
// Now the module is initialized
require('./business_logic.js')(conf);
});
额外显示
安装模块后,您可以更改其行为以显示包含所需内容的表格,而不是 PM2 列出您的进程。
要启用此行为,请编辑 package.json
并添加 env 部分并将 PM2_EXTRA_DISPLAY 设置为 true:
package.json
{
[...]
"apps" : [{
"script" : "index.js",
"env" : {
"PM2_EXTRA_DISPLAY" : "true"
}
}],
[...]
}
然后在你的代码中:
var pmx = require('pmx');
pmx.configureModule({
human_info : [
['Status' , 'Module ready'],
['Comment', 'This is a superb comment the user should see'],
['IP' , 'my machine ip!']
]
});
安装模块后,您将能够看到这种表格!
。
模块配置
在 package.json 中,您可以在属性 config
下声明模块中可访问的默认选项。 这些值可以被 PM2 或 Keymetrics
覆盖。
默认值
更新或发布模块非常简单。 pm2 publish
命令将增加模块的次要版本, git add . ; git commit -m “版本”; git push origin master
然后它将 npm publish
。
cd my-module
pm2 publish
Modules <3 Keymetrics
使用 Keymetrics ,您可以 创建自定义界面 使用 指标监控 和 远程操作 .
这会给你这样的结果:
Options with pmx.initModule
var pmx = require('pmx');
var conf = pmx.initModule({
[...]
// Customize look and feel of this module
widget : {
// Logo to be displayed on the top left block (must be https)
logo : 'https://image.url ',
theme : ['#9F1414', '#591313', 'white', 'white'],
// Toggle horizontal blocks above main widget
el : {
probes : false,
actions: false
},
block : {
// Display remote action block
actions : true,
// Display CPU / Memory
cpu : true,
mem : true,
// Issues count display
issues : true,
// Display meta block
meta : true,
// Display metadata about the probe (restart nb, interpreter...)
meta_block : true,
// Name of custom metrics to be displayed as a "major metrics"
main_probes : ['Processes']
},
},
}, function(err, conf) {
/**
* Main module entry
*/
console.log(conf);
// Do whatever you need
require('./business_logic.js')(conf);
});
Changing conf values
In the main Keymetrics dashboard, the modules will have a button called “Configure”. Once you click on it you will be able to access or/and modify all configuration variables exposed on the package.json!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论