重要なサービスが数分前に腹を立てて、あなたがその日を救うために呼ばれたとしたら、人生はどうなるか想像してみてください。サービスを再起動しようとしましたが、それはできません。エラーメッセージはありませんが、さらに重要なことに、死ぬことを決定する前に何をしていたかの痕跡はありません。百一はあなたの心を通して進路を引き起こします、そしてあなたはどちらの方向に進むべきかを知る方法がないことに気づきます。たぶん、サーバーを完全に再起動することができます。多分。
このシナリオは、ログ記録が役立つ多くのシナリオの1つです。通常、実行中のソフトウェアは、後世のために実行に関連する重要なアクティビティの記録をファイルに保持します。開発者とシステム管理者が、事後に特定のソフトウェアで何が起こったのかを知るのに役立つため、何でもログファイルに保存できます。ログファイルは、セキュリティ志向の人が特定のリソースへのアクセスを確認するためにも使用されます。ネットワーキングまたはメッセージングでは、ログファイルは、後で参照できるようにメッセージが送受信された時間を記録します。
定義上、ログファイルは、更新される頻度と冗長性に応じてサイズが大きくなり続けます。それらの目的を果たすために、それらは通常、追加モードで開かれ、トラブルシューティングとフォレンジックに役立つタイムスタンプが含まれています。ただし、ファイルサイズが大きいと、システムと人間のレビュー担当者の両方にとってログファイルの操作が面倒なプロセスになるため、これは問題を引き起こします。ログファイルを維持できるように、ログはローテーションされます。簡単に言うと、古いファイルを閉じた状態で新しいファイルを開き、デザインの好みに応じて保持または削除します。これにより、ログがパーティション全体を埋め尽くし、その過程でシステムがひざまずくのを防ぎます。近くのシステムでログローテーションが機能していることに気付いたかもしれません。 boot.log
の日付を見てください ファイル。
この場合、特定の条件が満たされると、現在のファイルの名前が変更され、日付が追加されて識別および追跡され、元の名前の新しいファイルが開かれ、着信ログメッセージを受信できるようになります。
Linuxへのログイン(rsyslogd)
ご想像のとおり、説明のために使用しているCentOS 7サーバーなどのLinuxシステムへのログインは、デーモンを使用してログを作成します。 Rsyslogd
は信頼できる古いサービスの名前であり、オープンソースです。実際、それほど古くはありません。これは、元のsyslog
の改良版です。 デーモンであり、ログを迅速に処理してIPネットワーク内の任意の場所に転送する機能を備えています。 syslog
は別として およびrsyslog
、syslog-ng
があります 、これはログを処理するためのさらに別のデーモンです。デフォルトのログハンドラーは、選択したディストリビューションによって異なります。 Rsyslog
多くのRedHatベースのディストリビューションにデフォルトで付属しています。次のコマンドを実行して、システム上の存在とバージョンを確認します。
rsyslogd -v
デーモンなので、systemd
を使用することで、アクティブであることを確認できます。 次のように:
systemctl status rsyslog
何らかの理由で実行されていない場合は、systemd
から起動できます。 。
[編集者注:多くの新しいシステムでは、rsyslogdがログ用のジャーナルに置き換えられています。ロギングのニーズを処理するために、いずれか、または両方を選択できます。詳細については、ディストリビューションのドキュメントを参照してください。この記事では、rsyslogdを使用していることを前提としています。]
ログローテーション
Logrotate
はLinuxユーティリティであり、そのコア機能は-それを待つ-ログをローテーションすることです。デフォルトのOSインストールの一部としてインストールされていない場合は、次を実行するだけでインストールできます。
yum install logrotate
バイナリファイルは/bin/logrotate
にあります。 。
logrotate
をインストールする 、新しい構成ファイルが/etc/
に配置されます ユーティリティの実行時の一般的な動作を制御するディレクトリ。また、オーダーメイドのログローテーション要求用のサービス固有のスナップイン構成ファイル用のフォルダーが作成されます。これについては少し後で詳しく説明します。
毎日のcronジョブ
cron
ユーティリティを開始するジョブが毎日実行されます。これは、標準のcron
でユーティリティを呼び出すことで実現されます。 毎日の仕事のためのフォルダ。呼び出しの詳細はこの記事の範囲外ですが、呼び出しはlogrotate
を実行する単なるBashスクリプトであると言えば十分です。 バイナリ、エラーが発生した場合の対処方法をシステムに指示します。
標準のログファイルの場所
Linuxシステムのログは、権限が許可されている場所であればどこにでも配置できます。ただし、サイズとコンテンツは絶えず変化しているため、定義上、ファイルシステム階層では/var/log/
に保持されるように規定されています。 ディレクトリ。
以下のスクリーンショットは、私の/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
など、所有者パッケージのないログファイル用のディレクティブがあります。 およびその他のシステムログファイル。 man
ページにはさらに多くのディレクティブがあります。より具体的なローテーションのニーズがあるユーザーには、ページを確認することを強くお勧めします。
/etc/logrotate.d
幸い、私は/etc/logrotate.d
でかなり話をしました。 ディレクトリなので、あまり面倒なことはしませんが、このディレクトリの内容を紹介して、以前に共有したアイデアを持ち帰りましょう。
そして、念のため、Samba構成ファイルを見てみましょう。
logrotate.conf
とどれほど似ているかわかりますか ?この作品にカーテンを描く前に、このファイルのいくつかのディレクティブを実行してみましょう:
/var/log/samba/*
-ローテーションするログファイル。この場合、Sambaログディレクトリ内のすべてのログファイルです。
notifempty
-ファイルが空の場合はローテーションしないように指示します。
olddir /var/log/samba/old
-古いローテーションされたログを保存する場所。
missingok
-logrotate
を停止します ログファイルが欠落している場合にエラーをスローしないようにします。
copytruncate
-ログファイルを閉じないでください。コピーを作成します。これは、ローテーションされ、名前が変更されたファイルになり、ログファイルをゼロサイズに切り捨てます
sharedscripts
が何であるかを推測できますか ディレクティブはしますか?推測する必要はありません-man
に相談してください ページ。
まとめ
うまくいけば、これでログの管理を開始して実行するのに十分です。 Logrotate
シンプルでありながら強力なオープンソースローテーションユーティリティです。次の投稿まで、ハッピーローテーション!
[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]