投稿日:2003年10月16日 作成鷹の巣

No.12921 HTTPサーバーのアクセスログの解析方法がわからない。



HTTPサーバーのアクセスログの解析方法がわからない。

No.12921 投稿時間:2003年10月16日(Thu) 18:40 投稿者名:sai URL:

saiと申します。
初歩的な事で申し訳ないのですが、
HTTPサーバーが処理したアクセスログの解析方法が分からず困っています。

ネットで色々と検索しているのですが、やりたい事は、
「自分のサイトに掲載しているファイル等を誰が、何回ダウンロードしたか?」
という事を知りたいのですが、
HTTPで定義されている状態コードを解析するばいいのかな?
などど思い調べているのですが、状態コードの説明がいまいちわかりません。

具体的にいくつのコードがダウンロードした事になるのかとパニックになっています。
どなたか分かる方がいたらご指導宜しくお願いします。


AWstatsあたりは如何?

No.12923 投稿時間:2003年10月16日(Thu) 18:55 投稿者名:かい URL:http://yaguma.com

AWstatsあたりは如何?


一案

No.12933 投稿時間:2003年10月16日(Thu) 23:54 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

千差万別の手法があると思いますが、私ならこうします。

・「掲載しているファイル等を」 … アクセスログをシークして抽出。
・「誰が」 … cookie を発行し、固有のキーをユーザに渡す。
・「何回」 … アクセスログをシークしてカウント。

「誰が」を特定しないのであれば、Apache などが吐き出すシスログをシークして計算すれば単純にできますが、
特定するのであれば、転々と変わる IP に対応するためにも、ユーザを一意に識別するキーが必要になります。
識別キーを記録するためのアクセスログファイルも別途必要になります。
(Apache などのシスログに直接書き込むのは、やや難しいと思います。)

最近、個人的には、cookie は好きでなくなってきましたが。


> saiと申します。
> 初歩的な事で申し訳ないのですが、
> HTTPサーバーが処理したアクセスログの解析方法が分からず困っています。
>
> ネットで色々と検索しているのですが、やりたい事は、
> 「自分のサイトに掲載しているファイル等を誰が、何回ダウンロードしたか?」
> という事を知りたいのですが、
> HTTPで定義されている状態コードを解析するばいいのかな?
> などど思い調べているのですが、状態コードの説明がいまいちわかりません。
>
> 具体的にいくつのコードがダウンロードした事になるのかとパニックになっています。
> どなたか分かる方がいたらご指導宜しくお願いします。


ありがとうございます。

No.12944 投稿時間:2003年10月17日(Fri) 16:41 投稿者名:sai URL:

帯鯖@名古屋さん
丁寧なご回答ありがとうございます。

【・「掲載しているファイル等を」 … アクセスログをシークして抽出。】

についてなのですが、ファイルをダウンロードすると
状態コードが「304」情報量が「0」バイトと表示されていました。

この状態コード「304」について調べてみたのですが、
検索サイト「http://sakaguch.com/HTTPlog.html
状態コード「304」というのは、
【要求を受付けたが、情報が更新されていない。】
という事らしいです。

いまいちまだ分からないのですが、私的には、
【要するに状態コードが「304」だったらダウンロードしたってことかな・・??】
という理解になっているのですが、語弊はないでしょうか?

・・とこんな事を「帯鯖@名古屋」さんに聞いて良いものだろうか・・と思っているのですが、
仕事で上司に説明をしなくてはならないので、困り果てて聞いてしまいました。

何か知っている事があるようでしたら、
是非ご教授お願い致します。


304 の仕組みは "If-Modified-Since" がキーワード

No.12952 投稿時間:2003年10月18日(Sat) 00:41 投稿者名:帯鯖 URL:

帯鯖@名古屋です。

(掲示板も、キャッチボール式になると楽しいですね。)

HTTP ステータスコードが 304 の場合、Web サーバからクライアントへは、実体ファイルは渡されていません。(すなわち、ゼロバイト)
ブラウザキャッシュの際に、顕著に 304 コードが現れます。

上司に説明となれば、詳しく書かないわけにはいきませんね。書いておきます。


