gluster 3.4.5 logrotate默认配置如下:
[root@lab25 logrotate.d]# cat glusterd
/var/log/glusterfs/*glusterd.vol.log {
missingok
postrotate
/bin/kill -HUP `cat /var/run/glusterd.pid 2>/dev/null` 2>/dev/null || true
endscript
}
[root@lab25 logrotate.d]# cat glusterfsd
/var/log/glusterfs/*glusterfsd.log /var/log/glusterfs/bricks/*.log {
missingok
postrotate
/bin/kill -HUP `cat /var/run/glusterfsd.pid 2>/dev/null` 2>/dev/null || true
endscript
}
[root@lab25 logrotate.d]# cat glusterfs-fuse
/var/log/glusterfs/glusterfs.log {
missingok
postrotate
/usr/bin/killall -HUP gluster 2>/dev/null || true
endscript
}
说明:
1、正常情况下,glusterfs-fuse配置文件操作的glusterfs.log不存在,没用影响,不予管理,可删除。
2、glusterd和glusterfsd配置文件不会对客户端日志文件进行切割(显然没用匹配),会保留全部日志信息。
默认配置存在的问题,以CentOS 6.5默认配置进行说明:
1、默认情况下,logrotate.conf每周执行一次,保留4个副本,最多纪录5周的日志,太少。(weekly、rotate 4)
2、gluster对应配置无notifempty选项,若最近4周一直没用日志输出,则5个日志文件全部为空,丢日志信息。
3、日志为压缩,可以考虑新增compress选项。
为解决上述问题,修改后的配置文件如下:
[root@lab25 logrotate.d]# cat glusterd
/var/log/glusterfs/*glusterd.vol.log {
rotate 4
dateext
size 20MB
notifempty
sharedscripts
missingok
postrotate
/bin/kill -HUP `cat /var/run/glusterd.pid 2>/dev/null` 2>/dev/null || true
endscript
}
[root@lab25 logrotate.d]# cat glusterfsd
/var/log/glusterfs/*glustershd.log /var/log/glusterfs/bricks/*.log {
rotate 4
dateext
size 20MB
notifempty
sharedscripts
missingok
postrotate
/bin/kill -HUP `cat /var/run/glusterfsd.pid 2>/dev/null` 2>/dev/null || true
endscript
}
[root@lab25 logrotate.d]# cat glusterfs-fuse
/var/log/glusterfs/glusterfs.log {
rotate 4
dateext
size 20MB
notifempty
sharedscripts
missingok
postrotate
/usr/bin/killall -HUP gluster 2>/dev/null || true
endscript
}
修改说明:
默认情况下,gluster 3.4.5官方给出的日志切割策略是:每周执行一次,保留52个副本。
这样配置存在的缺点有:
1、备份日志文件太多,不便于查看。
2、备份的总日志所占空间不可控,在特殊情况下很有可能出现空间不足问题。
解决方案:
更改切割策略:
1)每周执行一次改为日志文件大小超过20MB再执行。
2)副本数保留4个,单个日志文件+备份不超过100MB。
3)*glusterfsd.log文件不存在,修改为*glustershd.log。
3)若想解压空间,可启用日志压缩功能,添加如下参数即可:
compress
delaycompress
4)若想切割gluster客户端日志,可修改glusterfs-fuse文件,将glusterfs.log改为目标log名称即可。
备注:
若设置通过时间进行日志切割,请添加notifempty参数,该参数会在日志文件为空的情况下,不做任何操作。