数分前に重大なサービスが機能停止し、あなたが事態を収拾するために呼び出されたと想像してみてください。サービスを再起動しようとしますが、動かない。エラーメッセージはないものの、最も重要なのは、停止する前に何をしていたかの形跡がないことです。百に一つの原因が頭をよぎり、どの方向に進むべきかわからないことに気づきます。もしかしたら、サーバー全体を再起動するかもしれません。ただ、もしかしたら。
このようなシナリオは、 ロギング が役に立つ多くの状況の一つです。通常、実行中のソフトウェアは、後々のために、実行に関連する重要な活動の記録をファイルに保持します。ログファイルには何でも保存でき、開発者とシステム管理者双方が、後で特定のソフトウェアに何が起こったかを知るのに役立ちます。ログファイルは、セキュリティ関係者が特定の資源へのアクセスを確認するためにも使用されます。ネットワーキングやメッセージングでは、ログファイルは、後で参照できるように、メッセージが送信または受信された時刻を記録します。
ログファイルは、定義上、更新頻度と詳細度に応じてサイズが増加し続けます。その目的を果たすために、通常は追記モードで開かれ、トラブルシューティングとフォレンジックに役立つタイムスタンプが含まれます。しかし、ファイルサイズが大きくなると、システムと人間による確認の両方にとってログファイルの操作が煩雑になるという問題が生じます。ログは、ログファイルを扱いやすくするために ローテーション されます。簡単に言えば、古いファイルは閉じられて保持または削除され、新しいファイルが開かれます(設計上の好みによる)。これにより、ログがパーティション全体を埋め尽くし、システムをダウンさせてしまうのを防ぎます。お近くのシステムでログローテーションが機能しているのに気づいたことがあるかもしれません。 boot.log ファイルの日付を見てみましょう。
この場合、特定の条件が満たされると、現在のファイルは日付を付加して名前が変更され、識別および追跡されます。そして、元の名前の新しいファイルが開かれ、着信ログメッセージを受け入れる準備が整います。
Linux でのロギング ( rsyslogd)
ご想像のとおり、私が例として使用している CentOS 7 サーバーなどの Linux システムでのロギングは、ロギングを容易にするデーモンに依存しています。 Rsyslogd は信頼できる古いサービスの名前であり、オープンソースです。実はそれほど古くはありません。これは、元の syslog デーモンの改良版であり、ログを迅速に処理し、 IP ネットワーク内の任意の場所に転送する機能を備えています。 syslog と rsyslog の他に、ログ処理のための別のデーモンである syslog-ng があります。デフォルトのログハンドラーは、選択するディストリビューションによって異なります。 Rsyslog は、多くの Red Hat ベースのディストリビューションでデフォルトで提供されています。システムにその存在とバージョンを確認するには、次のコマンドを実行します。
rsyslogd -v
デーモンであるため、次のように systemd を使用してアクティブであることを確認できます。
systemctl status rsyslog
何らかの理由で実行されていない場合は、 systemd 経由で開始できます。
[ Editor's Note: 多くの新しいシステムでは、ロギングのために rsyslogd が journald に置き換えられています。ロギングのニーズに合わせて、どちらかのオプション、あるいは両方を選択できます。詳細については、ご使用のディストリビューションの ドキュメント を参照してください。この記事では、 rsyslogd を使用していることを前提とします。 ]
Logrotate
Logrotate は、ログをローテーションするという中核機能を備えた Linux ユーティリティです。デフォルトの OS インストールの一部としてインストールされていない場合は、次のコマンドを実行するだけでインストールできます。
yum install logrotateバイナリーファイルは /bin/logrotate にあります。
logrotate をインストールすると、ユーティリティが実行されるときの一般的な動作を制御するための新しい設定ファイルが /etc/ ディレクトリーに配置されます。また、サービス固有のスナップイン設定ファイル用のフォルダーが作成され、オーダーメイドのログローテーション要求に対応します。これについては、後ほど詳しく説明します。
日次 cron ジョブ
ユーティリティを起動する cron ジョブが毎日実行されます。これは、日次ジョブ用の標準の cron フォルダーにユーティリティへの呼び出しを配置することで実現されます。呼び出しの詳細はこの記事の範囲外ですが、呼び出しは単なる Bash スクリプトであり、 logrotate バイナリーを実行し、エラーが発生した場合にシステムが何をすべきかをシステムに伝えるだけで十分です。
標準のログファイル場所
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 Hat Enterprise Linux technical overview ]
執筆者紹介
Edem is currently a sysadmin with a financial services institution where he works primarily with Windows and Linux systems. He also administers VMware Virtualization environments daily. With interests in Automation, IP Telephony, Open Source Alternatives and Information Security, Edem dabbles with technology on any level. He likes to break systems to understand them.
チャンネル別に見る
自動化
テクノロジー、チームおよび環境に関する IT 自動化の最新情報
AI (人工知能)
お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート
オープン・ハイブリッドクラウド
ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。
セキュリティ
環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報
エッジコンピューティング
エッジでの運用を単純化するプラットフォームのアップデート
インフラストラクチャ
世界有数のエンタープライズ向け Linux プラットフォームの最新情報
アプリケーション
アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細
仮想化
オンプレミスまたは複数クラウドでのワークロードに対応するエンタープライズ仮想化の将来についてご覧ください