ログファイルはLinuxシステムのセキュリティにとって最も重要です。 logrotateツールは、Linuxシステムでのログファイルの管理を簡素化するように特別に設計されており、ログファイルの自動ローテーション、圧縮、削除、およびメール送信が可能です。ログファイルを毎日、毎週、毎月処理するようにlogrotateを簡単に設定できます。システムから最も古いログファイルを削除し、新しいログファイルを作成することにより、ログファイルをローテーションするために使用されるlogrotateプログラム。
このチュートリアルでは、logrotateを使用してUbuntu18.04サーバーでログを管理する方法を説明します。
- Ubuntu18.04サーバーを実行しているサーバー。
- sudo権限を持つroot以外のユーザー。
Logrotateをインストール
デフォルトでは、logrotateはUbuntu18.04LTSサーバーで使用できます。そうでない場合は、次のコマンドを実行してインストールできます。
sudo apt-get install logrotate -y
logrotateをインストールしたら、次のコマンドを使用してlogrotateのバージョンを確認できます。
sudo logrotate
出力:
logrotate 3.11.0 - Copyright (C) 1995-2001 Red Hat, Inc. This may be freely redistributed under the terms of the GNU Public License Usage: logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail=command] [-s|--state=statefile] [-v|--verbose] [-l|--log=STRING] [--version] [-?|--help] [--usage] [OPTION...]
Logrotateを構成する
デフォルトでは、logrotateのメイン構成ファイルlogrotate.confは/etc/logrotate.confにあります。その他の構成ファイルは、/ etc/logrotate.dにあります。次のコマンドでそれらを一覧表示できます:
ls /etc/logrotate.d
出力:
alternatives apport dpkg mysql-server rsyslog unattended-upgrades apache2 apt lxd openproject ufw
logrotateの主なオプションを以下に示します。
ミッシングコック :ログが欠落している場合でもエラーを発生させないでください
毎週 :ログファイルを週に1回ローテーションします
作成 :古いファイルは新しい名前で保存され、新しいファイルが作成されます
圧縮 :logrotategzipを使用してログファイルを圧縮してスペースを節約
回転 4 :logrotateは、指定されたログを削除する前に4回ローテーションするため、4週間のログをオンラインに保ちます
空に通知 :ログファイルが空のときにローテーションしないでください
デフォルトでは、logrotateは、シェルスクリプト/etc/cron.daily/logrotateを実行することによって毎日実行されます。次のコマンドを実行して、apacheログローテーションをテストしてみましょう。
sudo logrotate -d /etc/logrotate.d/apache2
出力:
reading config file /etc/logrotate.d/apache2 Reading state from file: /var/lib/logrotate/status Allocating hash table for state file, size 64 entries Handling 1 logs rotating pattern: /var/log/apache2/*.log after 1 days (14 rotations) empty log files are not rotated, old logs are removed considering log /var/log/apache2/access.log Creating new state Now: 2018-10-11 16:04 Last rotated at 2018-10-11 16:00 log does not need rotating (log has been already rotated) considering log /var/log/apache2/error.log Creating new state Now: 2018-10-11 16:04 Last rotated at 2018-10-11 16:00 log does not need rotating (log has been already rotated) considering log /var/log/apache2/other_vhosts_access.log Creating new state Now: 2018-10-11 16:04 Last rotated at 2018-10-11 16:00 log does not need rotating (log has been already rotated) not running prerotate script, since no logs will be rotated not running postrotate script, since no logs were rotated
デフォルトでは、logrotateは毎日のcronジョブとして実行されます。 cronジョブの詳細については、/ etc / cron.daily/logrotateを確認してください。 logrotateのcronジョブを、1時間ごと、1週間ごと、1年ごとに実行するように構成することもできます。