pm2的APP日志管理插件:pm2-logrotate
背景
最近我所在项目的进程管理工具从supervisor切换到pm2了,原因之一是因为长期二者兼容导致维护成本过大。后来经过和研发同学沟通,最终选择统一成pm2,因为pm2在windows下也可以对进程进行管理,方便他们在windows本地开发环境起服务调试。
supervisor的进程配置文件中自带了日志切分策略;而pm2本身是没有日志管理功能的。如果某服务的运行时间过长,日志会不断堆积,最终会造成机器的磁盘空间耗尽。
我调研了一下pm2的日志管理,发现有个pm2-logrotate的插件,专门对pm2的app日志进行管理。
安装
1.安装插件pm2-logrotate
执行:pm2 install pm2-logrotate
2.验证是否安装成功,执行:pm2 list
看到如图的pm2-logrotate进程则表明安装成功
配置日志清理策略
1) 查看pm2-logrotate默认配置
pm2 conf pm2-logrotate
如图,我们看到了pm2-logrotate已经默认了相关配置的值
2)pm2-logrotate配置项含义
配置项
|
简介
|
备注
|
compress
|
是否通过gzip压缩日志,默认false
|
这里如果要收集服务的日志,不建议设置压缩,压缩后为tar.gz格式,无法被telegraf等日志收集组件识别
|
max_size
|
单个日志文件的大小,默认1k
|
一般设置成100M,原因是在通过日志查问题的时候,100MB的日志里面一般包含了足够多的上下文,设置的太小的话,需要跨日志查问题;设置的过大,打开文件会比较慢,而且程序打印日志的性能也会差一些。
|
retain
|
保留的日志文件个数,默认为5
|
retain*max_size标示了一个pm2管理的进程的日志总大小,可以根据这个推算下机器需要多大的磁盘空间,建议设置为10,也就是每个服务最多留1G总大小的日志文件。
|
dateFormat
|
日志文件名后缀追加的日期格式,默认是YYYY-MM-DD_HH-mm-ss,如果服务为XXX,则日志为XXX_YYYY-MM-DD_HH-mm-ss.log这样
|
默认就好
|
rotateModule
|
把pm2本身的日志也进行分割
|
默认就好
|
workerInterval
|
日志监控程序的进程数,默认为1
|
默认就好,影响日志大小的切分精度,没必要设置过大
|
rotateInterval
|
设置强制分割,默认值是0 0 * * *
|
即默认凌晨会进行一次日志分隔
|
3)修改pm2-logrotate配置
pm2 set pm2-logrotate:max_size 100M pm2 set pm2-logrotate:retain 10
如图,我们看到已经设置成功。
设置pm2开机自启动
#配置pm2服务开机启动。
pm2 startup
#保存当前pm2 list中各应用服务状态
pm2 save
博主:测试生财(一个不为996而996的测开码农)
座右铭:专注测试开发与自动化运维,努力读书思考写作,为内卷的人生奠定财务自由。
内容范畴:技术提升,职场杂谈,事业发展,阅读写作,投资理财,健康人生。
csdn:https://blog.csdn.net/ccgshigao
博客园:https://www.cnblogs.com/qa-freeroad/
51cto:https://blog.51cto.com/14900374
微信公众号:测试生财(定期分享独家内容和资源)