|目次|手順 0|1|2|3|A|B|C|D|E|F|G|H| I |J|K|L|M|N|O|P|Q|
作成日:2001年09月05日、更新日:2004年04月10日 作成:鷹の巣WWWサーバーであるAN HTTPd および Apache でのログファイルの読み方について説明します。
AWStatsでも設定ファイルawstats.confでLang="jp"とすれば、そこそこ日本語化され、使えるみたいです。このサイトのアクセス解析は、AWstatsによるアクセス解析結果をご参照願います。
エラーだけに限定したログファイルの読み方でしたら、いとのページさんのAN HTTPDエラーメッセージ集に記載されている内容を ご覧いただく方が良いのですが、ここでは、ログファイル全体の読み方について述べさせて頂きます。
記載内容の他に有用な情報をご存知の方または誤り等を見つけられた方は、恐れ入りますが、 「鷹の巣」の「掲示板」か「電子メール」にてご連絡をお願いします。
更新記録
下表1は、正常なログファイルの例で、表1.1は、行番号1番の書式の説明を行っています。
| 行番号 | ログファイルの記録内容 |
|---|---|
| 1 | *.*.*.net.or.jp - - [01/Sep/2001:00:14:25 +0900] "GET /backg157.jpg HTTP/1.1" 200 3149 |
| 2 | *.*.*.net.or.jp - - [01/Sep/2001:00:14:29 +0900] "GET /report/report.cgi?http://search.*.jp/bin/search?p=IP HTTP/1.1" 200 70 |
| 3 | *.*.*.net.or.jp - - [01/Sep/2001:00:14:25 +0900] "GET /count/dayx.cgi?gif HTTP/1.1" 200 2564 |
| 4 | *.*.*.net.or.jp - - [01/Sep/2001:00:14:25 +0900] "GET /count/dayx.cgi?today HTTP/1.1" 200 1019 |
| 5 | *.*.*.net.or.jp - - [01/Sep/2001:00:14:25 +0900] "GET /count/dayx.cgi?yes HTTP/1.1" 200 987 |
| 6 | *.*.*.net.or.jp - - [01/Sep/2001:00:14:24 +0900] "GET / HTTP/1.1" 200 42848 |
| 7 | *.*.*.net.or.jp - - [01/Sep/2001:00:14:24 +0900] "GET /ts_bnr1.gif HTTP/1.1" 304 0 |
Apacheでログ形式をcombined log format (NCSA combined/XLF/ELF log format)に設定している場合は、Referer page(アクセス元Webページ)やUser agent(ブラウザの種類等)が一行に記入されます。
注) 行番号の説明
| 記録内容 | 記録内容の説明 |
|---|---|
| *.*.*.net.or.jp | アクセス元のIPアドレスまたはリモートホスト名(フルドメイン名) |
| - | アクセス元のユーザ名(クライアントがidentをサポートしていない場合は、「-」となります。) |
| - | アクセス元のユーザ名(ユーザ認証を行っていない場合は、「-」となります。) |
| 01/Sep/2001:00:14:25 +0900 | アクセスの日付と時間と標準時よりの時間差で、左より日/月/年:時:分:秒 時間差の順。 |
| GET | HTTPの命令(methods)GET=情報を得る。対象は、文書頭部(ヘッダ)と文書体部(ボディ)。 表3参照。 |
| /backg157.jpg | 要求された情報のファイル名で、backg157.jpgは、ホームページ背景の壁紙。 |
| HTTP/1.1 | ハイパーテキストトランスファプロトコル改版1.1を示す。 |
| 200 | 状態番号(ステータスコード)200=正常終了。表5参照。 |
| 3149 | 情報量(バイト) |
300番代の状態コード番号(表4参照)は、別の追加動作が必要か別の追加動作を実行していることを表しています。
これらの状態は、要求情報の用途や状態により生じるうるものであり、自宅サーバーの範囲で言えば、WWWサーバーの不具合ではなく、 Webサイトの構成や構造により生じます。特に表5の「301」「302」の状態は、ホームページのURLやURIの移動や参照切れ(リンク切れ)を 表すものであり、Webサイトの構成や構造上に不具合があると言えます。
表4に示しますように、状態番号(ステータスコード)の最初に桁が4~5のエラーの場合、何らかの処置を行う必要があります。 この項では、軽微なエラーであるのに勘違いを起こしやすいものについて取り上げます。
下表2は、404エラー(ドキュメントがないか、読み込みができません。)等のログを調べた結果の一例で、 ワーム等の不正アクセスを除いています。
| 行番号 | 記録内容(先頭部分*.*.*.net.or.jp - - [dd/mm/yyyy:hh:mm:ss +0900] を省略) | エラー内容の説明 |
|---|---|---|
| 1 | "GET /favicon.ico HTTP/1.1" 404 XXX | IE5.0以降のお気に入り用アイコン(シンボル)ファイルのfavicon.icoがない。 |
| 2 | "GET /robots.txt HTTP/1.1" 404 XXX | robotがロボットよけファイル(robots.txt)を読み込もうとした。 |
注) 行番号の説明の追記
favicon.icoというファイルは、ホームページのURLが、ブラウザIE5.0以上の「お気に入り」に登録された場合に表示するアイコンで、 このアイコンを用意していないと404エラーが発生します。(中田さんに教えて頂きました。どうも有難うございました。) エラーの発生を防ぐには、「よろづ、ぢうごや」さんで適当なもの(ICON)を入手し、ドキュメントルートに入れておけばよいと考えます。 詳しくは、favicon.icoの正体?をご覧願います。「JP415022 - [IE5] お気に入りに表示されるアイコンをカスタマイズする」も参照。 また、逆に言えば、WWWサーバーに接続してきたブラウザがIE5.0以上で、このファイルをGETした場合は、ホームページが 「お気に入り」(ブックマーク)に登録されていることがわかります。
robotがロボットよけファイルをファイルの存在を確認せずに読み込もうとして、発生するエラーです。 このことから、robots.txt をGET(ホームページの読み込み)するログとHEAD(ホームページ更新状況のチェック)するログは、 ほぼ収集ロボットと考えて良さそうです。robots.txt を確認せずにGETするようなマナーの悪いロボットも存在しますので、念のため。
ロボットについては、あまり詳しく知らないのですが、「UserAgent - UserAgentのデータベースを作りましょう。」に収集ロボットの種類が記載されています。 古いデータですが、User-Agentについてのたわごとに収集ロボットの種類が記載されています。(このサイトは、hodogaya.org Web Pageさんより教えて頂きました。) 詳しくは、Googleで検索して下さい。
主要検索エンジンのUserAgentは、「WEB雑記2 USER-AGENT(サイトを訪れるユーザーエージェントについて)」に記載されています。
表2に示しました様にrobotがロボットよけファイル(robots.txt)を読み込もうとして、404エラー(ドキュメントがないか、読み込みができません。) が発生した場合は、特に問題視する必要はありません。しかし、ドキュメントルートのインデックスファイルから、参照(リンク)されている ファイルやSSIファイルやCGIファイル以外にGET命令等が実行されて、404エラーになる場合は、「不正なアクセス」と言えます。 不正なアクセスを行う者は、貴方のWWWサーバーのディレクトリ構造がわからずに適当なディレクトリ名とファイル名を指定してアクセスして 来ますので多くの場合404エラー(要求されたファイルがない。)ということになります。 ただ、綴りの入力ミスや以前に使用していたファイル名で削除されたものは、「不正なアクセス」から除外して考える必要はあります。
不正アクセス例)
8000番台でWebサーバーを運用しているryujinさんのサイトでは、プロキシサーバーの不正利用を試みるため、Apacheのログファイルに 以下の様なログが記録されました。(プロキシサーバーを運用されていない為、Apacheのログファイルに記録された。) vvv.xxx.yyy.zzz - - [16/Mar/2002:19:51:54 +0900] "GEThttp://www.intel.com/HTTP/1.1" 200 8636 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)" これは、不正利用者がブラウザIE4のプロキシサーバーの設定にryujinさんのサイトのIPアドレスと開放ポート番号を設定して、インテルに アクセスしたからです。(参考文献:掲示板 どうしてこんなログが残るのか? - ryujin 2002/03/18-03:16 No.1891)
| 命令 | 説明 | 備考 |
|---|---|---|
| GET | 情報を得る。対象は、文書頭部(ヘッダ)と文書体部(ボディ)。 | - |
| HEAD | 情報を得る。対象は、文書頭部(ヘッダ)。 | - |
| POST | 情報を新しく作る。(サーバーのスクリプトへデータを送る) | - |
| PUT | 情報の蓄積を目的として新しく情報を作る。(サーバーへデータを送る) | HTTP Ver.1.0ではオプション。 |
| DELETE | 情報を削除する。 | HTTP Ver.1.0ではオプション。 |
| TRACE | 診断情報を返答する。(サーバーやプロキシの動作の診断) | HTTP Ver.1.1より追加。 |
| OPTIONS | 使用できる命令(methods)やオプションの一覧を取得する | HTTP Ver.1.1より追加。 |
| CONNECT | プロキシでのトンネリング接続を行う。 | HTTP Ver.1.1より追加。 |
| LINK | 情報同士を関係付ける。 | HTTP Ver.1.1では廃止。 |
| UNLINK | 情報同士の関係付けの解除。 | HTTP Ver.1.1では廃止。 |
状態番号(ステータスコード)の最初に桁は、HTTPの応答の区分を定義しており、1~5の値がある。
| 区分 | comment | 説明 | エラー要因 |
|---|---|---|---|
| 1xx | Informational | 要求は、処理中。 | (エラーではない。) |
| 2xx | Successful | 要求は、正常終了。 | (エラーではない。) |
| 3xx | Redirection | 要求を完了するため、別の追加動作を行っている。 | (エラーではない。) |
| 4xx | Client Error | 間違った要求により、実行不能。 | クライアント側に起因するエラー。 |
| 5xx | Server Errors | 要求を実行できなかった。 | サーバー側に起因するエラー。 |
| コード | comment | 命令(methods) | 要求されるメタ情報 | 解説 |
|---|---|---|---|---|
| 100 | Continue | - | なし | 要求は、受け付けたが、処理は続行中。 |
| 101 | Switching Protocols | - | Upgrade-header | 要求のあった通信手順に切り替え中。 |
| 200 | OK | GET, HEAD, POST,TRACE | なし | 正常終了。 |
| 201 | Created | POST, PUT | URI-header | POST が成功。またはPUT が新しいオブジェクトを作成。 |
| 202 | Accepted | GET, HEAD, PUT, POST, DELETE | なし | 要求は、受付たが、処理未完了。 |
| 203 | Non-Authoritative Information | GET, HEAD, POST | なし | 応答情報中のメタ情報がローカルまたはサードパーティーから集められたものであることを示す。 例えば、リソースに関する注釈 (annotation) など。 |
| 204 | No Content | なし | サーバーは要求を受付けたが、返す情報がない。 | |
| 205 | Deleted | DELETE | なし | DELETE 成功。対象は、サーバーから削除された。 Ver.1.0のみ |
| 205 | Reset Content | - | なし | サーバーは、要求の取り消しを実行した。 Ver.1.1のみ |
| 206 | Modified | PUT | なし | PUT 成功。対象は、サーバーから更新された。 Ver.1.0のみ |
| 206 | Partial Content | - | Range-header | サーバーは、情報の一部を得た。 Ver.1.1のみ |
| 300 | Multiple Choices | GET, HEAD | なし | 要求された情報が複数存在する。 |
| 301 | Moved Permanently | GET, HEAD, POST, PUT | URI-header, Location | 要求された情報は、恒久的に移動した。誤記訂正 2002.11.4 |
| 302 | Moved Temporary | URI-header, Location | 要求された情報は、一時的に移動した。 | |
| 303 | See Other | - | なし | 要求された情報は、別のURIに存在する。 |
| 304 | Not Modified | 条件付きGET | なし | 要求を受付けたが、情報が更新されていない。 |
| 305 | Use Proxy | - | なし | 要求された情報は、プロキシを通してアクセスしなければならない。 |
| 306 | (Unused) | - | なし | 未使用。 |
| 307 | Temporary Redirect | - | なし | ? |
| 400 | Bad Request | GET, HEAD, POST, PUT,DELETE, LINK,UNLINK | なし | 要求を実行できない。(構文が不正) |
| 401 | Unauthorized | WWW-Authenticate | 情報の要求に認証を必要とする。または、認証の拒否。 | |
| 402 | Payment Required | なし | このコードは現在サポートされていない。将来用。 | |
| 403 | Forbidden | なし | 要求の拒否。認証が不完全。 | |
| 404 | Not Found | なし | 要求された情報(ファイル)がない。 | |
| 405 | Method Not Allowed | Allow | 要求は、許可されていない。 | |
| 406 | Not Acceptable | Content-Type, Content-Encoding, Content-Language | Accept、Accept-Encoding、Accept-Languageヘッダの要求条件に 不適合。 | |
| 407 | Proxy Authentication Required | Proxy-Authenticate | プロキシサーバで情報の要求に認証を必要とする。 または、認証の拒否。 | |
| 408 | Request Timeout | なし | サーバーが待機時間内にクライアントが要求を送れなかった。 | |
| 409 | Conflict | PUT | なし | 要求された情報は、現在の情報と矛盾している。 |
| 410 | Gone | - | なし | 要求された情報がサーバーにおいて有効ではなく、 転送先アドレスも不明。Web保守作業の補助用。 |
| 411 | Length Required | - | Content-length | 定義された情報の長さがない場合、サーバーは、情報の要求を 拒否。 |
| 412 | Precondition Failed | - | なし | 要求された頭部(ヘッダ)情報の前提条件が間違っている。 |
| 413 | Request Entity Too Large | - | なし | 要求された情報の結果が長すぎる。 |
| 414 | Request-URI Too Long | - | なし | 要求された情報のURIが長すぎる。 |
| 415 | Unsupported Media Type | - | なし | 要求された情報の結果が長すぎる。 |
| 416 | Requested Range Not Satisfiable | - | - | - |
| 417 | Expectation Failed | - | - | - |
| 500 | Internal Server Error | 全て | なし | 予期しないサーバーエラーのため、要求を実行できなかった。 |
| 501 | Not Implenmented | なし | サーバーは、要求された機能をサポートしていない。 | |
| 502 | Bad Gateway | なし | クライアントより見て、ゲートウエイまたはプロキシーサーバの 接続先サーバの応答が妥当でないことを示す。 注)1 | |
| 503 | Service Unavailable | Retry-After | サービス(サーバー)が高負荷。Retry-Afterヘッダに示す時間後には緩和される。応答文中にRetry-Afterヘッダがなければ、クライアントは応答を500番と同等に扱う必要がある。 | |
| 504 | Gateway Timeout | なし | ゲートウエイまたはプロキシの応答がゲートウエイの指定時間内に得られない。 注)1 | |
| 505 | HTTP Version Not Supported | - | なし | HTTP Versionをサポートしていない。 |