pm2和pm2-logrotate 日志管理 初探
ADVANCED, PRODUCTION PROCESS MANAGER FOR NODE.JS高级,Node.js生产环境进程守护程序。
0x1 安装
npm install pm2@latest -g
0x2 基本命令
$ pm2 start app.js -i 4 # 后台运行pm2,启动4个app.js
# 也可以把'max' 参数传递给 start
# 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js -i max # 根据有效CPU数目启动最大进程数目
$ pm2 start app.js --name my-api # 命名进程
$ pm2 list # 显示所有进程状态
$ pm2 monit # 监视所有进程
$ pm2 logs # 显示所有进程日志
$ pm2 stop all # 停止所有进程
$ pm2 restart all # 重启所有进程
$ pm2 reload all # 0 秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0 # 停止指定的进程
$ pm2 restart 0 # 重启指定的进程
$ pm2 startup # 产生 init 脚本 保持进程活着
$ pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0 # 杀死指定的进程
$ pm2 delete all # 杀死全部进程
$ pm2 info app # 参看name为app的信息
日志管理
安装pm2-logrotate
pm2的日志模块默认是每一个服务进程都分配两个默认的日志文件这两个日志文件存放于
/root/.pm2/logs
中,如果pm2管理5个服务,那么该文件夹下总共有10个日志文件,并且随着时间不断增加,很容易就会产生很多个上g的日志文件,导致了服务器的磁盘空间不足的问题
pm2 install pm2-logrotate
配置
-
max_size
(Defaults to10M
): When a file size becomes higher than this value it will rotate it (its possible that the worker check the file after it actually pass the limit) . You can specify the unit at then end:10G
,10M
,10K
- 配置项默认是 10MB,并不意味着切割出来的日志文件大小一定就是 10MB,而是检查时发现日志文件大小达到 max_size,则触发日志切割。
-
retain
(Defaults to30
file logs): This number is the number of rotated logs that are keep at any one time, it means that if you have retain = 7 you will have at most 7 rotated logs and your current one.- 这个数字是在任何一个时间保留已分割的日志的数量,这意味着如果您保留7个,那么您将最多有7个已分割日志和您当前的一个
-
compress
(Defaults tofalse
): Enable compression via gzip for all rotated logs- 对所有已分割的日志启用 gzip 压缩
-
dateFormat
(Defaults toYYYY-MM-DD_HH-mm-ss
) : Format of the data used the name the file of log- 文件名格式化的规则
-
rotateModule
(Defaults totrue
) : Rotate the log of pm2's module like other apps- 像其他应用程序一样分割 pm2模块的日志
-
workerInterval
(Defaults to30
in secs) : You can control at which interval the worker is checking the log's size (minimum is1
)- 您可以控制工作线程检查日志大小的间隔(最小值为
1
)单位为秒(控制模块检查log日志大小的循环时间,默认30s检查一次)
- 您可以控制工作线程检查日志大小的间隔(最小值为
-
rotateInterval
(Defaults to0 0 * * *
everyday at midnight): This cron is used to a force rotate when executed. We are using node-schedule to schedule cron, so all valid cron for node-schedule is valid cron for this option. Cron style :- 多久备份一次
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
-
TZ
(Defaults to system time): This is the standard tz database timezone used to offset the log file saved. For instance, a value ofEtc/GMT+1
, with an hourly log, will save a file at hour14
GMT with hour13
(GMT+1) in the log name.- 时区(默认为系统时区)
如何设置 ?
安装完模块后,您必须键入: pm2 set pm2-logrotate:<param> <value>
例如:
-
pm2 set pm2-logrotate:max_size 1K
(1KB) -
pm2 set pm2-logrotate:compress true
(compress logs when rotated) -
pm2 set pm2-logrotate:rotateInterval '*/1 * * * *'
(force rotate every minute)
我的设置
$ pm2 set pm2-logrotate:max_size 10M
$ pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss # 文件名时间格式
$ pm2 set pm2-logrotate:workerInterval 3600
$ pm2 set pm2-logrotate:rotateInterval 0 0 * * *
$ pm2 set pm2-logrotate:TZ Asia/Shanghai # 中国时区
参考:https://www.jianshu.com/p/54bc346d2406 作者:kelvv
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。