[Gluster-users] How do I rotate **all** the Gluster logs?

Greg Scott GregScott at infrasupport.com
Fri Jul 19 18:43:07 UTC 2013


Thanks Vijay - 

> The appropriate mechanism to do log rotation would be to use logrotate command with the 
> config file available at /etc/logrotate.d/glusterfs. This mechanism rotates log files of all glusterfs processes.
> The log rotate <volname> command will be deprecated in a  future release.

I wonder how to do this?  If I am following this correctly - there are a bunch of layers to make this happen:

First, a facility named anacron runs periodically to handle things such as log file maintenance.  Looking at a file named /etc/anacrontab that drives the whole thing:

[root at chicago-fw1 etc]# more /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
[root at chicago-fw1 etc]#

So cron.daily probably schedules things to run every day, probably at 5 minutes past midnight.   Cron.weekly and cron.monthly are empty.   Looking at /etc/cron.daily:

[root at chicago-fw1 etc]# ls /etc/cron.daily
00webalizer  certwatch  logrotate  man-db.cron  mlocate  prelink
[root at chicago-fw1 etc]#

And the script we care about must be logrotate.  Looking at that:

[root at chicago-fw1 etc]# more /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
[root at chicago-fw1 etc]#

A file named /etc/logrotate.conf drives it.  Looking at that file:

[root at chicago-fw1 etc]# more /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.
[root at chicago-fw1 etc]#

The logrotate .conf file has an include for everything in /etc/logrotate.d, so what's in there?

[root at chicago-fw1 etc]# ls /etc/logrotate.d
chrony      glusterd        httpd        libvirtd       libvirtd.uml  samba  syslog          yum
cups        glusterfsd      iptraf-ng    libvirtd.lxc   ppp           squid  vsftpd
dracut_log  glusterfs-fuse  iscsiuiolog  libvirtd.qemu  psacct        sssd   wpa_supplicant
[root at chicago-fw1 etc]#

And the piece that rotates the Gluster logs:

[root at chicago-fw1 etc]# more /etc/logrotate.d/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 at chicago-fw1 etc]#

So the task seems to be editing this file by hand to include the log file for my Gluster volume.  Or better, what about just making a file named <volume> to rotate the log file associated with <volume> named /var/log/glusterfs/<volume>.

My volume name is firewall-scripts.  Here is a first shot at it.  Create a file named /etc/logrotate.d/firewall-scripts that looks like this:

[root at chicago-fw1 logrotate.d]# more /etc/logrotate.d/firewall-scripts
/var/log/glusterfs/firewall-scripts.log

There is no way it will be this simple.    It's **never** this simple.  

And it's not.

[root at chicago-fw1 logrotate.d]# /usr/sbin/logrotate /etc/logrotate.conf
error: firewall-scripts:1 missing '{' after log files definition
error: found error in file firewall-scripts, skipping
[root at chicago-fw1 logrotate.d]#

It looks like you need a section that restarts the process associated with that log file at the end.  Here is where I get a little bit shakey - what process should I  be looking for?  Or should I just edit /etc/logrotate.d/glusterd?

Here I go again stumbling blindly down Trial and Error Avenue.  I could really use some guidance here.  

- Greg



More information about the Gluster-users mailing list