ブログ
これまでに経験してきたプロジェクトで気になる技術の情報を紹介していきます。
CentOS7 に logrotate を設定する。Asterisk の設定例もあり。
NMC
3 years
§ basic of logrotate
logrotate は daemon ではなくただの command で、
cron により毎日朝 3 時ごろに実行されます。
§ installation
docker 等の場合は CentOS に cron が入っていませんので、
一緒に cronie も入れておきます。
$ sudo yum -y install logrotate cronie
§ settings
cron から logrotate を起動する設定は、
install 時に自動でされていますので不要です。
rotate したいログファイルの設定は自分でする必要があります。
config ファイルの置き場は
/etc/logrotate.d/
です。
ここに置いた設定ファイルが、
毎日 3 時ごろに自動で実行されます。
§ example
例えば /var/log/test.log を rotate したい場合は、
/etc/logrotate.d/test 等とファイルを作成し、
中身は下記のように書きます。
$ cat /etc/logrotate.d/test
/var/log/test.log { # 👈対象の file path です。 * 等のワイルドカードが使えます。
missingok # missing ok 👈対象ファイルがなくても気にしません。
notifempty # not if empty 👈空なら何もしません。
compress # 👈 gz で圧縮します。
daily # 👈毎日 rotate します。
rotate 5 # 👈履歴を 5 個保持します。
dateext # 👈ファイル名の末尾に日付をつける設定です。
dateformat _%Y%m%d # 👈ファイル名の末尾の日付形式をカスタムできます。
create 0600 root root
}
§ test
example の設定を動作確認します。
¶ make test.log
適当にログファイルを作成します。 お手軽に command history を吐き出しています。
$ history >> /var/log/test.log
何度か実行すると結構な size になると思います。
¶ execute only test.log
logrotate コマンドの引数に設定ファイルを指定すると、
その設定だけ動かすことができます。
$ sudo logrotate /etc/logrotate.d/test
¶ rotate result
以下のように 日付付きで gz に圧縮されて、
test.log 自身は空になっています。
$ sudo ls -la /var/log
-rw------- 1 root root 0 Oct 19 08:51 test.log
-rw------- 1 root root 593 Oct 19 08:13 test.log_20211019.gz
gz で圧縮したファイルは通常の cat コマンドでは中身を見れません。
代わりに zcat コマンドなどで中身を表示できます。
$ sudo zcat test.log_20211019.gz
grep も同様に zgrep で検索できます。
§ sample
¶ asterisk
$ sudo cat /etc/logrotate.d/asterisk
/var/log/asterisk/messages # 👈 複数指定
/var/log/asterisk/*log { # 👈 ワイルドカード指定
missingok
notifempty
compress
daily
rotate 30
create 0640 asterisk asterisk
sharedscripts # 👈log file が複数あっても最後に一度だけ実行されます。これを書かないと毎度実行されます。
postrotate
/usr/sbin/asterisk -rx ‘logger reload’ > /dev/null 2> /dev/null # 👈 logfile の i-node が変わるので reload させます。
endscript
}
¶ Apache
$ sudo cat /etc/logrotate.d/httpd
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
delaycompress
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}
CentOS7 に logrotate を設定する。Asterisk の設定例もあり。
CentOS7 に logrotate を設定する。Asterisk の設定例もあり。
2021-10-19 18:27:21
2021-10-19 18:31:40
コメントはありません。