沢渡 みかげ #3395(2007/08/03 11:32 GMT) Rating1/1=1.00
アクセスログの各行の先頭にIPアドレスがあります.そのIPアドレスを逆引き結果のFQDNで置き換えてください.
逆引きが出来なかった場合は,IPアドレスのまま残します. IPアドレス以外の部分は,そのまま加工せずに残してください.
----
例)192.168.7.1 が逆引きできない場合
210.166.209.71 - - [26/Jul/2007:22:32:47 +0900] "GET / HTTP/1.1" 403 283 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5" 192.168.7.1 - - [26/Jul/2007:22:32:48 +0900] "GET /favicon.ico HTTP/1.1" 404 290 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5"
↓
mikage.to - - [26/Jul/2007:22:32:47 +0900] "GET / HTTP/1.1" 403 283 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5" 192.168.7.1 - - [26/Jul/2007:22:32:48 +0900] "GET /favicon.ico HTTP/1.1" 404 290 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5"
アクセスログは膨大な量があるため,現実的な時間で処理できるよう,以下の条件をつけます.
・メモリに入りきらないような巨大なログも処理できるようにしてください.(ファイル全体をメモリに読み込むのはNG)
・十分な速度で処理できるよう,並列化する等の工夫をしてください.
・DNSサーバに大量のリクエストが行かないよう,結果をキャッシュしてDNSサーバへのアクセスを削減してください. なお,DNSのTTLは無視して結果をキャッシュしてかまいません. (ログの記録された時間の逆引きするタイミングがずれているため,正確な逆引きは元々無理なので)
名前解決はgethostbyaddrを利用しても良いですし,再帰的に名前解決が出来るDNSサーバと直接通信してもかまいません.
ログを順次読み取り処理する部分を,データを共有しつついかに並列化するか,という部分を問うのが目的です.
このお題は沢渡みかげさんの投稿です。ご投稿ありがとうございます。
[ reply ]
沢渡 みかげ
#3395()
Rating1/1=1.00
アクセスログの各行の先頭にIPアドレスがあります.そのIPアドレスを逆引き結果のFQDNで置き換えてください.
逆引きが出来なかった場合は,IPアドレスのまま残します. IPアドレス以外の部分は,そのまま加工せずに残してください.
----
例)192.168.7.1 が逆引きできない場合
210.166.209.71 - - [26/Jul/2007:22:32:47 +0900] "GET / HTTP/1.1" 403 283 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5"
192.168.7.1 - - [26/Jul/2007:22:32:48 +0900] "GET /favicon.ico HTTP/1.1" 404 290 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5"
↓
mikage.to - - [26/Jul/2007:22:32:47 +0900] "GET / HTTP/1.1" 403 283 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5"
192.168.7.1 - - [26/Jul/2007:22:32:48 +0900] "GET /favicon.ico HTTP/1.1" 404 290 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5"
----
アクセスログは膨大な量があるため,現実的な時間で処理できるよう,以下の条件をつけます.
・メモリに入りきらないような巨大なログも処理できるようにしてください.(ファイル全体をメモリに読み込むのはNG)
・十分な速度で処理できるよう,並列化する等の工夫をしてください.
・DNSサーバに大量のリクエストが行かないよう,結果をキャッシュしてDNSサーバへのアクセスを削減してください. なお,DNSのTTLは無視して結果をキャッシュしてかまいません. (ログの記録された時間の逆引きするタイミングがずれているため,正確な逆引きは元々無理なので)
名前解決はgethostbyaddrを利用しても良いですし,再帰的に名前解決が出来るDNSサーバと直接通信してもかまいません.
ログを順次読み取り処理する部分を,データを共有しつついかに並列化するか,という部分を問うのが目的です.
このお題は沢渡みかげさんの投稿です。ご投稿ありがとうございます。
[ reply ]