重要なサービスが数分前に破綻し、その日を救うためにあなたが呼ばれたとしたら、どのような人生になるか想像してみてください。 サービスを再起動しようとすると、どうしてもうまくいきません。 エラーメッセージもなければ、それ以上に、死ぬ前に何をしていたのかという痕跡もありません。 頭の中には100以上の原因が浮かんできて、どの方向に進めばいいのかわからなくなってしまいます。 もしかしたら、完全にサーバーを再起動できるかもしれません。
このシナリオは、ロギングがあなたを救うことができる多くのシナリオの1つです。 通常、実行中のソフトウェアは、後世に残すために、その実行に関連する重要な活動の記録をファイルに保存します。 ログファイルは、開発者やシステム管理者が、特定のソフトウェアに何が起こったかを後から知るのに役立つため、どんなことでも記録することができます。 ログファイルは、セキュリティを重視する人が特定のリソースへのアクセスを確認するためにも使用される。
ログファイルは、その定義上、更新の頻度や冗長性に応じて、サイズがどんどん大きくなっていきます。
ログファイルは、その定義上、更新の頻度や冗長性に応じてサイズが増大していきます。その目的を果たすために、通常、トラブルシューティングやフォレンジックに役立つタイムスタンプを含んだ追記モードで開かれます。 しかし、ファイルサイズが大きいため、システムと人間の両方にとって、ログファイルの処理が面倒になるという問題があります。 ログファイルの耐久性を維持するために、ログのローテーションが行われます。 簡単に言えば、新しいファイルが開かれ、古いファイルは閉じられ、デザインの好みに応じて保存または削除されます。 これにより、ログがパーティション全体を埋め尽くし、システムが停止してしまうのを防ぐことができます。 近くのシステムでログローテーションが行われていることに気づいたかもしれません。 boot.log
ファイルの日付を見てください。
この場合、特定の条件が満たされると、現在のファイルは識別と追跡のために日付を付加して名前が変更され、元の名前の新しいファイルが開かれて、受信するログ メッセージを受け取れるようになります。
Linuxでのログ収集(rsyslogd)
例に挙げたCentOS 7サーバーのようなLinuxシステムでは、ログ収集を行うためにデーモンに依存していると考えられます。 Rsyslogd
syslog
デーモンを改良したもので、ログを素早く処理し、IPネットワーク内の任意の場所に転送する能力を持っています。 syslog
rsyslog
syslog-ng
Rsyslog
は、多くのRed Hatベースのディストロにデフォルトで搭載されています。 以下のコマンドを実行して、システム上での存在とバージョンを確認してください。
rsyslogd -v
これはデーモンです。 デーモンなので、以下のようにsystemd
を採用することで起動していることが確認できます。
systemctl status rsyslogd
もし。 何らかの理由で起動していない場合は、systemd
から起動することができます。
Logrotate
Logrotate
は、ログを回転させることを主な機能とする Linux ユーティリティです。
yum install logrotate
バイナリファイルは /bin/logrotate
にあります。
logrotate
/etc/
ディレクトリに置かれます。 また、カスタマイズされたログ ローテーション要求のために、サービス固有のスナップイン設定ファイル用のフォルダーが作成されます。
Daily cron job
ユーティリティを起動する cron
cron
logrotate
バイナリを実行する単なる Bash スクリプトであり、エラーが発生した場合に何をすべきかをシステムに伝えます。
標準的なログファイルの場所
Linuxシステムのログは、パーミッションが許す限りどこにでも置くことができます。
以下のスクリーンショットは、私の /var/log
ディレクトリの内容を覗いたものです。
設定ファイルと例
/etc/logrotate.conf
logrotate
logrotate.conf
です。 この設定ファイルには、ログファイルをデフォルトでどのようにローテーションさせるかの指示が含まれています。
以下に設定ファイルの内容の一例を示します。
logrotateの柔軟性を知るために、いくつかのディレクティブを見てみましょう。 ありがたいことに、このユーティリティの作者は、初心者が始めるのに十分なコメントを入れてくれています。 もっと詳しく知りたい方は、man
weekly
dateext
compress
create
rotate 4
は、ログファイルが毎週ローテーションされることを記述しています。 ローテーションされたファイルの識別用サフィックスとしてローテーションされた日付を使用すること、ローテーションされたファイルを圧縮すること、受信するログを受け取るために新しいファイルを作成すること、4つ以上のログを保持しないこと、などが挙げられます。 言い換えれば、5番目に新しいログは削除されるべきだということです。
また、私のシステムでは、compress
#
/etc/logrotate.d
logrotate
を利用するように設計されたパッケージは、設定ファイルをこのディレクトリにドロップします。 このモジュール化は Linux の精神に沿ったもので、ユーティリティの拡張性を高めます。 設定ファイルには、同様のディレクティブと、必要に応じてカスタムログファイルが含まれています。 独自の設定ファイルを作成して、任意のログファイルを処理することもできます。 ファイルに名前を付け、処理するログファイルを追加して、このディレクトリに置くだけです。 最後に、wtmp
やその他のシステムログファイルなど、オーナーパッケージがないログファイル用のディレクティブがあります。
/etc/logrotate.d
残念ながら、/etc/logrotate.d
ディレクトリについてはかなり話しましたので、前に共有したアイデアを実現するために、このディレクトリの内容を紹介します。
そして、念のため、Sambaの設定ファイルを見てみましょう。
logrotate.conf
と似ているのがわかりますか?
/var/log/samba/*
– ローテートされるログ ファイルです。
notifempty
– ファイルが空の場合はローテートしないという指示。
olddir /var/log/samba/old
– ローテートされた古いログを保存する場所。
missingok
logrotate
がエラーを出すのを防ぎます。
copytruncate
– ログファイルを閉じないでください。 ローテートされ、名前が変更されたファイルのコピーを作成し、ログ ファイルのサイズをゼロにします
sharedscripts
man
のページを参照してください。
最後に