内容目录
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