Linux系统日志/var/log配置绕接

更新时间: 2022-07-05 11:14:24

问题现象

发现节点的/var目录占用空间较多,导致K8s不可用或者节点卡顿

修复方案

我们在Trident>1.12.0版本,会自动配置/var/log目录的日志绕接管理,此方案适用于小于1.12的Trident

先清理/var/log/目录下的系统日志文件,注意,这些文件客户可能需要使用,请根据实际情况确定哪些可以清理:

# 系统启动的相关日志
rm -rf /var/log/boot.log-*
rm -rf /var/log/btmp-*
# 邮件服务的日志
rm -rf /var/log/maillog-*
# crond计划任务的日志
rm -rf /var/log/cron-*
# 绝大多数的系统日志都记录到该文件
rm -rf /var/log/messages-*
# 所有跟安全和认证授权等日志都会记录到此文件
rm -rf /var/log/secure-*
rm -rf /var/log/spooler-*

echo "start to clean journalctl log..."

# 只保留近一周的日志
journalctl --vacuum-time=1w

# 只保留1000MB的日志
journalctl --vacuum-size=1000M

然后,在每个节点配置下日志自动绕接,执行:

cat > /etc/logrotate.d/allvarlogs <<EOF
/var/log/*.log
/var/log/messages {
    copytruncate
    missingok
    notifempty
    compress
    hourly
    maxsize 100M
    rotate 5
    dateext
    dateformat -%Y%m%d-%s
    create 0644 root root
}
EOF

cat > /etc/cron.hourly/logrotate <<EOF
#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
EOF

以上配置达到的效果是:/var/log/目录下的以.log为后缀的文件,以及/var/log/message文件,每小时检查一次,如果超过100MB,则会被截断,生成一个备份文件并压缩,最多保留5个这样的备份文件。也就是说,每个.log文件、message文件,算上压缩比,不会超过200MB,总共不会超过2GB。

阿里云首页 云原生应用交付平台 相关技术圈