GNU/Linux >> Linux の 問題 >  >> Ubuntu

LinuxでLogrotateを使用してログローテーションを設定および管理する方法

Linuxシステムで最も興味深い(そしておそらく最も重要な)ディレクトリの1つは、/var/logです。 。 Filesystem Hierarchy Standardによると、システムで実行されているほとんどのサービスのアクティビティは、このディレクトリまたはそのサブディレクトリの1つにあるファイルに書き込まれます。

このようなファイルは、ログと呼ばれます そして、システムがどのように動作しているか(そして過去にどのように動作したか)を調べるための鍵となります。 ログ また、管理者やエンジニアがトラブルシューティング中に調べる最初の情報源でもあります。

/var/logの内容を見ると CentOS / RHEL / Fedora およびDebian/ Ubuntu (さまざまな場合)次のログファイルとサブディレクトリが表示されます。

システムで実行されているサービスとそれらが実行されている時間によって、結果が多少異なる場合があることに注意してください。

RHEL/CentOSおよびFedoraの場合

# ls /var/log

DebianおよびUbuntuの場合

# ls /var/log

どちらの場合も、一部のログ名が「ログ」で期待どおりに終了していることがわかります。 、他の人は日付を使用して名前が変更されます(たとえば、 maillog-20160822 CentOS )または圧縮( auth.log.2.gz を検討してください) およびmysql.log.1.gz Debian

これは、選択したディストリビューションに基づくデフォルトの動作ではありませんが、この記事で説明するように、構成ファイルのディレクティブを使用して自由に変更できます。

ログが永久に保持されると、最終的には / var / logのファイルシステムがいっぱいになります。 常駐します。これを防ぐために、システム管理者は logrotateと呼ばれる優れたユーティリティを使用できます。 定期的にログをクリーンアップします。

一言で言えば、ログローテーション 条件が満たされたときにメインログの名前を変更または圧縮して(詳細は1分以内)、次のイベントが空のファイルに記録されるようにします。

さらに、「古い」を削除します ログファイルと最新のものを保持します。もちろん、「古い」を決めることもできます とは、logrotateでログをクリーンアップする頻度を意味します。

LinuxへのLogrotateのインストール

logrotateをインストールするには 、パッケージマネージャーを使用するだけです:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

構成ファイル(/etc/logrotate.conf)に注意する価値があります。 )は、他のより具体的な設定が個々の.confに配置される可能性があることを示している場合があります /etc/logrotate.d内のファイル 。

おすすめの記事 :Logrotateを使用したシステムログの管理(構成、ローテーション、およびデータベースへのインポート)

これは、次の行が存在し、コメントアウトされていない場合にのみ当てはまります。

include /etc/logrotate.d

このアプローチは、物事を整理し、 Debia を使用するのに役立つため、これに固執します。 次の例のnボックス。

LinuxでLogrotateを構成する

logrotateは非常に用途の広いツールであるため、ログをローテーションするタイミングと方法、およびその直後に何を実行するかを構成するのに役立つ多くのディレクティブを提供します。

次のコンテンツを/etc/logrotate.d/apache2.confに挿入しましょう (ほとんどの場合、そのファイルを作成する必要があることに注意してください)、各行を調べてその目的を示します:

apache2.conf
/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

最初の行は、ブロック内のディレクティブが / var / log / apache2内のすべてのログに適用されることを示しています :

  • 毎週 これは、ツールが毎週ログをローテーションしようとすることを意味します。その他の可能な値は、日次および月次です。
  • 回転3 3つのローテーションされたログのみを保持する必要があることを示します。したがって、最も古いファイルは4回目の実行時に削除されます。
  • size =10M 回転の最小サイズを10Mに設定します。つまり、各ログは10MBに達するまでローテーションされません。
  • 圧縮 およびdelaycompress 最新のログを除いて、ローテーションされたすべてのログを圧縮する必要があることを通知するために使用されます。

ドライランを実行して、logrotateが実際に実行された場合にどうなるかを見てみましょう。 -dを使用します オプションの後に構成ファイルが続きます(このオプションを省略すると、実際にlogrotateを実行できます):

