技術者になりたい何か

技術者になりたい何かの覚書的な何かです

rsyslogのローテートを設定する

やること

rsyslogでローテート設定

状況

t-min.hatenablog.com

上記のときに設定したDHCPサーバのログがローテートされてない。ので一つのファイルにひたすらログ出力されていた。

使ってるのはisc-dhcp-server。
dhcpd.confでファシリティを7に設定→rsyslog.confでファシリティ7のログを/var/log/dhcp.logとして出力するように設定。

/etc/dhcp/dhcpd.confの該当箇所

authoritative;
log-facility local7;

/etc/rsyslog.confの該当箇所

※syslogに出力しない

*.*;auth,authpriv.none;local7.none		-/var/log/syslog

※messagesに出力しない

*.=info;*.=notice;*.=warn;\
	auth,authpriv.none;\
	cron,daemon.none;\
	mail,news.none;local7.none	-/var/log/messages

※/var/log/dhcp.logに出力

# isc-dhcp-server
local7.* /var/log/dhcpd.log

ある日なんとなく/var/logを眺めていると

dhcpd.logが一つしかないです。他のは番号付きでローテートされてるのに。
やな予感がして行数。

$ cat /var/log/dhcpd.log | wc -l
2862889

ちょっと!!

というわけでローテートの設定します。
rsyslogのローテート設定は/etc/logrotate.conf と /etc/logrotate.d/rsyslog。
デフォルトで勝手に専用ファイル作られるのもいくつかあります。

 ls /etc/logrotate.d
apache2  apt  cups-daemon  dpkg  exim4-base  exim4-paniclog  minidlna  mysql-server  nginx  pure-ftpd-common  rkhunter	rsyslog   samba  squid  vsftpd

/etc/etc/logrotate.d/rsyslog に定義を書いてあげれば、rsyslogでログ出力制御しているものは記述に従ってローテーとしてくれます。
今回はローテートに特にこだわりはないので(日付つけて毎日ローテとか別にしない)普通にsyslogなんかと合わせてローテさせます。
/etc/logrotate.d/rsyslog

/var/log/syslog
/var/log/iptables
/var/log/dhcpd.log ## ここ書き加え
{
	rotate 30
	daily
	missingok
	notifempty
	delaycompress
	compress
	postrotate
		invoke-rc.d rsyslog rotate > /dev/null
	endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
	rotate 30
	weekly
	missingok
	notifempty
	compress
	delaycompress
	sharedscripts
	postrotate
		invoke-rc.d rsyslog rotate > /dev/null
	endscript
}

これで毎日ローテ、30世代までとっとく、2個前のログは圧縮という動きをしてくれるはず。

設定できたら手動で強制ローテ

rsyslog再起動

$ sudo systemctl restart rsyslog

手動ローテ

$ sudo logrotate -f /etc/logrotate.conf

これで定義されてる全ログローテが手動実行のタイミングで行われます。
今回はdhcpd.logがちゃんとローテされていればおk。

このコマンドだと他のログも全部ローテされてしまうのがビミョーなとこですね。
一回設定ファイルでローテさせたくないログはコメントアウトしてから手動ローテかけて、その後にコメントアウト解除すれば大丈夫です。ちょっとめんどいですが。

Sponsored Link