Perl 根据w3C日志画出流量折线图
公司计费采集不是基于访问日志的。但是原始的访问日志是最被信赖的资源, 常常被用来检验各种参数,比如流量。 日志格式: 222.85.90.158 - - [01/Sep/2012:00:00:00 +0800] "GET /download/apks/ggg-market-1/gggmarket2.0.3zhidian201.apk? HTTP/1.1" 206 126410 "-" "Apache-HttpClient/UNAVAILABLE (java 1.4)" 主要 时间 和 ?字节大小 #!/usr/bin/perl #use warnings; #use strict; use Data::Dumper; use Time::Local; my $hash; my $text = $ARGV[0]; my $num = 0; my $interval = $ARGV[1]; my $flag = 0; open FILE,"<$text" or die "Can't open myfile: $!"; while ($line = <FILE>) { # print $line; my @a = split (/s+/,$line); $time = $a[3]; $time =~/[(.*)/; $time = $1; $num = $a[9]; my $string = $time; %month = ( 'Jan','01','Feb','02','Mar','03','Apr','04','May','05','Jun','06','Jul','07','Aug','08','Sep','09','Oct','10','Nov','11','Dec','12',); my ($year,$month,$date,$hour,$minute,$second); if($string=~ m/(d+)/(w+)/(d+):(d+):(d+):(d+)/){ $year = int $3; $month = int $month{$2} - 1 ; $date = int $1; $hour = int $4; $minute = int $5; $second = int $6; } else { next; } $string = timelocal( $second,$year); if( $flag == 0 ) { $begin_time = $string; $flag = 1; } if($string - $begin_time < $interval) { $hash_time = $begin_time; } else { $begin_time = $string; $hash_time = $begin_time; } if(exists $hash->{$hash_time}){ $hash->{$hash_time} += $num; } else { $hash->{$hash_time} = $num; } } #print Dumper($hash); foreach $time (sort keys %{$hash} ) { print $time."t"; print $hash->{$time}."n" ; } ?perl check_for_billing.pl /tmp/in1 300 根据 /tmp/in 300s计算出一组数据。 check_for_billing.pl in1 60 1346428800 ? ? ?1624072102 然后excel可以简单的画出折线图: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |