Linuxシステムで最も興味深い(そしておそらく最も重要な)ディレクトリの1つは /var/log
. による ファイルシステム階層標準、システムで実行されているほとんどのサービスのアクティビティは、このディレクトリまたはそのサブディレクトリの1つにあるファイルに書き込まれます。
このようなファイルは、 ログ そして、システムがどのように動作しているか(そして過去にどのように動作したか)を調べるための鍵となります。 ログ また、管理者やエンジニアがトラブルシューティング中に調べる最初の情報源でもあります。
の内容を見ると /var/log
に CentOS / RHEL / Fedora と Debian / Ubuntu (さまざまな場合)次のログファイルとサブディレクトリが表示されます。
システムで実行されているサービスとそれらが実行されている時間によって、結果が多少異なる場合があることに注意してください。
#ls / var / log。
#ls / var / log。
どちらの場合も、ログ名の一部が期待どおりに終了することがわかります。 "ログ"、他の人は日付を使用して名前が変更されます(たとえば、 maillog-20160822 オン CentOS)または圧縮(検討 auth.log.2.gz と mysql.log.1.gz オン Debian).
これはデフォルトの動作ではありません 選択した分布に基づく ただし、この記事で説明するように、構成ファイルのディレクティブを使用して自由に変更できます。
ログが永久に保持された場合、最終的にはファイルシステムがいっぱいになります。 /var/log 常駐します。 それを防ぐために、システム管理者はと呼ばれる素晴らしいユーティリティを使用することができます ログローテーション 定期的にログをクリーンアップします。
一言で言えば、 ログローテーション 条件が満たされたときにメインログの名前を変更または圧縮して(詳細は1分以内)、次のイベントが空のファイルに記録されるようにします。
さらに、それは削除されます "年" ログファイルと最新のものを保持します。 もちろん、私たちは何を決めることができます "年" とは、logrotateでログをクリーンアップする頻度を意味します。
インストールするには ログローテーション、パッケージマネージャーを使用するだけです。
DebianとUbuntuの場合 #aptitude update && aptitude install logrotate CentOS、RHEL、Fedoraの場合 #yum update && yum installlogrotate。
構成ファイル(/etc/logrotate.conf
)は、他のより具体的な設定が個人に配置される可能性があることを示している可能性があります .conf
内部のファイル /etc/logrotate.d.
これは、次の行が存在し、コメントアウトされていない場合にのみ当てはまります。
/etc/logrotate.dを含めます。
物事を整理し、使用するのに役立つので、このアプローチに固執します デビア次の例のnボックス。
非常に用途の広いツールであるlogrotateは、ログをいつどのようにローテーションするか、そしてその直後に何をすべきかを構成するのに役立つ多くのディレクティブを提供します。
次の内容をに挿入しましょう /etc/logrotate.d/apache2.conf (ほとんどの場合、そのファイルを作成する必要があることに注意してください)、各行を調べてその目的を示します。
apache2.conf
/ var / log / apache2 / * {毎週ローテーション3サイズ10M圧縮delaycompress。 }
最初の行は、ブロック内のディレクティブが内部のすべてのログに適用されることを示しています /var/log/apache2:
ドライランを実行して、logrotateが実際に実行された場合にどうなるかを見てみましょう。 使用 -NS
オプションの後に構成ファイルが続きます(このオプションを省略すると、実際にlogrotateを実行できます):
#logrotate -d / etc / logrotate.d / apache2.conf。
結果を以下に示します。
ログを圧縮する代わりに、ログの名前を変更することができます 日にち それらが回転したとき。 そのために、 dateext
指令。 日付形式がデフォルト以外の場合 yyyymmdd、を使用して指定できます dateformat.
ログが空の場合は、ローテーションが発生しないようにすることもできます。 notifempty. さらに、ローテーションされたログをシステム管理者にメールで送信するようにlogrotateに指示しましょう([メール保護] この場合)彼/彼女の参照のために(これには 設定するメールサーバー、これはこの記事の範囲外です)。
logrotateに関するメールを受け取りたい場合は、次のようにPostfixメールサーバーを設定できます。 Postfixメールサーバーをインストールする
今回は使用します /etc/logrotate.d/squid.conf 回転するだけ /var/log/squid/access.log:
squid.conf
/var/log/squid/access.log {毎月作成0644ルートルートローテーション5サイズ= 1M dateext dateformat-%d%m%Y notifempty mail [メール保護]
}
下の画像でわかるように、このログはローテーションする必要はありませんでした。 ただし、サイズ条件が満たされた場合 (サイズ= 1M)、ローテーションされたログの名前が変更されます access.log-25082020 (ログがローテーションされた場合 2020年8月25日)およびメインログ(access.log)に設定されたアクセス許可で再作成されます 0644 と 根 所有者およびグループ所有者として。
最後に、ログの数が最終的に到達したとき 6、最も古いログがに郵送されます [メール保護].
ここで、回転が行われたときにカスタムコマンドを実行するとします。 これを行うには、そのようなコマンドを含む行をpostrotateディレクティブとendscriptディレクティブの間に配置します。
たとえば、内部のログのいずれかが発生したときに、rootにメールを送信するとします。 /var/log/myservice 回転します。 赤の線をに追加しましょう /etc/logrotate.d/squid.conf:
squid.conf
/ var / log / myservice / * {毎月作成0644ルートルートローテーション5サイズ= 1M 回転後エコー「回転が発生しました。」 | メールルートエンドスクリプト }
最後になりましたが、重要なのは、 /etc/logrotate.d/*.conf
競合が発生した場合は、メイン構成ファイル内のものをオーバーライドします。
デフォルトでは、logrotateをインストールすると、内部にcrontabファイルが作成されます。 /etc/cron.daily 名前付き ログローテーション. このディレクトリ内の他のcrontabファイルの場合と同様に、次の場所から毎日実行されます。 午前6時25分 anacronがインストールされていない場合。
それ以外の場合、実行は開始されます 午前7時35分. 確認するには、次の行に注意してください。 cron.daily どちらかで /etc/crontab また /etc/anacrontab.
複数のログを生成するシステムでは、logrotateを使用してそのようなファイルの管理を大幅に簡素化できます。 この記事で説明したように、定期的に、またはファイルが指定されたサイズに達すると、ログが自動的にローテーション、圧縮、削除、およびメール送信されます。
cronジョブとして実行するように設定されていることを確認してください。logrotateを使用すると、作業がはるかに簡単になります。 詳細については、manページを参照してください。
この記事について質問や提案がありますか? 下記のコメントフォームからお気軽にご連絡ください。