- not so Frequently Asked Questions - update 2004/11/29
|
|
|
httpd access_logã®è§£æžãƒ»é›†è¨ˆapacheã®logfileã®é›†è¨ˆã‚’ç°¡å˜ã«ã™ã‚‹ãŸã‚ã«ï¼Œã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ¯Žæœˆæ–°ã—ã 作り直ã•ã‚Œã¦ã„る状æ³ã‚’考ãˆã¾ã™ï¼Žlogファイルã¯ã™ãã«å·¨å¤§ã«ãªã£ã¦ã—ã¾ã† ã®ã§ï¼Œå¤šãã®WWW Serverã§ã¯ã“ã®å‡¦ç†ã‚’自動的ã«è¡Œã£ã¦ã„ã‚‹ã¯ãšã§ã™ï¼Ž 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 ã¾ãšã¯ï¼Œç´°ã‹ã„ã“ã¨ã¯ç„¡è¦–ã—ã¦ï¼Œä½•æ—¥ã«ã„ãã¤ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒã‚ã£ãŸã®ã‹ï¼Œ ã ã‘ã‚’æ•°ãˆã¾ã—ょã†ï¼Žå¿…è¦ãªã®ã¯ï¼Œ [01/Jan/2000: ã®ä¸ã®01ã®éƒ¨ 分ã§ã™ï¼ŽåŒã˜æ—¥ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’1æ—¥ã‹ã‚‰31æ—¥ã¾ã§ã«å¯¾ã—ã¦ãã‚Œãžã‚Œåˆè¨ˆã—ã¾ã™ï¼Ž #!/usr/bin/perl while(<>){ if(/\.html/){ split; $day = substr($_[3],1,2); $count[$day]++; } } for($i=1;$i<=$#count;$i++){ printf("%10d %10d\n",$i,$count[$i]); } access_logã«ã¯å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒè¨˜éŒ²ã•ã‚Œã¾ã™ã®ã§ï¼Œç”»åƒãƒ•ã‚¡ イルç‰ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹æ•°ã‚’カウントã—ãªã„よã†ã«ï¼ŒhtmlãŒä»˜ãè¡Œã®ã¿ã‚’処ç†ã—㦠ã„ã¾ã™ï¼Žç‰¹å®šã®URLã ã‘をカウントã™ã‚‹ãªã‚‰ï¼Œifã®éƒ¨åˆ†ã‚’ã‚‚ã†å°‘ã—ã—ã£ã‹ã‚Šä½œã‚‹ å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼Ž ã¾ãšå„è¡Œã®è¦ç´ を,スペースã§åˆ†å‰²ã—,日ã«ã¡ã®éƒ¨åˆ†ã‚’substrã‚’ 使ã£ã¦åˆ‡ã‚Šã ã—ã¾ã™ï¼Žã“れを変数$dayã«ä»£å…¥ã—,$day日㮠カウンタを一ã¤å¢—ã‚„ã—ã¾ã™ï¼Žãƒ•ã‚¡ã‚¤ãƒ«ã‚’全部èªã¿çµ‚ãˆãŸã‚‰ï¼Œæ—¥ã«ã¡æ¯Žã®ã‚«ã‚¦ãƒ³ ト数を書ã出ã—ã¾ã™ï¼Žä¸Šã®perlã®ã‚¹ã‚¯ãƒªãƒ—トを webplot.plã¨ã„ã†åå‰ã«ã—㦠ãŠãã¾ã™ï¼Ž ã“ã‚Œã¯æŸæ‰€ã‚µãƒ¼ãƒã¸ã®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を使ã£ã¦ãƒ—ãƒãƒƒãƒˆã™ã‚‹ã¨ï¼Œæ¬¡ã®ã‚ˆã†ã« ãªã‚Šã¾ã™ï¼Žã“ã“㧠"< webplot.pl access_log" ã®æœ€åˆã®ä¸ç‰å·ã¯ï¼Œperl㮠プãƒã‚°ãƒ©ãƒ ã®å‡¦ç†çµæžœã‚’プãƒãƒƒãƒˆã™ã‚‹ãƒ‡ãƒ¼ ã‚¿ã¨ã—ã¦èªã¿è¾¼ã‚€ã“ã¨ã‚’表ã—ã¾ã™ï¼Ž 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 |