Computer

サーバー上のログを見る3つの方法

2020年3月7日

ウェブサイトを運営したりとサーバーを運用していると、レンタルサーバーやVPS、クラウドサーバーなど、サーバー上にあるログファイル(アクセスログ、エラーログなど)を読みたくなることがあります。

しかしサーバーはLinuxなどUNIXベースのOSを実行していることがほとんどで、ログファイルを読むにもコマンドラインで操作をしないといけません。

本ページは、たった二つのコマンド(tailとless)でSSHなどのコマンドライン上でログファイルの見方を紹介します。これだけ知っておけば十分だと思う内容に限定しているので、この機会にぜひ覚えてしまいましょう。

tail -f <LOG_FILE>

tailコマンドは、テキストファイルの「尻尾」つまり最後の部分だけを表示するコマンドです。tailコマンドは「-f」オプションをつけると、ログファイルが開きっぱなしの状態になり、新しいメッセージが書き込まれると即座に画面に出力されます。

tail -f /var/log/httpd/access_log

これで新しいリクエストがあったら即座に画面に表示されます。Ctrl +C を押すとログ出力が停止します。

この方法はもっともポピュラーな方法ですが、ログファイルに書き込まれる内容が多いときは内容を追うのは困難を極めます。

tail -f <LOG_FILE> | grep <SEARCH_TEXT>

これは先ほどのコマンドの応用で、特定の文字列が含まれる行だけを表示させます。

以下の例は、アクセスログから「192.168.2.10」という文字列が含まれた行だけを画面に出力させる例です。

tail -f /var/log/httpd/access_log | grep 192.168.2.10

grep コマンドのパラメータを書き換えることで、任意の文字列を検索できます。

この場合も、Ctrl +C を押すとログ出力が停止します。

lessコマンド

次に紹介するのはlessコマンドです。ファイルを開くには以下のコマンドを使用します。

less /var/log/httpd/access_log

less は実行中にコマンドを入力することでファイル内を移動したり検索したりさまざまなことができます。しかしここでは、よく使うコマンドに限定して紹介します。

lessの操作コマンド

q  = less コマンドを終了する(quit)

BackSpace = 入力中のコマンドを削除する

G  = ファイルの一番下に移動する

g  = ファイルの先頭に移動する

  = 一行上に移動する

  = 一行下に移動する

b  = 1ページ戻る(back)

f  = 1ページ進む(forward)

/  = 前方検索。/の後に検索したい文字列を入力する。例: /Apple

?  = 後方検索。?の後に検索したい文字列を入力する。例: ?Apple

n  = 検索中に次のマッチした文字列に移動する(next)

N  = 検索中に前のマッチした文字列に移動する

-I  = 検索の大文字小文字を無視させる(ignore)。一度ESCをしてコマンドモードに戻ってから入力する。

文字だけで読んでもピンとこないかもしれませんので、実際にサーバー上で試してみることをおすすめします。

less コマンドのマニュアルをみると数え切れないくらいのコマンドがありますが、ここでは最重要のものだけを厳選しているので、この機会に覚えてしまいましょう。じつは僕自身もここで挙げたコマンドくらいしか知りませんが、これだけでサーバーアプリの開発やトラブルシューティングには事足りています。

ローカルPCにダウンロード

ただ、本記事の目的はコマンドラインでログを閲覧することなのですが、どうしても使い慣れない場合は、SFTPなどを使ってサーバー上のログファイルを一度ローカルPCダウンロードして、使い慣れているテキストエディタで閲覧するのもいいでしょう。

状況によってはログファイルをローカルPCにダウンロードしたほうが効率がいい場合もありますので、これはケースバイケースともいえます。

とはいえ、ちょっと内容を見るだけなのに毎回ダウンロードしていたら効率的ではないので、コマンドラインでログを閲覧できるようになっておきましょう。

-Computer

Copyright© dawaan , 2020 All Rights Reserved.