Node.jsをPM25(pm2)でデーモン化する
foreverのモジュールでデーモン化する事ができたのですが
ログの調査をしているとPM2(P(rocess) M(anager))が簡単にローテーションできるという事をしった
またプロセス管理(CPUやメモリ)などを見れるのでパフォーマンステスト時にいいかと思いpm25に切り替えてみました
pm25という名前だったけど今はpm2になっている
テストアプリは前回と同様に
express-generatorで作成したexpressです
パスは/var/node/myapp/になります
- インストールと確認
- pm25(pm2)にテストアプリを登録する
- pm25(pm2)にテストアプリをストップと削除
- pm25(pm2)にテストアプリをリスタート
- pm25(pm2)に設定ファイルでテストアプリを登録する
- pm25(pm2)でログローテーション
- サーバー起動時に自動的にpm2を自動開始する
- pm2で監視
- 参考URL
インストールと確認
$ npm install pm2 -g $ which pm2 # /usr/bin/pm $ pm2 --version # Community Editionと表示されてアスキーロゴが表示された [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized 2.9.3
pm25(pm2)にテストアプリを登録する
$ pm2 start /var/node/myapp/bin/www [PM2] Starting /var/node/myapp/bin/www in fork_mode (1 instance) [PM2] Done. ┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤ │ www │ 0 │ fork │ 9671 │ online │ 0 │ 0s │ 1% │ 10.3 MB │ root │ disabled │ └──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app
CPUやメモリが表示されていていい感じ~♪
$ pm2 starlist
で上記の表が表示される
pm25(pm2)にテストアプリをストップと削除
$ pm2 stop /var/node/myapp/bin/www
statusがstoppedになっている事が確認できた
リストから消す場合はdeleteでおこなう
$ pm2 delete /var/node/myapp/bin/www
pm25(pm2)にテストアプリをリスタート
$ pm2 restart /var/node/myapp/bin/www
foreverと同じでした
pm25(pm2)に設定ファイルでテストアプリを登録する
$ vi /var/node/myapp/pm25config.json { "apps" : [{ "name" : "myapp", "script" : "./bin/www", "cwd" : "/var/node/myapp/", "watch" : true, "env": { "NODE_ENV": "development" }, "env_production" : { "NODE_ENV": "production" } }] }
設定内容の詳細は以下を参考にした
http://pm2.keymetrics.io/docs/usage/application-declaration/
YAML形式もいけるみたいだけど
「できるだけJSON形式を使用してください」
と記載されているのJSONでいったほうがいいみたい
pm25(pm2)でログローテーション
pm2 install pm2-logrotate
デフォルトでは最大サイズ10MB、一日単位でログが分けられますが
10Mとかすぐに行きそうなので200MBにしたいと思います
pm2 set pm2-logrotate:max_size 200M
rootでローテーションを実行しているので
/root/.pm2/logsに保存される
詳細は/etc/logrotate.d/pm2-userをみればわかるみたい
qiita.com
日付がたたないとわからないので後で確認する
サーバー起動時に自動的にpm2を自動開始する
pm2 startup [platform] #centos6の場合:pm25 startup centos6 #centos7の場合:pm25 startup centos pm2 save
デフォルトがcentos7になっているみたい・・・
centos6のユーザーは注意が必要
pm2で監視
pm2 monit
を実行すると
Now registering to Keymetrics
Username:
Email:
Password:
上記の内容を入力しないといけなかった
調べてみるとkeymetricsというサイトの登録が必要だった
https://keymetrics.io/pricing/
↓
https://app.keymetrics.io/api/oauth/register
今回は無料プランでいきます
台数が多くなった場合はプロのプランにするしかないみたい
はてなのMackerelみたいな感じだね
ユーザー登録が完了すると以下のようなページが表示されます
そのコマンドをコピーしてサーバーで実行すると監視サーバーと実行サーバー(クライアント)が接続されます
pm25 link XXXXXX YYYYYY
完了するとURLが表示されているのでそちらに遷移すると
[Monitoring Enabled] Dashboard access: https://app.keymetrics.io/#/r/xxxxxxxxxx
監視の画面が表示された
これで監視ができるのねぇ~便利だね
メールの通知ができるみたいだけど・・・どうやって登録するのかわからん・・・・
もしわかったら通知用のメールアドレスに登録したいできないなら
メーリングリストで登録する形で逃げる
サーバー全体の監視もできるみたい・・・
pm25 install pm2-server-monit