心地よいライフハック

これ便利だな〜と思ったことなど

pm2 の ログ が 心配 ( logrotate を使う )

nodejs を pm2 でサービス・デーモン化した際に、 ログの肥大化が心配。
 
そんな時は、pm2-logrotate が手っ取り早い と思った。
 
自分なりに簡易的な検証はできたので、しばらく使って行くべく、ここに示す。
 
 
 
 

 
 
< 前提条件 >  検証してみていい感じだった環境
CentOS Linux release 7.5.1804 (Core)
• nodejs v8.12.0
• pm2 3.2.1 
• root権限 で pm2 、 nodejs を 起動して問題ない環境 ( Firewall と HAproxy をフロントに立たせて ACL させるなど )
 
 

 
 
< ひとこと結論 >
 
・ pm2 ログの肥大化が怖いなら、この2つを設定すべし。
    pm2-logrotate の 最大ログサイズ と、retain 数( ローテーションさせるログファイル数 ) である。
 
 

 
 
< 導入 >    pm2-logrotate ツールをインストール
 
○ 一応 pm2 の 全てのデーモン・ サービス を停止  しておく。
# pm2 stop all
 
○ インストール
# pm2 install pm2-logrotate
 
○ 起動する。例 root ユーザーで起動する場合。
 
# pm2 logrotate -u root
 
○ 1つのログの最大サイズを決める。
例: 10KB 
# pm2 set pm2-logrotate:max_size 10K
 
○ logの容量が 気になる人は、retain の設定もする。
 
# pm2 set pm2-logrotate:retain 7
 
こうすると 10K のlog 7つ でグルグル回すようになる。
総容量は、10K x 7 となる。
 
ローテートすると 古いログは消される。
 
( / 起動ユーザー /.pm2/logs/pm2-logrotate-out.log )
 
-> retain の数と 最大ログサイズ(単体)を 正確に指定できていれば、
   容量オーバーとなる心配がない。
 
目的のサービスを起動する。
(例)
# pm2 start node-red
 
そうすると、 ここに設定ファイルができて、
/etc/logrotate.d/pm2-(ユーザー名)
 
ここで  ログがローテーション管理されている ファイル パスも記載されている。
 
/ 起動ユーザーのホームディレクトリ /.pm2/logs/*.log
 
 

 
 
○ pm2 dashboard コマンドで、2つのサービスが起動していることを確認
 
< Node-RED のデーモン化と、ログローテーション >
 
 
 

 
 補足 :
・" 起動ユーザー " とは、pm2 を 起動させたユーザー
 
修正 : 2018/10/8
・前提条件の一部修正