CentOSで前月の再起動回数を自動で数える…ためのログの準備

月次の保守報告書で、再起動回数を報告することにしているのですが、これを出来るだけ自動化したいと思います。
環境はCentOS 6系です。

last reboot

で最近の再起動の状況は見ることが出来るのですが、

reboot   system boot  2.6.32 Thu Jan  7 08:33 - 21:50 (50+13:17)
reboot   system boot  2.6.32 Thu Jan  7 08:12 - 08:32  (00:20)

こんな感じで、年の出力がないので、稼働が長くなってきて、1年以上経つと「前月」という指定が出来なくなってしまいます。
そこでもう一つのmessagesの中のshutdownを見つける、という方法を採用します。

まず、messagesがどのように保存されているか確認します。ログが適切に保存されていなくては、得たい情報が得られないということになりかねません。

/etc/logrotate.d/syslog

を見ると、

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

となっており、ローテーションの指定自体はありませんので、デフォルトである、

/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.

本当はmonthlyとして月次にするとすっきりだし、messages.1だけ分析すればいいので、そうしたいところではありますが、messagesは大きなログファイルなのでmonthlyにして他のログが扱いにくくなるのも避けたいところです。ですので、weeklyのままにしておこうと思います。
すると、月次報告の対象をどうするか悩みどころです。実際にはほとんど再起動は発生しませんので、直近5週分を前月として扱うことにし、messages.5に再起動がカウントされたときには、内容を見て判断する方針にしました。

もう一つ、ローテーションの数が4なのは困ります。上の方針とも合いませんので、5以上を設定することにします。
設定を追記するのは、

/etc/logrotate.d/syslog

こっちの方です。デフォルト設定を変更すると、それを前提に設定しているlogrotate.d以下の各設定ファイルにも調整が必要になってくる可能性があります。ご注意ください。

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    rotate 5
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

「rotate 5」を追記しています。

これで、

/var/log/messages
/var/log/messages.1
/var/log/messages.2
/var/log/messages.3
/var/log/messages.4
/var/log/messages.5

と週次のログファイルが作成されるはずです。
記事がながくなってきたので、今回はここまでです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です