0. (前提)クライアントは、以前 http://www.nantoka.net/aaa.html にアクセスした結果、
「aaa.html は、サーバ側で 2003年9月1日21時30分に生成された」ことを知っているとします。

1. クライアントは、改めて同じhttp://www.nantoka.net/aaa.html にアクセスしました。
このとき、「aaa.html をください。」の他に、既に持っているキャッシュ内の日付情報から、リクエストヘッダ内に、
"If-Modified-Since" で「ただし、生成日は 2003年9月1日21時30分以降である場合」の条件を付加します。

2. サーバは、"If-Modified-Since" の内容により、クライアントへファイルを返すかを決定します。
もし、aaa.html の生成日が更新されている場合(ページが更新されている場合)、
HTTP ステータスコード = 200 で、クライアントへ新しい実体ファイルを渡します。このとき、新たな生成日も同封します。
逆に、aaa.html の生成日が "If-Modified-Since" と同じ場合(ページが更新されていない場合)は、
HTTP ステータスコード = 304 を含むヘッダー部のみ渡し、実部分は渡しません。

3. 最終的にクライアントは、受け取った HTTP ステータスコードの内容により、キャッシュで賄うのかどうかの判断をします。


リクエストヘッダ内の "If-Modified-Since" 項目は、TCP/IP 通信エージェントにより、付加する/しないなどの差があります。
また、"If-Modified-Since" 項目の付加は必須とされません。(IE で [Ctrl] + 更新ボタンの場合も、付加されません)
IE のキャッシュディレクトリをエクスプローラで開いたときに現れる「最終更新日付」が、まさに "If-Modified-Since" の中身です。

分かり辛い説明で恐縮ですが、キーワードを挙げてみました。より詳細な内容については TCP/IP 通信関連の書籍や Web で調べてください。

余分なものは通信しないということですね。i-mode にもあればよいんですが…

> 帯鯖@名古屋さん
> 丁寧なご回答ありがとうございます。
>
> 【・「掲載しているファイル等を」 … アクセスログをシークして抽出。】
>
> についてなのですが、ファイルをダウンロードすると
> 状態コードが「304」情報量が「0」バイトと表示されていました。
>
> この状態コード「304」について調べてみたのですが、
> 検索サイト「http://sakaguch.com/HTTPlog.html
> 状態コード「304」というのは、
> 【要求を受付けたが、情報が更新されていない。】
> という事らしいです。
>
> いまいちまだ分からないのですが、私的には、
> 【要するに状態コードが「304」だったらダウンロードしたってことかな・・??】
> という理解になっているのですが、語弊はないでしょうか?
>
> ・・とこんな事を「帯鯖@名古屋」さんに聞いて良いものだろうか・・と思っているのですが、
> 仕事で上司に説明をしなくてはならないので、困り果てて聞いてしまいました。
>
> 何か知っている事があるようでしたら、
> 是非ご教授お願い致します。


アクセスログの解析!

No.13005 投稿時間:2003年10月21日(Tue) 10:50 投稿者名:sai URL:

帯鯖@名古屋さん
いつも丁寧なご回答ありがとうございます。

帯鯖@名古屋さんのご教授のおかげで状態コード「304」の理解がかなり深まりました。
どうやら私は大変な勘違いをしていたようで帯鯖@名古屋さんのおかげで恥をかかずにすみました。
ありがとうございます。

あれからWEBで調べ、RFC2616を読んだりと、色々調べたのですが、
私は何か勘違いをしていたようで、
帯鯖@名古屋さんに最初に回答して頂いた通り、
【・「掲載しているファイル等を」 … アクセスログをシークして抽出。】
ダウンロードされたログ(URL)を1つずつ数えていけば(Access利用)いいのかな・・と
思い、解決!?したような気がします。

上司にも「誰が」、「どのファイルを」、「何回ダウンロードしたのか?」という情報を
取得できるか調べるように言われていたので、これで解決かな・・という心境です。

帯鯖@名古屋さん にはいつも丁寧且つ迅速なアドバイスに大変感謝しています。
ありがとうございました。


|目次|掲示板|過去ログ目次|▲頁先頭|