Setting up logrotate in Linux

重要なサービスが数分前に破綻し、その日を救うためにあなたが呼ばれたとしたら、どのような人生になるか想像してみてください。 サービスを再起動しようとすると、どうしてもうまくいきません。 エラーメッセージもなければ、それ以上に、死ぬ前に何をしていたのかという痕跡もありません。 頭の中には100以上の原因が浮かんできて、どの方向に進めばいいのかわからなくなってしまいます。 もしかしたら、完全にサーバーを再起動できるかもしれません。

このシナリオは、ロギングがあなたを救うことができる多くのシナリオの1つです。 通常、実行中のソフトウェアは、後世に残すために、その実行に関連する重要な活動の記録をファイルに保存します。 ログファイルは、開発者やシステム管理者が、特定のソフトウェアに何が起こったかを後から知るのに役立つため、どんなことでも記録することができます。 ログファイルは、セキュリティを重視する人が特定のリソースへのアクセスを確認するためにも使用される。

ログファイルは、その定義上、更新の頻度や冗長性に応じて、サイズがどんどん大きくなっていきます。

ログファイルは、その定義上、更新の頻度や冗長性に応じてサイズが増大していきます。その目的を果たすために、通常、トラブルシューティングやフォレンジックに役立つタイムスタンプを含んだ追記モードで開かれます。 しかし、ファイルサイズが大きいため、システムと人間の両方にとって、ログファイルの処理が面倒になるという問題があります。 ログファイルの耐久性を維持するために、ログのローテーションが行われます。 簡単に言えば、新しいファイルが開かれ、古いファイルは閉じられ、デザインの好みに応じて保存または削除されます。 これにより、ログがパーティション全体を埋め尽くし、システムが停止してしまうのを防ぐことができます。 近くのシステムでログローテーションが行われていることに気づいたかもしれません。 boot.logファイルの日付を見てください。

画像
varlog

この場合、特定の条件が満たされると、現在のファイルは識別と追跡のために日付を付加して名前が変更され、元の名前の新しいファイルが開かれて、受信するログ メッセージを受け取れるようになります。

Linuxでのログ収集(rsyslogd)

例に挙げたCentOS 7サーバーのようなLinuxシステムでは、ログ収集を行うためにデーモンに依存していると考えられます。 Rsyslogdsyslogデーモンを改良したもので、ログを素早く処理し、IPネットワーク内の任意の場所に転送する能力を持っています。 syslogrsyslogsyslog-ngRsyslogは、多くのRed Hatベースのディストロにデフォルトで搭載されています。 以下のコマンドを実行して、システム上での存在とバージョンを確認してください。

rsyslogd -v
画像
rsyslogd-v

これはデーモンです。 デーモンなので、以下のようにsystemdを採用することで起動していることが確認できます。

systemctl status rsyslogd
画像
systemctlstatusrsyslog

もし。 何らかの理由で起動していない場合は、systemdから起動することができます。

Logrotate

Logrotate は、ログを回転させることを主な機能とする Linux ユーティリティです。

 yum install logrotate

バイナリファイルは /bin/logrotate にあります。

logrotate/etc/ ディレクトリに置かれます。 また、カスタマイズされたログ ローテーション要求のために、サービス固有のスナップイン設定ファイル用のフォルダーが作成されます。

Daily cron job

ユーティリティを起動する croncronlogrotate バイナリを実行する単なる Bash スクリプトであり、エラーが発生した場合に何をすべきかをシステムに伝えます。

画像
crondaily

標準的なログファイルの場所

Linuxシステムのログは、パーミッションが許す限りどこにでも置くことができます。

以下のスクリーンショットは、私の /var/log ディレクトリの内容を覗いたものです。

イメージ
lsvarlog

設定ファイルと例

/etc/logrotate.conf

logrotatelogrotate.confです。 この設定ファイルには、ログファイルをデフォルトでどのようにローテーションさせるかの指示が含まれています。

以下に設定ファイルの内容の一例を示します。

Image
logrotate.conf

logrotateの柔軟性を知るために、いくつかのディレクティブを見てみましょう。 ありがたいことに、このユーティリティの作者は、初心者が始めるのに十分なコメントを入れてくれています。 もっと詳しく知りたい方は、manweeklydateextcompresscreaterotate 4 は、ログファイルが毎週ローテーションされることを記述しています。 ローテーションされたファイルの識別用サフィックスとしてローテーションされた日付を使用すること、ローテーションされたファイルを圧縮すること、受信するログを受け取るために新しいファイルを作成すること、4つ以上のログを保持しないこと、などが挙げられます。 言い換えれば、5番目に新しいログは削除されるべきだということです。

また、私のシステムでは、compress#/etc/logrotate.dlogrotateを利用するように設計されたパッケージは、設定ファイルをこのディレクトリにドロップします。 このモジュール化は Linux の精神に沿ったもので、ユーティリティの拡張性を高めます。 設定ファイルには、同様のディレクティブと、必要に応じてカスタムログファイルが含まれています。 独自の設定ファイルを作成して、任意のログファイルを処理することもできます。 ファイルに名前を付け、処理するログファイルを追加して、このディレクトリに置くだけです。 最後に、wtmpやその他のシステムログファイルなど、オーナーパッケージがないログファイル用のディレクティブがあります。

/etc/logrotate.d

残念ながら、/etc/logrotate.d ディレクトリについてはかなり話しましたので、前に共有したアイデアを実現するために、このディレクトリの内容を紹介します。

イメージ
logrotated

そして、念のため、Sambaの設定ファイルを見てみましょう。

画像
samba

logrotate.conf と似ているのがわかりますか?

/var/log/samba/* – ローテートされるログ ファイルです。

notifempty – ファイルが空の場合はローテートしないという指示。

olddir /var/log/samba/old – ローテートされた古いログを保存する場所。

missingoklogrotateがエラーを出すのを防ぎます。

copytruncate – ログファイルを閉じないでください。 ローテートされ、名前が変更されたファイルのコピーを作成し、ログ ファイルのサイズをゼロにします

sharedscriptsmanのページを参照してください。

最後に

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です