1、logrotate是个可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件的工具, 是基于cron 运行的,所以这个时间是由 cron 控制的,具体可以查询 cron 的配置文件/etc/crontab 。旧版CentOS 的cron 的配置文件是 /etc/crontab ,新版CentOS 改为 /etc/anacrontab
2、logrotate 命令格式如下:
logrotate [OPTION...] <configfile>
-d, --debug :debug 模式,测试配置文件是否有错误。
-f, --force :强制转储文件。
-m, --mail=command :压缩日志后,发送日志到指定邮箱。
-s, --state=statefile :使用指定的状态文件。
-v, --verbose :显示转储过程。
配置完文件后logrotate 不会真正执行,需要强制执行一次,以后就会按定时计划执行、配置生效。
示例:
logrotate -f /var/tmp/logtest/myTest_rotate
3、kubernetes 平台开启日志打印:
master
a、kube-apiserver 服务启动配置路径:/etc/systemd/system/kube-apiserver.service
b、kube-controller-manage 服务启动配置路径:/etc/systemd/system/kube-controller-manager.service
c、kube-scheduler 服务启动配置路径:/etc/systemd/system/kube-scheduler.service
d、etcd-server 服务启动配置路径:/etc/systemd/system/etcd.service
node
a、kube-proxy 服务启动配置路径:/etc/systemd/system/kube-proxy.service
b、kubelet 服务启动配置路径:/etc/systemd/system/kubelet.service
c、docker 服务启动配置路径:/etc/systemd/system/docker.service
服务配置添加:
--logtostderr=true \
--v=2
#日志级别定义:
#--v=0 Generally useful for this to ALWAYS be visible to an operator.
#--v=1 A reasonable default log level if you don’t want verbosity.
#--v=2 Useful steady state information about the service and important log messages that may correlate to significant changes in the system. This is the recommended default log level for most systems.
#--v=3 Extended information about changes.
#--v=4 Debug level verbosity.
#--v=6 Display requested resources.
#--v=7 Display HTTP request headers.
#--v=8 Display HTTP request contents
4、logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。日志文件的轮循设置在独立的配置文件中,放在/etc/logrotate.d/目录下
文件配置案例:/etc/logrotate.conf(配置归档之前,请在rsyslog.conf中配置日志分类,详细配置,请看上期博客全局配置):
weekly # 默认每周执行一次日志轮询
rotate 4 # 默认保留4个日志文件
create # 自动创建新的日志文件,新的文件和原来的文件具有相同的权限
dateext # 日志切割后,文件以当前日志为结尾,例如:messages-20181125
#compress # 指定不压缩转储文件,如果需要压缩,去掉注释就可以了。
include /etc/logrotate.d # 将/etc/logrotate.d目录中的配置文件加载进来
/var/log/message {
daily # 日志轮询周期,weekly,monthly,yearly
size 1024M # 超过1024M时分割,单位K,M,G,优先级高于daily
rotate 30 # 保存30天数据,超过的则删除
copytruncate #用于还在打开中的日志文件,把当前日志备份并截断
missingok #如果日志丢失,不报错
notifempty # 日志为空时不进行切换,默认为ifempty
compress # 切割后压缩,也可以为nocompress
dateext # 日志文件切割时添加日期后缀
dateformat _%Y%m%d%s
postrotate
/usr/bin/kill all -HUP rsyslogd
endscript #在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
}
/var/log/kubernetes/kubelet.log {
rotate 3
copytruncate
missingok
notifempty
compress
size 1024M
create 0640 zhongcongling zhongcongling
dateext
dateformat _%Y%m%d%s
postrotate
/usr/bin/kill all -HUP rsyslogd
endscript
}
/var/log/kubernetes/kube-proxy.log {
rotate 3
copytruncate
missingok
notifempty
compress
size 1024M
create 0640 zhongcongling zhongcongling
dateext
dateformat _%Y%m%d%s
postrotate
/usr/bin/kill all -HUP rsyslogd
endscript
}
/var/log/kubernetes/etcd.log {
rotate 3
copytruncate
missingok
notifempty
compress
size 1024M
create 0640 zhongcongling zhongcongling
dateext
dateformat _%Y%m%d%s
postrotate
/usr/bin/kill all -HUP rsyslogd
endscript
}
/var/log/kubernetes/kube-apiserver.log {
rotate 3
copytruncate
missingok
notifempty
compress
size 1024M
create 0640 zhongcongling zhongcongling
dateext
dateformat _%Y%m%d%s
postrotate
/usr/bin/kill all -HUP rsyslogd
endscript
}
/var/log/kubernetes/kube-scheduler.log {
rotate 3
copytruncate
missingok
notifempty
compress
size 1024M
create 0640 zhongcongling zhongcongling
dateext
dateformat _%Y%m%d%s
postrotate
/usr/bin/kill all -HUP rsyslogd
endscript
}
/var/log/kubernetes/kube-controller-manager.log {
rotate 3
copytruncate
missingok
notifempty
compress
size 1024M
create 0640 zhongcongling zhongcongling
dateext
dateformat _%Y%m%d%s
postrotate
/usr/bin/kill all -HUP rsyslogd
endscript
}