Jax*_*Jax 10 logging pm2 pm2-logrotate nodejs-server
我们使用节点模块 pm2 来运行服务器并捕获应用程序日志。
但由于流量非常巨大,大量数据被存储在单个文件中,大约超过 100Gb。
我们是否有可能在不重新启动服务器的情况下每 1 小时或每 1Gb 文件更改一次文件?
目前我们正在手动执行此操作,重新启动服务器并重命名造成问题的现有文件。
Jas*_*son 26
我个人不使用 pm2-logrotate,因为它不再维护,更糟糕的是,它有很多 bug。有一次,我在生产服务器上使用它,它立即重复创建大型日志文件,导致空间为 0%,并使服务器崩溃。那日子不太好过。
PM2 网站有一个名为“设置本机 logrotate”的部分,其中它告诉您运行:
sudo pm2 logrotate -u user
显然将用户更改为运行 pm2 的实际用户。它将在 /etc/logrotate.d/pm2-user 中创建一个文件并对其进行编辑,使其如下所示:
/home/user/.pm2/pm2.log /home/user/.pm2/logs/*.log {
su user user
rotate 12
weekly
missingok
notifempty
compress
delaycompress
copytruncate
create 0640 user user
}
Run Code Online (Sandbox Code Playgroud)
最重要的部分是su user user部分。Logrotate 以 root 身份运行,并且它不喜欢创建非 root 用户可以查看的日志文件,因此它会失败,而且通常会默默失败。这违背了 npm 的理念,npm 更喜欢在没有 sudo 权限的情况下运行事物。通过在 logrotate 配置文件中指定用户,您可以解决此问题。
我花了一段时间才弄清楚这一点 - 希望它对某人有所帮助。
小智 10
您可以使用pm2-logrotate
pm2 install pm2-logrotate
# max log size is 1GB
pm2 set pm2-logrotate:max_size 1G
# compress logs when rotated (optional)
pm2 set pm2-logrotate:compress true
# force rotate every hours
pm2 set pm2-logrotate:rotateInterval '0 * * * *'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13652 次 |
| 最近记录: |