Perlはw 3 Cログに基づいてトラフィックの折れ線図を描きます
会社の課金収集はアクセスログに基づいていません.しかし、元のアクセスログは最も信頼されているリソースです.
流量などの様々なパラメータを検証するためによく用いられる.
ログ形式:
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)"
プライマリ時間とバイトサイズ
perl check_for_billing.pl/tmp/in1 300
/tmp/in 300 sに基づいてデータのセットを算出する.
check_for_billing.pl in1 60
1346428800 1624072102 1346428860 1819704465 1346428920 1652706944 1346428980 1796033459 1346429040 1771569864 1346429100 1744929423 1346429160 1922832195 1346429220 1660383579 1346429280 1714866844 1346429340 1721153695 1346429400 1642454102 1346429460 1544478258 1346429520 1310100814 1346429580 1581676557 1346429640 1518062958 1346429700 1833178378 1346429760 1580890704 1346429820 1733835211 1346429880 1549757477 1346429940 1460066927 1346430000 1642321720 1346430060 1520984661 1346430120 1598766051 1346430180 1436598072 1346430240 1501967340
次にexcelは簡単に折れ線図を描くことができます.
流量などの様々なパラメータを検証するためによく用いられる.
ログ形式:
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,$minute,$hour,$date,$month,$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}."
" ;
}
perl check_for_billing.pl/tmp/in1 300
/tmp/in 300 sに基づいてデータのセットを算出する.
check_for_billing.pl in1 60
1346428800 1624072102 1346428860 1819704465 1346428920 1652706944 1346428980 1796033459 1346429040 1771569864 1346429100 1744929423 1346429160 1922832195 1346429220 1660383579 1346429280 1714866844 1346429340 1721153695 1346429400 1642454102 1346429460 1544478258 1346429520 1310100814 1346429580 1581676557 1346429640 1518062958 1346429700 1833178378 1346429760 1580890704 1346429820 1733835211 1346429880 1549757477 1346429940 1460066927 1346430000 1642321720 1346430060 1520984661 1346430120 1598766051 1346430180 1436598072 1346430240 1501967340
次にexcelは簡単に折れ線図を描くことができます.