#!/usr/bin/perl

# Check Load
$loadavg=`/sbin/sysctl vm.loadavg`;
chomp $loadavg;
$loadavg =~ s/vm.loadavg: { //;
$loadavg =~ s/ }//;

$line1="load1 load5 load15";
$line2=$loadavg;

# Check Disks
@df=`df -k`;
for (@df) {
	$_ =~ /.*?(\d+)\%\s+(\/\S*)/;
	my $dsk = $2; my $per = $1;
	if( $dsk =~ /^\// && $dsk ne '/proc' && $dsk ne '/usr/compat/linux/proc' ) {
		$line1 .= " disk-$dsk";
		$line2 .= " $per";
	}
}

# Check process count
$numproc=`ps ax | wc -l`;
chomp $numproc;
$numproc =~ s/\s+//;
$line1 .= " numproc-total";
$line2 .= " $numproc";

# Check process count
$numproc=`ps auxww | awk '\$1 == "www" || \$1 == "apache" {print}' | grep httpd | wc -l`;
chomp $numproc;
$numproc =~ s/\s+//;
if( $numproc > 0 ) {
	$line1 .= " numproc-httpd";
	$line2 .= " $numproc";
}

# Check process count
$numproc=`ps auxww | awk '\$1 == "www" || \$1 == "psaadm" {print}' | grep httpsd | wc -l`;
chomp $numproc;
$numproc =~ s/\s+//;
if( $numproc > 0 ) {
	$line1 .= " numproc-httpsd";
	$line2 .= " $numproc";
}

# Check process count
$numproc=`ps -U mysql | grep mysqld | wc -l`;
chomp $numproc;
$numproc =~ s/\s+//;
if( $numproc > 0 ) {
	$line1 .= " numproc-mysqld";
	$line2 .= " $numproc";
}

# Qmail count
$numsuccess=`grep qmail:.\*delivery.\*success: /var/log/maillog /usr/local/psa/var/log/maillog 2>/dev/null| wc -l`;
chomp $numsuccess;  $numsuccess =~ s/\s+//;
$numdeferral=`grep qmail:.\*delivery.\*deferral: /var/log/maillog /usr/local/psa/var/log/maillog 2>/dev/null | wc -l`;
chomp $numdeferral; $numdeferral =~ s/\s+//;
$numfailure=`grep qmail:.\*delivery.\*failure: /var/log/maillog /usr/local/psa/var/log/maillog 2>/dev/null | wc -l`;
chomp $numfailure; $numfailure =~ s/\s+//;
#if( $numsuccess > 0 || $numdeferral > 0 || $numfailure > 0 ) {
	$line1 .= " qmail-success qmail-deferral qmail-failure";
	$line2 .= " $numsuccess $numdeferral $numfailure";
#}

$numimapd=`grep "imapd: Connection" /usr/local/psa/var/log/maillog | wc -l`;
chomp $numimapd; $numimapd =~ s/\s+//;
$numpop3d=`grep "pop3d: Connection" /usr/local/psa/var/log/maillog | wc -l`;
chomp $numpop3d; $numpop3d =~ s/\s+//;
if( $numimapd > 0 || $numpop3d > 0 ) {
	$line1 .= " connect-imapd connect-pop3d";
	$line2 .= " $numimapd $numpop3d";
}

#@mems=`/sbin/sysctl -n hw.physmem hw.usermem vm.kvm_size vm.kvm_free`;
#foreach $n (0 .. @mems) { chomp $mems[$n]; }
#$line1 .= " memtotal meminuse vmtotal vminuse";
## Actually, vminuse = vmtotal - vmFREE ;)
#$mems[3] = $mems[2] - $mems[3];
#$line2 .= " $mems[0] $mems[1] $mems[2] $mems[3]";

@mems=`/sbin/sysctl -n vm.stats.vm.v_page_size vm.stats.vm.v_free_count vm.stats.vm.v_wire_count vm.stats.vm.v_active_count vm.stats.vm.v_inactive_count vm.stats.vm.v_cache_count`;
foreach $n (0 .. @mems) { chomp $mems[$n]; }
foreach $n (1 .. @mems) { $mems[$n] *= $mems[0]; }
$line1 .= " mem_free mem_wire mem_active mem_inactive mem_cache";
$line2 .= " $mems[1] $mems[2] $mems[3] $mems[4] $mems[5]";

# Network
@netstat=`netstat -inb`;
for (@netstat) {
	my @stat = split(/\s+/, $_);
	if( $_ !~ /^lo\d/ && $stat[2] =~ /^<Link#\d>$/ ) {
		if( $stat[4] > 0 || $stat[6] > 0 ) {
			$line1 .= " $stat[0]-Ibytes $stat[0]-Obytes";
			$line2 .= " $stat[6] $stat[9]";
		}
	}
}

# Print out lines
print $line1, "\n";
print $line2, "\n";
