Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sub collect {
- use POSIX qw(strftime);
- my $file_date = strftime "%Y%m%d", localtime;
- my ($logfile, $to) = @_;
- my $from = 'alerts@zoo.gr';
- my $subject = "Daily Service call report";
- my (%totals, %byhostname);
- my (%mins, %maxs, %averages, %ff95s, %ff99s);
- my $epoch_time = time;
- $epoch_time = $epoch_time * 1000;
- if ($logfile =~ /\.gz$/) {
- open (FILE, "gunzip -c $logfile |") or die $!
- } else {
- open (FILE, $logfile) or die $!;
- }
- while (my $line = <FILE>) {
- my (undef, undef, undef, $hostname, $identity, $servicename, $daytotals, $min, $max, $average, $ff95, $ff99 ) = split(" ", $line);
- if (! defined $identity or ! length $identity ) { next; }
- if ($identity ne "Service-Analysis:" ) { next; }
- if ($servicename =~ /-/) { next; }
- if ( defined $averages{$servicename} ) {
- $averages{ $servicename } = ( ( $averages{ $servicename } * $totals{ $servicename } ) + ( $average * $daytotals) ) / ( ($totals{ $servicename } + $daytotals ) || 1) ;
- } else {
- $averages{ $servicename } = $average;
- }
- $totals{ $servicename } = ( $totals{ $servicename } //0 )+ $daytotals ;
- $mins{ $servicename } //= $min ;
- $mins{ $servicename } = min($mins{ $servicename },$min);
- $maxs{ $servicename } //= $max ;
- $maxs{ $servicename } = max($maxs{ $servicename },$max);
- $ff95s{ $servicename } //= $ff95 ;
- $ff95s{ $servicename } = max($ff95s{ $servicename },$ff95);
- $ff99s{ $servicename } //= $ff99 ;
- $ff99s{ $servicename } = max($ff99s{ $servicename },$ff99);
- push @{ $byhostname {$hostname} }, "$hostname,$servicename,$daytotals,$min,$max,$average,$ff95,$ff99\n";
- }
- close(FILE);
- my @array = ([], [], []);
- my $body = "Server-name,Service_name,date,Day_total_hits,Min,Max,Average,95per,99per\n";
- foreach my $key (sort keys( %totals )) {
- my @fullstops = $key =~ /\./g;
- my $howmany = @fullstops;
- $averages{$key} = int($averages{$key});
- push @{$array[$howmany]}, "Global,$key,$epoch_time,$totals{$key},$mins{$key},$maxs{$key},$averages{$key},$ff95s{$key},$ff99s{$key}\n";
- }
- for my $i(0..2) {
- for my $line ( @{$array[$i]} ) {
- $body = $body.$line;
- }
- }
- foreach my $hostname (sort keys %byhostname) {
- my $rahosts = "@{ $byhostname{$hostname} }";
- $body = $body.$rahosts;
- }
- open F, "> /tmp/ServicesReport.$file_date";
- print F "$body";
- sendEmail ($to, $from, $subject, $body);
- }
Add Comment
Please, Sign In to add comment