AWS Opsworks:logrotate 它会自动运行吗?

Posted

技术标签:

【中文标题】AWS Opsworks:logrotate 它会自动运行吗?【英文标题】:AWS Opsworks: logrotate it runs automatically? 【发布时间】:2016-05-11 21:52:21 【问题描述】:

我已经配置了我自己的 logrotate(应用程序日志)和编辑(nginx 日志),所有这些都在食谱(厨师)中创建。我的问题是:logrotate 它会自动运行吗?

我问是因为我有日志大小不能超过 5MB 的配置,并且日志大小为 100MB。

显示 root 的 crontab:

crontab -l
no crontab for root

/etc/logrotate.conf

weekly
su root syslog
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp 
    missingok
    monthly
    create 0664 root utmp
    rotate 1


/var/log/btmp 
    missingok
    monthly
    create 0660 root utmp
    rotate 1

【问题讨论】:

【参考方案1】:

通常,logrotate 作为每日 cron 作业运行。您可以将size 5Mdaily 添加到您感兴趣的日志的logrotate 配置中。

在每日 logrotate 运行之间,日志有可能增长到超过 5M。这可以通过降低大小值和/或更频繁地运行 logrotate 来调整。

查看man logrotate了解更多详情。

【讨论】:

【参考方案2】:

如果您想在文件大小达到 5Mb 后立即旋转文件,只需将可执行文件放入 /etc/cron.hourly/ 文件夹中:

#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.d/nginx

如果这还不够,您可以像这样进行 crontab 作业:

*/30 * * * * root logrotate /etc/logrotate.d/nginx (每 30 分钟轮换一次)

【讨论】:

【参考方案3】:

首先你在错误的地方搜索。 Logrotate 是 cron 日常工作的一部分。

cron作业在以下目录"/etc/cron.daily/logrotate"

可以运行以下命令强制运行logrotate

sudo logrotate -v -f /etc/logrotate.conf

如果您希望日志在达到 5mb 后进行轮换,您应该在脚本中添加 size 值。

你应该有这样的东西:

/var/log/mylogs 
......
missingok
size=5M
create 0664 root utmp
rotate 3

这里是link to more details,介绍如何轻松设置 logrotate。

【讨论】:

以上是关于AWS Opsworks:logrotate 它会自动运行吗?的主要内容,如果未能解决你的问题,请参考以下文章

AWS+OpsWorks:如何使用 OpsWorks 启用 EC2 实例的详细监控

AWS OpsWorks - 无法使用 AWS OpsWorks 部署我的应用程序,尤其是无法成功迁移

Cloudformation + OpsWorks

数据包“aws_opsworks_instance”不可用

是否可以在 AWS::OpsWorks::Instance 资源中使用 AWS::CloudFormation::Init 和元数据?

如何在 AWS Lambda 中运行 AWS SDK Opsworks 命令?