LogrotateをインストールしてNginxログローテーションを構成する方法

Logrotateは、多数のログファイルを生成するシステムの管理を容易にするために設計されたユーティリティです。 ログファイルの自動ローテーション、圧縮、削除、およびメール送信を処理します。 サーバーにデプロイされたすべてのサービスまたはアプリケーションは、ユーザーがシステム/アプリケーション/で実行したアクションごとにファイルにログを生成します。 一定期間にわたって、そのようなログファイルを管理することは退屈な作業になります。 これらのログファイルは大きくなり、アプリケーションのパフォーマンスは定期的に低下します。 長期的には、ディスク容量が不足しているためにシステムが応答しなくなる可能性があります。

このような問題を軽減し、ログファイルを維持するために、「logrotate」を利用しています。 このツールは、多くの大きなログファイルを生成するシステムでのログファイルの管理を簡素化するように設計されています。

この記事では、logrotateユーティリティとNginxログローテーションを構成する方法について詳しく説明します。

インストール

ほとんどのディストリビューションでは、デフォルトでインストールおよび構成されています。 パッケージをインストールするには、パッケージがインストールされているかどうかを確認します。インストールされていない場合は、説明に従ってパッケージをインストールします。

# rpm -qa | grep logrotate
 logrotate-3.8.6-12.el7.x86_64

ここでは、デフォルトでインストールされているようです。 このクエリで何も報告されない場合は、次のコマンドを使用してCentOS7サーバーにインストールできます。

#yum install logrotate -y

logrotateを実行しています

Logrotateは、システム管理者がシステムによって生成されたログファイルを体系的にローテーションおよびアーカイブするのに役立ち、それによってオペレーティングシステムのディスク容量要件を削減します。 通常、logrotateは毎日のcronジョブとして実行されます。 1日に複数回ログを変更することはありません。

# cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi

構成ファイルを理解する

デフォルトでは、logrotateがインストールされている場合、そのメイン構成ファイルは/etc/logrotate.confにあります。

Logrotateにはディレクトリが含まれています /etc/logrotate.d/ ここで、さまざまなログ(ログをローテーションするデーモンとサービス)を構成します。 すべてのサービス固有の構成ファイルはに保存されます /etc/logrotate.d/

メイン設定ファイル /etc/logrotate.conf 一般的な構成が含まれています。 私のデフォルトのlogrotate構成ファイルを見てください:

3行目- weekly: この構成オプションにより、メイン構成ファイルおよび/etc/logrotate.d/ディレクトリーで定義されたすべてのログファイルが毎週ローテーションされます。
6行目- rotate 4: logrotateがすべてのログファイルの4週間のバックアップを保持することを保証します。
9行目- create: このオプションは、各ローテーション後に新しい空のログファイルを作成するようにlogrotateに指示します
12行目- dateext: これにより、ローテーションされたすべてのログファイルに、特定の各ログファイルがlogrotateによって処理された日付の形式で拡張子が追加されます。
15行目- compress: これにより、ローテーションされたログファイルが圧縮されます。
18行目- include /etc/logrotate.d: これには、ディレクトリ/etc/logrotate.dからの他のすべての構成が含まれます。
21〜33行目には、特定のサービスログローテーション構成が含まれています

Nginxログローテーションの構成

ほとんどのサービスでは、デフォルトのサービスログローテーション構成ファイルが自動的に作成されます。 /etc/logrotate.d/ フォルダ。 logrotateがシステムにインストールされていない場合でも、通常、すべてのパッケージにログローテーション構成が含まれています。 ただし、ソースからNginxをコンパイルした場合は、独自のログローテーション設定を手動で定義する必要があります。 /etc/logrotate.d/ Nginx構成ファイルに記載されているログファイルの場所を含むフォルダー。

インストールによってサーバー上に作成されたデフォルトのNginxログローテーション構成を参照してください。

# cat -n /etc/logrotate.d/nginx
1 /var/log/nginx/*log {
2 create 0644 nginx nginx
3 daily
4 rotate 10
5 missingok
6 notifempty
7 compress
8 sharedscripts
9 postrotate
10 /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
11 endscript
12 }
13

ライン1 – /var/log/nginx/*log: これにより、/ var / log / nginx /にあるすべてのNginxログファイルが定義されます。 ヒント:1つの構成ファイルに複数のログファイルを含める場合は、「/ var / log / nginx / * log」のようにワイルドカードを使用します。 単一のログファイルの場合、そのログファイルを「/var/log/nginx/error.log」とだけ指定できます。
2行目 – create: これにより、新しいログファイルが作成され、所有権nginxでアクセス許可644が設定されます。
3行目- daily: 毎日のローテーションを保証します
4行目- rotate 10: Save ログファイルの10コピー。
5行目- missingok: ログファイルがない場合はエラーを出力しないでください。
6行目- notifempty: 空の場合はログファイルをローテーションしないでください。
7行目- compress: デフォルトでgzip(1)を使用してログファイルの古いコピーを圧縮します
8行目- sharedscripts: これにより、ワイルドカードパターンに一致するログの数に関係なく、スクリプトが1回実行され、パターン全体がスクリプトに渡されます。
9行目から11行目- postrotate/endscript: postrotateとendscriptの間の行(どちらも単独で行に表示される必要があります)は、ログファイルがローテーションされた後に実行されます。 これらのディレクティブは、ログファイル定義内にのみ表示される場合があります。

このlogrotateユーティリティには、さらに多くの構成オプションがあります。 これを実行するだけで、マニュアルページからこれらのオプションの完全なリストを取得できます。

#man logrotate

ログローテーションステータスの確認

ファイル「/var/lib/logrotate.status」には、ログローテーションのステータスに関するすべての情報が含まれています。 したがって、追加された各構成ファイルのlogrotate実行ステータスを検証し、それぞれのステータスを確認するには、以下のコマンドを実行できます。 各構成の実行時間が一覧表示されます
ファイル。

# cat /var/lib/logrotate.status
logrotate state -- version 2
"/var/log/nginx/error.log" 2017-8-14-7:45:47
"/var/log/yum.log" 2017-8-14-7:45:47
"/var/log/chrony/*.log" 2017-8-14-7:0:0
"/var/log/wtmp" 2017-8-14-7:45:47
"/var/log/spooler" 2017-8-14-7:0:0
"/var/log/btmp" 2017-8-14-7:45:47
"/var/log/maillog" 2017-8-14-7:45:47
"/var/log/wpa_supplicant.log" 2017-8-14-7:0:0
"/var/log/secure" 2017-8-14-7:45:47
"/var/log/nginx/access.log" 2017-8-14-7:45:47
"/var/log/ppp/connect-errors" 2017-8-14-7:0:0
"/var/log/messages" 2017-8-14-7:45:47
"/var/log/cron" 2017-8-14-7:45:47

これにより、最新のログローテーションステータスが提供されます。

次のコマンドを使用して、特定のlogrotateファイルを手動または強制的に実行できます。

logrotate -f /etc/logrotate.d/nginx

または、以下のコマンドを使用して、詳細モードですべてのログをローテーションすることもできます。

logrotate -f -v /etc/logrotate.conf

Logrotateは、ログファイルを圧縮/削除することで、ログファイルを効率的に管理し、ディスク容量を節約するのに役立ちます。 また、追加のコピーを作成するか、新しくローテーションされたログファイルを電子メールで送信することにより、将来の参照用にログファイルをアーカイブするのに役立つ場合があります。 各ログファイルを毎日、毎週、毎月、または大きくなりすぎたときに処理するように構成を調整することもできます。 ログファイルを簡単に管理するには、logrotateユーティリティを使用することをお勧めします。