サーバーのパフォーマンスに問題が発生した場合、まず最初に行うべきことはLinuxのログを確認することです。システムログには、カーネルや各種サービスなど、オペレーティングシステムのさまざまなコンポーネントからの役立つ診断メッセージが記録されているため、そこで障害の原因を見つけることができるでしょう。
ログ内のすべてのメッセージは、ユーザー、認証、サービスのシャットダウン、アプリケーションの障害など、オペレーティング システム内の特定のイベントの結果として生成されます。これらのイベントは、その重要度に応じて優先順位が異なります。Linux には次の種類のイベントがあります。
emerg- 失敗、最高優先度;alert- 緊急警告;crit- 重大なイベントerr- 通常のエラー;warn- 通常の警告notice- 通知;info- 情報メッセージ;debug- デバッグ情報
現在、Linuxにおける主要なログ収集サービスはrsyslogとsystemd-journaldです。これらはほとんどの最新のディストリビューションパッケージに含まれており、それぞれ独立して動作します。
rsyslog
このサービスのログは、「 /var/log/」フォルダに通常のテキストファイル形式で保存されます。ログメッセージは、イベントの種類に応じて異なるファイルに格納されます。たとえば、「 /var/log/auth.log」にはシステムにおけるユーザーの認証情報が、「/var/log/kern.log 」にはカーネルメッセージが保存されます。ファイル名は配布パッケージによって異なる場合があるため、設定ファイル「 /etc/rsyslog.d/50-default.conf 」を見て、各ファイルの場所を確認してみましょう。
これらのルールは、各タイプのログメッセージを含むファイルを表示します。左側には「[ソース].[優先度]」の形式でメッセージの種類が表示され、右側にはログファイルの名前が表示されます。メッセージの種類を書き込む際に「*」文字を追加できます。これは空の値、つまりリストから削除される「なし」を意味します。最初の 2 つのルールを詳しく見ていきましょう。
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
最初のルールは、認証メカニズムから受信したすべてのメッセージが「 /var/log/auth.log 」ファイルに記録されることを意味します。すべての認証試行(成功したものと失敗したもの両方)がこのファイルに記録されます。2番目のルールは、認証に関連するメッセージを除くすべてのメッセージが「/var/log/syslog 」ファイルに記録されることを示しています。これら2つのファイルは通常、最もよく使用されます。次のルールは、カーネルログ「 kern.*」とメールサービスログ「mail.*」を保存するパスを定義します。
ログファイルは、 less、cat、tailなどのテキストエディタを使って開くことができます。「 /var/log/auth.log」ファイルを開いてみましょう。
less /var/log/auth.log
ファイルの各行は、アプリケーションまたはサービスから受信した個別のメッセージです。ソースに関係なく、すべてのメッセージは 5 つの形式を持ち、XNUMX つの部分で構成されます。スクリーンショットで強調表示されたメッセージを例に挙げてみましょう。
- メッセージのタイムスタンプ - 「12月06日 18:33:XNUMX」
- メッセージを送信したコンピュータの名前 - 「vds」
- メッセージを送信したアプリケーションまたはサービスの名前 - 「sshd」
- プロセスID - [653]
- メッセージ テキスト - 「188.19.42.165 ポート 2849 ssh2 からの mihail のパスワードが承認されました」
これは SSH への接続が成功した例です。
ログイン試行が失敗すると、次のようになります。
このファイルには、高度な権限を持つコマンドも記録されます。
/var/log/syslogファイルを開いてみましょう
スクリーンショットで強調表示されているメッセージは、ネットワーク インターフェイスのシャットダウンに関するメッセージです。
長いテキストファイルから情報を検索するには、grepユーティリティを使用してください。pptpdサービスから受信したすべてのメッセージは、「/var/log/syslog 」ファイルに保存されています。
grep 'pptpd' /var/log/syslog
診断中は、ファイルの最後の数行を表示できるtailユーティリティを使用できます。「 tail -f /var/log/syslog」コマンドを使用すると、ログの記録をリアルタイムで監視できます。
rsyslogサービスは非常に柔軟で強力です。ローカルシステムだけでなく、エンタープライズレベルのログ収集にも使用できます。詳細なドキュメントは公式ウェブサイト(https://www.rsyslog.com/ )でご覧いただけます。
Linux でのログローテーション
ログ記録は継続的に行われるため、ファイルサイズは常に増加します。ローテーションメカニズムにより、古いログの自動アーカイブと新しいファイルの作成が保証されます。ルールに応じて、ローテーションは毎日、毎週、毎月、またはサイズ制限に基づいて実行されます。新しいログが作成されると、古いログは削除されるか、メールで送信されます。ログのローテーションは、logrotateユーティリティによって実行されます。主要な設定は「 /etc/logrotate.conf 」ファイルにあります。ファイルの内容は「 /etc/logrotate.d/」フォルダでも処理されます。
新しいルールはメインの設定ファイルに記録できます。ただし、「 /etc/logrotate.d /」に別のファイルを作成するのが最善です。デフォルトでは、このディレクトリにはいくつかのファイルがあります。
rsyslogサービスのログのローテーションルールが含まれているファイル「/etc/logrotate.d/rsyslog 」を見てみましょう。
まず、ルールにはログ ファイルへのパスが含まれ、その後にすべてのガイドラインが曲線括弧で囲まれます。
- 回転7 - 保存するファイルの数 - 7
- daily - 毎日新しいファイルを作成する
- 圧縮する - 古いファイルを圧縮してアーカイブする
スクリーンショットを見ると、「/var/log/ 」フォルダにはメインログ「 syslog 」と7つのアーカイブがあり、これは設定ファイルのルールと一致していることがわかります。
logrotate の詳細については、マニュアルを参照してください。「man logrotate」コマンドを実行してください。
Linux ログの収集 - journald
ログ収集サービスsystemd-journaldは、初期化システムsystemdの一部です。Linux のログファイルは「 /var/log/journal/ 」に特殊な形式で保存され、 journalctlユーティリティを使用して開くことができます。レコードの形式はrsyslogとまったく同じです。
属性を指定せずにjournalctlコマンドを実行すると、すべてのレコードが表示されますが、大きなログには適していません。このユーティリティのオプションをいくつか見ていきましょう。
journalctl -b- 前回の開始以降のすべての記録を表示journalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- 特定の期間内の記録を表示するjournalctl -u pptpd- 特定のサービスの記録を表示するjournalctl -k- カーネルメッセージを表示journalctl -p err- 特定の優先度のメッセージを表示します。この場合、優先度の高いメッセージ (crit、alert、emerg) です。journalctl -f- メッセージをリアルタイムで表示
より柔軟に対応するために、これらのオプションを組み合わせることができます。pptpdサービスのすべてのエラーを表示してみましょう。
journalctl -u pptpd -p err
実行可能ファイルへのパスを属性として指定すると、このユーティリティはそのファイルによって送信されたすべてのメッセージを表示します。2020年2月18日午前4時15分以降にファイル「/usr/bin/sudo」によって送信されたすべてのメッセージを表示してみましょう。実際には、より高い権限で実行されたすべてのコマンドが表示されます。
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
ログファイルが占めるディスク容量を調べるには、次のコマンドを実行します。
journalctl --disk-usage
ログファイルを1Gbに制限するには、次のコマンドを実行します。
journalctl --vacuum-size=1G
バイナリファイルを開く
それでは、すべてのログイン試行が保存される「 /var/log/ 」フォルダ内の特別なファイルを見てみましょう。これらのファイルはバイナリファイルであり、専用のプログラムでしか開くことができません。
/var/log/wtmpには、ログイン成功に関する情報が含まれています。last ユーティリティを使用して開いてください。
/var/log/btmp - ログイン失敗の試行履歴がすべて記録されています。lastb コマンドで高度な権限を指定して開くことができます。-nオプションは、ファイルの末尾から表示する行数を指定します。
/var/log/lastlog - 各アカウントレコードの最終ログイン時刻が記録されています。lastlogコマンドで開くことができます。