# logrotate -d /etc/logrotate.d/apache2.conf

結果を以下に示します。

ログを圧縮する代わりに、日付の後に名前を変更することができます それらが回転したとき。そのために、dateextを使用します 指令。日付形式がデフォルトのyyyymmdd以外の場合 、 dateformatを使用して指定できます 。

おすすめの記事 :「atop」をインストールして、Linuxシステムプロセスのロギングアクティビティを監視します

notifempty を使用してログが空の場合は、ローテーションが発生しないようにすることもできます。 。さらに、logrotateに、ローテーションされたログをシステム管理者にメールで送信するように指示しましょう([メール保護] この場合)彼/彼女の参照用(これにはメールサーバーを設定する必要がありますが、これはこの記事の範囲外です)。

logrotateに関するメールを受け取りたい場合は、次のようにPostfixメールサーバーを設定できます:Postfixメールサーバーのインストール

今回は/etc/logrotate.d/squid.confを使用します /var/log/squid/access.logのみを回転させる :

squid.conf
/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email protected]
}

下の画像でわかるように、このログはローテーションする必要はありませんでした。ただし、サイズ条件が満たされた場合(size =1M )、ローテーションされたログの名前は access.log-25082020に変更されます (ログが2020年8月25日にローテーションされた場合 )およびメインログ( access.log )アクセス許可を 0644に設定して再作成されます そしてルートで 所有者およびグループ所有者として。

最後に、ログの数が最終的に 6に達したとき 、最も古いログが[メール保護]にメールで送信されます 。

ここで、回転が行われるときにカスタムコマンドを実行するとします。これを行うには、postrotateディレクティブとendscriptディレクティブの間にそのようなコマンドを含む行を配置します。

たとえば、 / var / log / myservice 内のログのいずれかが発生したときに、rootにメールを送信するとします。 回転します。 /etc/logrotate.d/squid.confに赤い線を追加しましょう :

squid.conf
/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

最後になりましたが、/etc/logrotate.d/*.confにオプションが存在することに注意することが重要です。 競合が発生した場合は、メインの構成ファイルにあるものをオーバーライドします。

ログローテーションとcron

デフォルトでは、logrotateをインストールすると、 /etc/cron.daily内にcrontabファイルが作成されます。 ログローテーションという名前 。このディレクトリ内の他のcrontabファイルの場合と同様に、毎日午前6時25分から実行されます。 anacronがインストールされていない場合。

おすすめの記事 :Linuxでの11のcronスケジューリングタスクの例

それ以外の場合、実行は午前7時35分頃に開始されます。 。確認するには、 cron.dailyを含む行に注意してください / etc / crontabのいずれかで または/etc / anacrontab

概要

複数のログを生成するシステムでは、logrotateを使用してそのようなファイルの管理を大幅に簡素化できます。この記事で説明したように、定期的に、またはファイルが特定のサイズに達すると、ログが自動的にローテーション、圧縮、削除、メール送信されます。

cronジョブとして実行するように設定されていることを確認してください。logrotateを使用すると、作業がはるかに簡単になります。詳細については、manページを参照してください。

この記事について質問や提案がありますか?以下のコメントフォームを使用して、お気軽にお知らせください。


Ubuntu
  1. Linuxでサービスを管理および一覧表示する方法

  2. logrotateをインストールして使用し、Ubuntu18.04LTSでログファイルを管理する方法

  3. LinuxでLogrotateを使用してログファイルを管理する方法

  1. Linuxlogrotateコマンドを使用してログをローテーションおよびアーカイブします

  2. Logrotateを使用してUbuntuでログを管理する方法

  3. Linux で logrotate を使用してカスタム ログ ファイル ローテーションを作成する方法

  1. Linuxログファイルを表示および読み取る方法

  2. UbuntuLinuxでFTPサーバーをセットアップして使用する方法

  3. vnStat を使用して Linux でネットワーク トラフィックを監視およびログに記録する方法