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可以简单的画出折线图:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

