PM2モジュール
PM2モジュールとは、PM2によってインストールおよび管理されるスタンドアロンのソフトウェアです。これらのソフトウェアはNPMリポジトリからプルされ、NPM上の一般的なJavascriptライブラリとして公開されます。
誰でもモジュールを作成して公開できます。モジュールは、ログローテーションモジュール、スタンドアロンのHTTPプロキシ、ロードバランサー、Node.jsベースのWikipedia、DNSサーバー、またはあらゆる種類のユーティリティにできます。あなたの創造性が限界です!
モジュールの管理
モジュールの管理は簡単です。
# Install
pm2 install <module-name>
# Update a module
pm2 install <module-name>
# Install a module from GitHub (username/repository)
pm2 install pm2-hive/pm2-docker
# Force module restart
pm2 restart <module-name>
# Get more information
pm2 describe <module-name>
# Install a module in dev mode from local folder
pm2 install .
# Generate a module boilerplate
pm2 module:generate <module-name>
# Uninstall module
pm2 uninstall <module-name>
# Publish new module (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を編集し、PM2_EXTRA_DISPLAYをtrueに設定したenvセクションを追加します。
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によって上書きできます。
デフォルト値
package.jsonの「config」属性の下にデフォルトの設定値を追加します
{
[...]
"config": { // Default configuration value
"days_interval" : 7, // -> returned from var ret = pmx.initModule()
"max_size" : 5242880 // -> e.g. ret.max_size
}
[...]
}
これらの値は、pmx.initModule()によって返されるデータを介してアクセス可能になります。
例
var conf = pmx.initModule({[...]}, function(err, conf) {
// Now we can read these values
console.log(conf.days_interval);
});
値の変更
モジュールのデフォルト値の変更は簡単です。次のように実行するだけです。
pm2 set module_name:option_name <new_value>
例
pm2 set server-monitoring:days_interval 2
- 注1:これらの変数は、
〜/.pm2/module_conf.json
に書き込まれます。手動で編集することもできます。 - 注2:
pm2 conf [module-name]
を介して設定変数を表示できます - 注3:新しい値を設定すると、ターゲットモジュールが自動的に再起動されます
- 注4:型変換は自動です(Boolean、Number、String)
モジュールの公開
モジュールの更新または公開は簡単です。pm2 publish
コマンドは、モジュールのマイナーバージョンをインクリメントし、git add . ; git commit -m "VERSION"; git push origin master
を実行し、次にnpm publish
を実行します。
cd my-module
pm2 publish
モジュール <3 Keymetrics
Keymetricsを使用すると、カスタマイズされたインターフェースをメトリクス監視とリモートアクションで作成できます。
これにより、このような結果が得られます
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);
});
conf値の変更
メインのKeymetricsダッシュボードでは、モジュールに「構成」というボタンが表示されます。これをクリックすると、package.jsonに公開されているすべての構成変数にアクセスまたは変更できます!
モジュールを共有しませんか?
モジュールを作成した場合は、メールでお知らせください。モジュールを宣伝し、Keymetricsに追加します:https://keymetrics.io/contact/
楽しんでください!
このページに貢献する