#!/usr/bin/perl -w # Copyright (c) 2009 Tobias Richter # use strict; use warnings; use DBI; my $dbserver = "server"; my $dbname = "statistics"; my $dbuser = "statistics"; my $dbpassword = "password"; my @loginservers = ("server1" "server2"); my @prodclusternodes = ("node1" "node2"); my @colors1 = ( 'blue', 'green', 'red', 'yellow', 'silver', 'teal', 'orange', 'purple', 'navy', 'black'); my @colors2 = ( 'blue', 'green', 'red', 'yellow', 'silver', 'teal', 'orange', 'purple', 'navy', 'black'); my $dsn = "DBI:mysql:$dbname:$dbserver"; my $dbh = DBI->connect($dsn,$dbuser,$dbpassword,{RaiseError=>1}) || die ("Could not open $dsn! "); my %HoC; my %HoL; my $whichdate = "CURDATE()"; my $week = "0"; if (defined $ARGV[0]) { if ($ARGV[0] =~ /[0-9].*/) { $whichdate = $ARGV[0]; } if ($ARGV[0] =~ /week/) { $week = "1"; } } sub avg { my $sum = 0; my $nen = 0; foreach my $x (@_) { $sum += $x; $nen++; } my $avg = $sum/$nen; return ($avg); } foreach my $prodclusternode (@prodclusternodes) { for(my $hour = 0; $hour <= 24; $hour++) { my @array; my $sth = $dbh->prepare( "SELECT * FROM `connections` WHERE SERVER LIKE \"$prodclusternode\" AND DATE=$whichdate AND HOUR(TIME)=\"$hour\" ORDER BY TIME") || die "error: $DBI::errstr\n"; $sth->execute || die "error: $DBI::errstr\n"; while (my @row_array = $sth->fetchrow_array) { push(@array, $row_array[3]); } if ( scalar(@array) != 0) { my $avg = &avg(@array); $HoC{$prodclusternode}{$hour} = $avg; } else { $HoC{$prodclusternode}{$hour} = ""; } $sth->finish; } } foreach my $loginserver (@loginservers) { for(my $hour = 0; $hour <= 24; $hour++) { my @array; my $sth = $dbh->prepare( "SELECT * FROM `connections` WHERE SERVER LIKE \"$loginserver\" AND DATE=$whichdate AND HOUR(TIME)=\"$hour\" ORDER BY TIME") || die "error: $DBI::errstr\n"; $sth->execute || die "error: $DBI::errstr\n"; while (my @row_array = $sth->fetchrow_array) { push(@array, $row_array[3]); } if ( scalar(@array) != 0) { my $avg = &avg(@array); $HoL{$loginserver}{$hour} = $avg; } else { $HoL{$loginserver}{$hour} = ""; } $sth->finish; } } $dbh->disconnect; print << "EOF"; Content-type: text/html
2009
Tobias Richter
Proudly made with Perl, SQL and Google Chart API.