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

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

Logrotateは、ほとんどのLinuxディストリビューションにプリインストールされているソフトウェアであり、ログファイルの長期保存と整理を管理できます。

システム内のアプリケーションは、多くの場合、ディスク操作または問題のログを記録します。定期的に削除しないと、これらのファイルのサイズが大きくなり、ディスクがいっぱいになり、誤動作を引き起こす可能性があります。

Logrotateは、ログファイルを定期的にチェックし、特定のサイズや経過時間を超えた場合にログファイルのローテーション、圧縮、削除を自動的に管理するための最も一般的なソリューションです。

基本構成

Logrotateを使用すると、パス/etc/logrotate.conf内のファイルの後続のすべての構成で使用されるいくつかの基本的なパラメーターを定義できます。

# Set a weekly rotation

weekly


# Set the number of rotations to save

rotate 4
              

# make new log file

create
              

# Include all configurations files

include /etc/logrotate.d

このlogrotate.confの抜粋では、上記のすべてのパラメーターを適用するだけでなく、/ etc/logrotate.dディレクトリにあるすべての構成を読み取ることもお勧めします。そうすることで、各構成をアプリケーションやコンテキスト、あるいはその両方で分割できます。

ログローテーション構成は、1つ以上のファイルのルールセットを定義します:

[FILE] [FILE?] [FILE?] {

    [SETTINGS]

}

典型的な例は、/ var / log/messagesの構成です。

/var/log/messages {
                 

    # Save 5 rotations

    rotate 5
                 

    # Rotating files every week 

    weekly 
                 

    postrotate 

        /usr/bin/killall -HUP syslogd

    endscript

}

上記の例では、メッセージファイルのみが考慮されます。 。そのローテーションは毎週最大5に設定されます。したがって、5回目のローテーションの終わりに、ログファイルは次のようになります。

-rw-r----- 1 root  adm 1215 Jul 29 06:47 messages

-rw-r----- 1 root  adm 3895 Jul 28 06:49 messages.1

-rw-r----- 1 root  adm 454 Jul 21 06:37 messages.2.gz

-rw-r----- 1 root  adm 506 Jul 15 06:40 messages.3.gz

-rw-r----- 1 root  adm 456 Jul 7 06:41 messages.4.gz
最も重要な設定のいくつかは次のとおりです。

  • 日次、月次、週次、年次:ログファイルをローテーションする頻度を示します

  • 圧縮、nocompress:古いファイルのローテーションを圧縮するかどうか

  • maxage:何日後に古いローテーションが削除されます

  • size:指定されたファイルが指定されたサイズよりも大きい場合にのみ回転を設定します。接尾辞を使用して、サイズ形式を示すことができます(たとえば、キロバイトの場合は「k」、メガバイトの場合は「M」)

  • ローテーション:完全に削除する前に保存する必要があるローテーションされたログの数。 0に設定すると、ログファイルはローテーションされずにクリアされます。

複数のファイルに同じルールを設定する場合は、コンマで区切って複数のパスを追加できます。例:

/var/log/custom_log, /var/log/alternative_log_file, /var/log/another_log {
                 

      …
                 

}

この構成は、custom_logファイル、alternative_log_file、another_logに使用されます。

または、次のようなファイルマスクを使用することもできます。

/var/custom/logs/*, /var/log/custom_log {
                 

      # This configuration will rotate all the files in the directory. 

      # /var/custom/logs/* e il file /var/log/custom_log
                 

      ...

}

dateext設定の使用

dateext設定を使用すると、ファイル名にローテーション日付を追加できるため、ログのデータを簡単に認識できます。

/var/log/custom.log {

    size 100M

    dateext

    rotate 3

    compress

    maxage 100

}

上記の構成では、custom.logファイルが100Mに達するとすぐに、最大3回まで、または100日後にアーカイブされます。圧縮オプションを使用すると、アーカイブファイルもgzip形式で圧縮されます。

ローテーションされると、ファイル名は次のようにローテーション日となります。

# ls /var/log

-rw-r--r--  1 user user 8980 2019-06-09 22:10 custom.log-20180609.gz

-rwxrwxrwx 1 user user    0 2019-06-09 22:11 custom.log
メールログ

Logrotateでは、postrotate / endscriptキーワードを使用して、ログローテーションのたびなど、特定のイベントが発生したときにカスタマイズされたスクリプトを実行できます。

考えられる用途の1つは、ローテーションの完了時にログを電子メールで送信することです。続行するには、まず、ファイルをメールアドレスに送信するスクリプトを作成します。

#!/bin/bash
                 

# Get all logs

tar -cvf /tmp/logpack.tar /var/log/messages*
                 

# Send logs as attachment 

echo "Log" | mail -s "log" [email protected] -A /tmp/logpack.tar

上記のファイルをホームディレクトリ(例:/home/map.com username_s // endend.sh)に保存し、次の方法で必要な権限が有効になっていることを確認します。

# sudo chmod u+x /home/user/sendlog.sh

次に、logrotate構成ファイルを次のように編集します。

/var/log/messages {
                 

    ...

    

    postrotate 
                 

        …
                 

        /home/user/sendlog.sh

    endscript

}
構成を保存して変更を適用します。

完了すると、ログローテーションごとに上記のログアーカイブが記載されたメールが届きます。


Linux
  1. Linuxファイル機能を管理する方法

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

  3. rsyslogを使用してLinuxログ集約サーバーを作成する方法

  1. Linuxでログファイルを空にする方法

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

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

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

  2. Wgetが使用するリスト内のファイルの名前を具体的に変更するにはどうすればよいですか?

  3. LinuxでNetcatを使用してファイルを転送する方法