Linux系统日志/var/log配置绕接
问题现象
发现节点的/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。