数日前に、集中型Rsyslogサーバーのセットアップ方法を説明したガイドを公開しました。 CentOSシステムで。今日、このガイドでは、 Logrotateを使用してログファイルを管理する方法を説明します。 Linuxの場合。このユーティリティは、ログファイルの管理を簡素化します。特に、毎日大量のログファイルを生成するシステムに役立ちます。その名前が示すように、LogRotateは、一定の間隔でログをシステムから完全にローテーションします。また、ログファイルの自動ローテーション、圧縮、削除、およびメール送信も可能です。各ログファイルは、毎日、毎週、毎月、または大きくなりすぎたときに処理される可能性があります。
Logrotateを使用したログファイルの管理
Logrotateのインストール
Logrotateは、ほとんどのLinuxディストリビューションのデフォルトのリポジトリで利用できます。
Arch Linuxおよびその派生物では、次のコマンドを実行してインストールする必要があります。
$ sudo pacman -S logrotate
RHEL、CentOS、Scientific LinuxなどのRPMベースのシステムでは、次のコマンドを使用してインストールできます。
$ sudo yum install logrotate
Debian、Ubuntuの場合:
$ sudo apt-get install logrotate
SUSEでは、openSUSE:
$ sudo znf install logrotateダウンロード -無料のeGuide:「Ubuntuを自宅のように感じさせる22の便利な調整」
Logrotateの構成
LogRotateのメインの構成ファイルは/etc/logrotate.confです。 。
これが私のArchシステムにおけるこのファイルのデフォルトの内容です。このファイル出力は、他のLinuxディストリビューションでは少し異なって見える場合があります。
$ cat /etc/logrotate.conf
出力例:
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # restrict maximum size of log files #size 20M # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # Logs are moved into directory for rotation # olddir /var/log/archive # Ignore pacman saved files tabooext + .pacorig .pacnew .pacsave # Arch packages drop log rotation information into this directory include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
上記の構成ファイルで各オプションが何をするか見てみましょう。
- 毎週 -毎週ログをローテーションします。
- 回転4 -デフォルトでは、LogRotateは4週間(明らかに1か月)相当のログファイルを保持します。特定の期間が経過するとすべてのログファイルがローテーションされるため、重要なログファイルを失いたくない場合は、そのバックアップを保持する必要がある場合があります。
- サイズ20M -ログファイルが20MBのサイズに達した場合は、ログファイルをローテーションします。デフォルトでは、このオプションは無効になっています。有効にするには、コメントを外します。
- 作成 -古いログファイルをローテーションした後、一度新しいログファイルを作成します。このオプションはデフォルトで有効になっています。
- 圧縮 -ログファイルを圧縮します。また、デフォルトではログを圧縮しません。ログを圧縮する場合は、この行のコメントを解除してください。
- /etc/logrotate.d/ -このディレクトリには、アプリケーション固有のログルールファイルが含まれています。
- 行方不明 -ログファイルが欠落している場合、Logrotateはエラーメッセージを発行せずに次のファイルに進みます。
Logrotateは、ログファイルをセグメント化し、 /etc/logrotate.d/で指定されているルールに基づいてログを圧縮します。 ディレクトリ。
このディレクトリの内容を見てみましょう。
$ ls /etc/logrotate.d/
サンプル出力は次のようになります:
lirc samba
上記の出力にあるように、LogRotateによって管理されるすべてのログのさまざまなルールファイルが含まれています。 sambaなどの特定のアプリケーションログルールを表示するには、次のコマンドを実行します。
$ cat /etc/logrotate.d/samba
出力例:
/var/log/samba/log.smbd /var/log/samba/log.nmbd /var/log/samba/*.log { notifempty missingok sharedscripts copytruncate postrotate /bin/kill -HUP `cat /var/run/samba/*.pid 2>/dev/null` 2>/dev/null || true endscript }
ここで
- 通知なし -ログファイルが空の場合、ローテーションされないことを示します。
- コピートランケート -コピーを作成した後、元のログファイルを所定の位置で切り捨てます。
- postrotate / endscript -postrotateとendscriptの間の行は、ログファイルがローテーションされた後に実行されます。
- 共有スクリプト -ワイルドカードパターンに一致するログの数に関係なく、スクリプトは1回だけ実行されます。
/etc/logrotate.d/ディレクトリに独自のログルールファイルを作成して、独自のルールを定義することもできます。
Cronは、ローテーションするログファイルを検索するためにlogroateユーティリティを毎日実行します。自動ログローテーションルールは、 /etc/cron.daily/logrotateで指定できます 手動によるユーザー介入を回避するためのファイル。毎日特定の時間にログローテーションを実行します。
ログファイルがローテーションしているかどうかを確認するには、次のコマンドを実行します。
$ cat /var/lib/logrotate.status
出力例:
logrotate state -- version 2 "/var/log/samba/log.smbd" 2016-5-12-11:0:0 "/var/log/lircd" 2016-6-15-10:0:0 "/var/log/httpd/*log" 2016-5-12-11:0:0 "/var/log/wtmp" 2016-5-6-10:0:0 "/var/log/samba/*.log" 2016-5-12-11:0:0 "/var/log/btmp" 2017-4-1-11:36:53 "/var/log/samba/log.nmbd" 2016-5-12-11:0:0
詳細については、次のコマンドを入力してlogrotateを実行します。
$ logrotate --help
または、
$ man logrotate
今のところこれですべてです。 Logrotateはシンプルでありながら、ログ管理を簡素化する便利なログローテーションツールです。複雑な構成やインストールの手順に苦労する必要はありません。すべてが自明です。多数のログファイルを生成するシステムを管理している場合は、Logrotateを使用して定期的にログファイルをローテーションできます。
乾杯!