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

微信公众号:测试生财(定期分享独家内容和资源)

posted @ 2020-11-17 08:15  公众号-测试生财  阅读(502)  评论(0编辑  收藏  举报