MAGAZINE

キャリテク!マガジン

コラム

障害対応に強くなろう(5)WEBサーバーのログ調査もこわくない

こんにちは。株式会社パイプラインの濱田です。

前回はgrepコマンドによるログ調査の基本を取り上げましたが、今回はより実践的にWEBサーバーのログ調査にフォーカスしてみたいと思います。

WEBサーバーのログの種類

ざっくりとした説明にはなってしまいますが、WEBサーバーには

  • アクセスログ
  • エラーログ

の2種類があると思っていただければ、というところなのですが、アクセスログは原則としてサーバーが処理を行ったすべてのログを記録するのに対して、エラーログはWEBサーバーがリクエストを処理した結果発生したエラーを記録します。また、WEBサーバーを再起動した際もエラーログに書き込まれますので、障害発生時にはまずエラーログを確認するクセをつけましょう。

ここで1点注意が必要なのは、どちらのログも、あくまで「WEBサーバーがリクエストを受け取った」結果がログに書き込まれるので、ブラウザからWEBサーバーまでの間のネットワーク障害や、WEBサーバー自身がファイアウォールでhttp https接続を許可していないと、WEBサーバーがリクエストを受け取れないので、そもそもログに書き込まれません。

WEBサーバーの一般的なログフォーマット

WEBサーバーソフトウェアとして高いシェアをもつApacheとNginxでは、それぞれの設定ファイルでログフォーマットを設定できるようになっています。ログファイルはスペースなどでいくつかのフィールドに区切られ、アクセスログの場合は

  • クライアントのIPアドレス
  • リクエストURI
  • ステータスコード
  • コンテンツの容量 (バイト数)
  • リファラ (参照元サイト)
  • ユーザーエージェント (OSやブラウザの種類やバージョンなど)

が記録されます。また、エラーログにおいてはエラーをおこしたファイルを取り扱っていたプロセスIDやログメッセージなど、障害原因を調査するために有用なログが記録されます。詳細は以下リンクを参考にしてみてください。

例えば、あるユーザーから /path/to/index.php が表示されない、表示がおかしいといった障害報告があった場合、 アクセスログやエラーログから /path/to/index.php の文字列を検索してみます。障害報告の該当時刻付近に/path/to/index.php のログが記録されている場合、ステータスコード、コンテンツの容量がどう記録されているかを調べます。

そもそも /path/to/index.php ファイルが無ければ 404 Not Foundエラーが返され、PHPファイルの文法がおかしい、などのエラーは500 Internal Server Errorを、また、WEBサーバーの接続上限数を超えるなど、サービス利用不可とWEBサーバーが判断した場合は503 Service Unavailableを返します。このように、3桁の数字とともにレスポンスの意味を表現するコードをステータスコードといい、HTTPのステータスコードはRFC 7231などで定義されています。次回はHTTP ステータスコードについて取り上げます。

まずはエンジニアデビューしたい、という方は、3ヶ月間学びながらお給料が貰える AltX キャリテク!の門を叩いてみてはいかがでしょう。 https://www.kcct.co.jp/careetec/

facebook シェアシェア
LINE シェアシェア