GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでリアルタイムにログを監視する3つの方法

Linuxでファイルを表示する方法を知っています。この目的には、catコマンドまたはおそらくlessコマンドを使用します。

これは、静的コンテンツを含むファイルに適しています。ただし、ログファイルは動的であり、その内容は時間とともに変化します。ログを監視するには、ログファイルの内容が変化するのを監視する必要があります。

ログファイルの内容をリアルタイムでどのように確認しますか?テールはこの目的で最も人気のあるコマンドですが、他にもいくつかのツールがあります。このチュートリアルでそれらを紹介します。

方法1:tailコマンドでログファイルを監視する

tailコマンドは、実際のログファイルを表示するために非常に人気があるため、システム管理者は「ログファイルの末尾」という用語を使用します。

tailコマンドは、基本的にファイルの行を最後から表示するために使用されるため、「tail」という用語が使用されます。

-fを使用できます ファイルの末尾をたどるオプション。これは、ファイルに追加された新しい行を継続的に表示し続けることを意味します。

tail -f location_of_log_file

ログファイルの末尾を停止するには、Ctrl+Cを使用します ターミナルショートカット。

テールとgrep

大丈夫!したがって、tailコマンドは、実際のファイルの変更を表示することで問題を解決します。ただし、リアルタイムで非常に多くの急激な変化が発生しているときにログファイルを継続的に監視することは、あまり役に立ちません。

ログファイルを監視するときに、特定の用語を探すことがよくあります。入ってくる新しいラインの洪水の中でそれを見つけることはほぼ不可能です。

作業を簡単にするには、tailコマンドとgrepコマンドを次のように組み合わせます。

tail -f log_file | grep search_term

これはいいですよね?もう少し良くしましょう。

検索された用語の行だけでは、必要な詳細が明らかにならないことがよくあります。これが、grepコマンドを使用して、オプション-Cで検索された用語の前後に数行を表示する理由です。 。

tail -f log_file | grep -C 3 search_term

これで、検索語に一致する行とその前後の3行が表示されます。これにより、何が起こっているのかをよりよく把握できます。

それをさらに良くしたいですか?複数の検索用語をgrepして、大文字と小文字を区別しない検索にすることもできます:

tail -f log_file | grep -C 3 -i - E 'search_term_1|search_term_2'
ログローテーションを使用したファイルのテーリング

エンタープライズサーバーで作業している場合は、ログがローテーションされる可能性があります。これは、現在のログファイルが特定のサイズに達した後、名前が変更されて圧縮されることを意味します。

ログファイルをリアルタイムで追跡している場合、これは問題を引き起こします。デフォルトでは、tailコマンドはファイル記述子で機能します。現在のログファイルをローテーションすると、tailコマンドは、変更を記録しないアーカイブログファイルを指すようになります。

解決策は、ログファイルをその名前で追跡することです。このように、ログローテーションが行われる場合でも、テールは現在のログファイルを指します(名前は変更されないため)。

tail --follow=name log_file | grep -C 3 -i - E 'search_term_1|search_term_2'

これは今ではずっと良くなっています。次回ログファイルを調整するときは、この方法でログファイルをより効果的に監視できます。

テールはログファイルをリアルタイムで監視するのに便利ですが、同時に複数のログファイルを分析する必要がある場合はどうでしょうか。答えは次のセクションにあります。

テールを使用して複数のログファイルを監視する

これはLinuxシステムで機能するはずです。 tailコマンドを使用すると、複数のログファイルを同時に監視できます。この方法でファイルのパスを指定するだけです:

tail -f log_file_1 -f log_file_2

さまざまなログソースを区別できるように、ファイル名とともにリアルタイムの変更が表示されるようになります。

multitailと呼ばれるユーティリティを使用して、一度に複数のログファイルを表示するための少し良い方法があります。

方法2:マルチテールを使用して複数のログファイルを一度に監視する

マルチテールは、その名前が示すように、一度に複数のファイルを表示するために使用されます。

大したことは何ですか? tailコマンドでも同じことができますよね?

ただし、マルチテールには、従来のテールコマンドに比べていくつかの利点があります。分割ビューでファイルを表示し、さまざまな行と列にさまざまなファイルを表示することもできます。

テールはすべてを同じビューで表示し、それを追跡するのが難しくなることを忘れないでください。マルチテールは、画面コマンドのような分割ビューを提供することで、この問題を克服します。

マルチテールはtailのような必須のコマンドではなく、使用する前にインストールする必要がある場合があります。

複数のファイルを提供できますが、一度に3つ以上のファイルを追跡するのは難しいと思います。

multitail log_file_1 log_file_2

デフォルトでは、multitailはtail -fと同じように機能します 。最後の100行が表示され、リアルタイムビューに表示されます。デフォルトでは、ビューが行に分割されます。

bを押してセレクタウィンドウを開き、選択したログファイルを選択して表示し、スクロールしてさらに詳細な分析を行うことができます。

qを押して終了します マルチテールのあらゆる種類のビューから。

次のようにビューを列に分割できます:

multitail -s 2 log_file_1 log_file_2

-sの間には必須のスペースがあります と列の数。

マルチテールは他のいくつかのことを行うことができますが、このチュートリアルではそれらの詳細については説明しません。

これまで、ログファイルを監視する2つの方法を見てきました。実生活でファイルの変更を確認する別の、しかしあまり一般的ではない方法があり、それはlessコマンドを使用しています

方法3:少ないコマンドでログファイルの変更をリアルタイムで表示する

lessコマンドは、画面を乱雑にすることなくテキストファイルを読み取るためのものです。また、リアルタイムで変更されたファイルの読み取りにも使用できます。

オプション+F テキストファイルに加えられた変更を追跡することが少なくなります。

less +F log_file

ログファイルが開き、変更が書き込まれ、リアルタイムで表示されます。

Ctrl + cを押して中断し、qを押してビューを終了します。

この方法では、tailコマンドとは異なり、画面を乱雑にすることなく、ログの変更をすばやく表示できます。

結論

Linuxでログファイルを監視するこの方法は、従来のテキストベースのログファイルで機能します。システムログについては、syslogはまだ存在しますが、多くのLinuxディストリビューションはジャーナルログに切り替えており、ジャーナルログの分析を表示するには、journalctlコマンドを使用する必要があります。

それとは別に、ダッシュボードとグラフを使用したより深いレベルでのログ分析のためのGraylogのような他の洗練されたツールがあります。詳細については、他の記事をご覧ください。

Linuxでのリアルタイムログ監視に関するこの一見簡単なトピックから、いくつかの新しいことを学んだことを願っています。フィードバックは大歓迎です。


Linux
  1. Linux のファイル アクセス コマンド – find、sort、head、tail

  2. OS X と Ubuntu でファイルシステムをリアルタイムで見る

  3. リモート Linux サーバーでのログの表示

  1. Linuxlogrotateコマンドを使用してログをローテーションおよびアーカイブします

  2. tailコマンドを使用してログをリアルタイムで表示する方法

  3. Linux でのリアルタイム オーディオ分析

  1. Linuxログファイルを表示および読み取る方法

  2. Linux はリアルタイムクロックをどのように使用しますか?

  3. `tail -f` のリアルタイム出力にフィルタを適用する方法は?