Log for $logfiledate"; } } else { $logfile = 'today.log'; if (file_exists($datadir.'_nobeans')) { echo "
Problem with loadavg setup:\n\nIt seems you're running Virtuozzo 3 or OpenVZ. In order for loadavg to read the VPS stats (beancounters) you need a small 'helper' app. Please see http://www.labradordata.ca/home/35 for further information."; exit; } elseif (!file_exists($datadir.'today.log')) { echo "
loadavg message:\n\nNo data is available yet. Try reloading this page in about 20 minutes."; exit; } } $scriptname = $_SERVER['SCRIPT_NAME']; // The selected load average to display. if (!$m) { if ($_GET['load']==1) { $ld = 0; $lddisp = "1-minute"; } elseif ($_GET['load']==5) { $ld = 1; $lddisp = "5-minute"; } elseif ($_GET['load']==15) { $ld = 2; $lddisp = "15-minute"; } elseif ($default_load==1) { $ld = 0; $lddisp = "1-minute"; } elseif ($default_load==5) { $ld = 1; $lddisp = "5-minute"; } elseif ($default_load==15) { $ld = 2; $lddisp = "15-minute"; } else { $ld = 1; $lddisp = "5-minute"; } } // Retrieve data from log. if ($vps) { $oomgbarrier = file_get_contents($datadir.'_oomgbar'); $privbarrier = file_get_contents($datadir.'_privbar'); } elseif (file_exists($data.'_meminst')) { $meminst = file_get_contents($datadir.'_meminst'); } $fc = file($datadir.$logfile); $cnt = count($fc); // wait until we have at least 3 lines of data. if ($cnt < 3 && !file_exists($datadir.'_rotate')) { echo "
loadavg message:\n\nThere is insufficient data to draw the charts. Try reloading this page in 10-15 minutes."; exit; } // --------------------------------------------------------------------------- // Run through the data once to set some minimum and maximum values. if ($m && $vps) { $oomgmax = "1"; $oomgmin = "99999999"; $oomgsum = 0; $privmax = "1"; $privmin = "99999999"; $privsum = 0; } else { $memmax = "1"; $memmin = "99999999"; $loadmax = "0.01"; $loadmin = "100"; $loadsum = 0; $txmin = "99999999"; $rxmin = "99999999"; $txmax = "0.01"; $rxmax = "0.01"; } foreach($fc as $line) { $line = trim($line); $parts = explode('|',$line); if (!$m) { $ld_parts = explode(",",$parts[1]); if ($ld_parts[$ld] > $loadmax) { $loadmax = $ld_parts[$ld]; $loadmaxstamp = $parts[0]; } if ($ld_parts[$ld] < $loadmin) { $loadmin = $ld_parts[$ld]; $loadminstamp = $parts[0]; } $loadlast = $ld_parts[$ld]; $loadsum = $loadsum + $ld_parts[$ld]; } if ($m && $vps) { if ($parts[2] > $oomgmax) { $oomgmax = $parts[2]; $oomgmaxstamp = $parts[0]; } if ($parts[2] < $oomgmin) { $oomgmin = $parts[2]; $oomgminstamp = $parts[0]; } if ($parts[3] > $privmax) { $privmax = $parts[3]; $privmaxstamp = $parts[0]; } if ($parts[3] < $privmin) { $privmin = $parts[3]; $privminstamp = $parts[0]; } $oomglast = $parts[2]; $oomgsum = $oomgsum + $oomglast; $privlast = $parts[3]; $privsum = $privsum + $privlast; } elseif ($vps) { if ($parts[3] > $memmax) { $memmax = $parts[3]; $memmaxstamp = $parts[0]; } if ($parts[3] < $memmin) { $memmin = $parts[3]; $memminstamp = $parts[0]; } $memlast = $parts[3]; $memsum = $memsum + $memlast; } else { if ($parts[2] > $memmax) { $memmax = $parts[2]; $memmaxstamp = $parts[0]; } if ($parts[2] < $memmin) { $memmin = $parts[2]; $memminstamp = $parts[0]; } $memlast = $parts[2]; $memsum = $memsum + $memlast; } if (!$m) { if ($parts[4] > $txmax && $parts[4] !== 'x') { $txmax = $parts[4]; $txmaxstamp = $parts[0]; } if ($parts[4] < $txmin && $parts[4] !== 'x') { $txmin = $parts[4]; $txminstamp = $parts[0]; } if ($parts[5] > $rxmax && $parts[5] !== 'x') { $rxmax = $parts[5]; $rxmaxstamp = $parts[0]; } if ($parts[5] < $rxmin && $parts[5] !== 'x') { $rxmin = $parts[5]; $rxminstamp = $parts[0]; } $txlast = $parts[4]; $rxlast = $parts[5]; $txsum = $txsum + $parts[4]; $rxsum = $rxsum + $parts[5]; } $last = $parts[0]; } // close foreach() // --------------------------------------------------------------------------- // Stuff we need to do now (that we don't do for each iteration). if (!$m) { $memrange = $memmax - $memmin; $memmid = $memmin + ($memrange/2); $loadrange = $loadmax - $loadmin; $loadmid = number_format(round($loadmin + ($loadrange/2),2),2); // for tx/rx charts $txfactor = 100/$txchart; $txmid = $txchart/2; $rxfactor = 100/$rxchart; $rxmid = $rxchart/2; } else { $oomgrange = $oomgmax - $oomgmin; $oomgmid = $oomgmin + ($oomgrange/2); $privrange = $privmax - $privmin; $privmid = $privmin + ($privrange/2); } // --------------------------------------------------------------------------- // Go through data again, this time producing HTML output. foreach($fc as $line) { $line = trim($line); $parts = explode('|',$line); $timestamp = $parts[0]; if (!$m) { $ld_parts = explode(",",$parts[1]); $load = $ld_parts[$ld]; if ($vps) { $mem = $parts[3]; } else { $mem = $parts[2]; } $txbytes = $parts[4]; $rxbytes = $parts[5]; } else { $oomg = $parts[2]; $priv = $parts[3]; } $datetime = date("g:i a",$timestamp); $minute = abs(date("i",$timestamp)); $hour = date("G",$timestamp); // chart the load average. if (!$m) { $loaddiff = $load - $loadmin; $loadheight = ceil($loaddiff/$loadrange*100); if ($load < $load_yellowline) { $loadclass = 'gr'; } elseif ($load < $load_redline) { $loadclass = 'yl'; } else { $loadclass = 'rd'; } // Hack for IE which can't correctly align a 1px high box... if ($loadheight == 1) { $loadheight = 2; } if ($loadheight == 0) { $loadheight = 2; $loadclass = 'wh'; } // -- $loadtop = 100-$loadheight; if (!$loadcols) { $loadcols = "
|
|||||
=$lddisp?> load average
=$ldlink1?> · =$ldlink5?> · =$ldlink15?>
High (=$loadmaxtime?>): =$loadmax?> Low (=$loadmintime?>): =$loadmin?> Mean: =$loadmean?> Latest: =$loadlast?> | over =$load_yellowline?> | over =$load_redline?> |
|
||||
| =$memlink?>
High (=$memmaxtime?>): =$memmax?> MB Low (=$memmintime?>): =$memmin?> MB Mean: =$memmean?> MB Latest: =$memlast?> MB |
|
||||
transmit rate High (=$txmaxtime?>): =$txmax?> KB/s Low (=$txmintime?>): =$txmin?> KB/s Mean: =$txmean?> KB/s Latest: =$txlast?> KB/s Today's estimate: =$txdaily?> =$txdaily_units?> | over =$txchart?> KB/s |
|
||||
receive rate High (=$rxmaxtime?>): =$rxmax?> KB/s Low (=$rxmintime?>): =$rxmin?> KB/s Mean: =$rxmean?> KB/s Latest: =$rxlast?> KB/s Today's estimate: =$rxdaily?> =$rxdaily_units?> | over =$rxchart?> KB/s |
|
||||
privvmpages High (=$privmaxtime?>): =$privmax?> MB Low (=$privmintime?>): =$privmin?> MB Mean: =$privmean?> MB Latest: =$privlast?> MB=$privkey?> |
|
||||
oomguarpages High (=$oomgmaxtime?>): =$oomgmax?> MB Low (=$oomgmintime?>): =$oomgmin?> MB Mean: =$oomgmean?> MB Latest: =$oomglast?> MB=$oomgkey?> |
|
||||