Monks,
I'm hoping you all can point me in the right direction here.
I'm trying to put together a script that will provide me with some performance metrics from some App Server log files. Among other things, I need to be able to calculate the following:

I have App Server request logs that are in the following tab delimited format and contain approximately 10k requests per log file.
Note, these aren't all the columns in the log files but I'm sure you get the gist of what the data looks like:

RequestID userLoginID server port pageTitle pageURL dateAdded requestTime(ms)
123 456 app1 80 foo1 foo2 2011-12-14 13:01:00.127 250
124 457 app2 80 foo1 foo2 2011-12-14 13:05:00.128 247
125 458 app2 80 foo1 foo2 2011-12-14 13:10:00.105 247
126 459 app3 80 foo1 foo2 2011-12-14 13:11:01.125 435

Given that data above the results I want to calculate are:
13:00 -13:05 = 2 requests, 248.5 Avg Request Time
13:05- 13:10 = 2 requests, 341 Avg Request Time

Any suggestions as to the best way to tackle this? I have some code written to calculate some of the other metrics that I need (below) but I haven't written anything for the 5 min calculations since I'm at a loss as to where I should start.
Any suggestions would be greatly appreciated.

#!/usr/bin/perl use warnings; use strict; # open and read file into the array my $file = shift @ARGV; open (FILE1, "<", $file) or die "Can't open '$file': $!"; my @data = <FILE1>; close (FILE1); # sort array by dateAdded column my @sortedDateAdded = sort {(split "\t",$a)[6] cmp (split "\t",$b)[6]} + @data; #################################### # Init Response Time Variables # Actual my $totalReqs=0; my $lt600ms=0; my $gt600ms=0; my $lt1sec=0; my $bt1and5sec=0; my $bt5and10sec=0; my $gt10sec=0; # Percentage my $lt600pct=0; my $gt600pct=0; my $lt1pct=0; my $bt1and5pct=0; my $bt5and10pct=0; my $gt10pct=0; # Hash Init my %uniqueNames; my %uniquePageURL; my $worstQuery; my $bestQuery; ################################### print "\n"; print"Starting Analysis ... \n"; print "\n"; # Use a FOREACH loop to read through the data in the array foreach my $reqMetrics (@sortedDateAdded) { my($userLoginPageRequestID,$userLoginID,$server,$port,$pageTitle,$page +URL,$dateAdded,$requestTime,$userID,$ipAddress,$browser,$browserVersi +on,$platform,$isloggedIn,$cfid,$sessionCanceled,$sessionTimeOut,$manu +alLogout,$name,$city,$state,$zip,$bhTimeStamp) = split("\t", $reqMetr +ics); # print "$requestTime \n"; #quick debug line - runtime # Calculate Response Times if ($requestTime != 0) { $totalReqs++; } if ($requestTime < 600) { $lt600ms++; $lt600pct=($lt600ms/$totalReqs)*100; } if ($requestTime > 600) { $gt600ms++; $gt600pct=($gt600ms/$totalReqs)*100; } if ($requestTime <= 1000) { $lt1sec++; $lt1pct=($lt1sec/$totalReqs)*100; } if ($requestTime > 1000 && $requestTime <= 5000) { $bt1and5sec++; $bt1and5pct=($bt1and5sec/$totalReqs)*100; } if ($requestTime > 5000 && $requestTime <= 10000) { $bt5and10sec++; $bt5and10pct=($bt5and10sec/$totalReqs)*100; } if ($requestTime > 10000) { $gt10sec++; $gt10pct=($gt10sec/$totalReqs)*100; } # Calculate unique values undef $uniqueNames{$name}; undef $uniquePageURL{$pageURL}; } print "\n"; print "Total Requests Received: $totalReqs\n"; print "Total Unique Users: ",scalar keys %uniqueNames,"\n"; print "Total Unique Page Views: ",scalar keys %uniquePageURL,"\n"; print "\n"; print "REQUEST TIME (ACTUAL) (Percentage)\n"; print "==============================================\n"; print "Requsts < 600ms $lt600ms $lt600pct\n"; print "Requsts > 600ms $gt600ms $gt600pct\n"; print "==============================================\n"; print "Requsts < 1sec $lt1sec $lt1pct\n"; print "Requsts ~ 1-5sec $bt1and5sec $bt1and5pct\n"; print "Requsts ~ 5-10sec $bt5and10sec $bt5and10pct\n"; print "Requsts > 10sec $gt10sec $gt10pct\n";

In reply to How to calculate values based on date / time stamp? by dukea2006

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.