gnuplot / webplot / access_log
|
httpd access_logの解析・集計 apacheのlogfileの集計を簡単にするために,このファイルが毎月新しく apacheのaccess_logは,標準では次のようになっています. host.domain - - [01/Jan/2000:01:23:45 +0900] "GET /index.html HTTP/1.1" 200 1548 host.domain - - [01/Jan/2000:01:23:50 +0900] "GET /icons/mail.png HTTP/1.1" 200 229 まずは,細かいことは無視して,何日にいくつのアクセスがあったのか, #!/usr/bin/perl while(<>){ if(/.html/){ split; $day = substr($_[3],1,2); $count[$day]++; } } for($i=1;$i<=$#count;$i++){ printf("%10d %10dn",$i,$count[$i]); } access_logには全てのファイルへのアクセスが記録されますので,画像ファ まず各行の要素を,スペースで分割し,日にちの部分をsubstrを これは某所サーバへの2000年1月のアクセスの集計結果です. 1 172 2 321 3 208 4 279 5 327 .... .... 25 588 26 1038 27 848 28 772 29 570 30 495 31 548 この結果をファイルにdumb terminalを使ってプロットすると,次のように gnuplot> set term dumb Terminal type set to 'dumb' Options are 'feed 79 24' gnuplot> plot "< webplot.pl access_log" with step 1600 ++--------+---------+---------+---------+---------+---------+--------++ + + + + "< webplot.pl access_log" ****** + 1400 ++ *** ++ | * * | | * * | 1200 ++ * * ++ | * * | 1000 ++ *** * * *** ++ | * * * * * * | | * * * * * *** | 800 ++ * * * * * *** ++ | * * *** * * * * | 600 ++ *** * *** * * * * * ++ | *** * * * *** * ***** *** * | | * * * ******* * * * *** | 400 ++ * * * *** *** *** ++ | *** *** * * ***** * * | 200 ++ * ***** *** *** *** ++ | *** | + + + + + + + + 0 ++--------+---------+---------+---------+---------+---------+--------++ 0 5 10 15 20 25 30 35 |