function ParseLoadQeues() { $unix = new unix(); $du = $unix->find_program("du"); $rm = $unix->find_program("rm"); $EXEC_NICE = EXEC_NICE(); exec("{$EXEC_NICE}{$du} -b -s /etc/artica-postfix/loadavg.queue 2>&1", $results); $tmp = trim(@implode("", $results)); if (preg_match("#[0-9]+\\s+#", $tmp, $re)) { $size = $re[1] / 1024; $size = $size / 1000; if ($size > 100) { shell_exec("/bin/rm -rf /etc/artica-postfix/loadavg.queue/*"); return; } } if (!is_dir('/etc/artica-postfix/loadavg.queue')) { @mkdir("/etc/artica-postfix/loadavg.queue", true); } if ($handle = opendir("/etc/artica-postfix/loadavg.queue")) { while (false !== ($file = readdir($handle))) { if ($file == "." && $file == "..") { continue; } $filename = "/etc/artica-postfix/loadavg.queue/{$file}"; $filebase = basename($filename); if ($GLOBALS["VERBOSE"]) { echo "parse {$filename}\n"; } sleep(1); if (preg_match("#^([0-9]+)\\.([0-9]+)\\.queue\$#", $filebase, $re)) { $filebase = "{$re[1]}.{$re[2]}.0.queue"; } if (preg_match("#([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.queue\$#", $filebase, $re)) { if (system_is_overloaded()) { $unix->events(basename(__FILE__) . ": ParseLoadQeues() system is overloaded aborting for {$filename}"); return; } $datas = loadavg_table($filename, $lsof); if (is_file("{$filename}.lsof")) { $lsofTEXT = ParseLsof("{$filename}.lsof"); @unlink("{$filename}.lsof"); } else { if ($GLOBALS["VERBOSE"]) { echo "{$filename}.lsof no such file\n"; } } if (is_file("{$filename}.iotop")) { $IoText = ParseIotOp("{$filename}.lsof"); @unlink("{$filename}.iotop"); } else { if ($GLOBALS["VERBOSE"]) { echo "{$filename}.iotop no such file\n"; } } $time = date("Y-m-d H:i:s", $re[1]); $load = "{$re[2]},{$re[3]}"; $q = new mysql(); $datas = mysql_escape_string2($datas); $lsofTEXT = mysql_escape_string2($lsofTEXT); $IoText = mysql_escape_string2($IoText); $sql = "INSERT IGNORE INTO avgreports (`zDate`,`loadavg`,`psreport`,`lsofreport`,`iotopreport`) VALUES ('{$time}','{$load}','{$datas}','{$lsofTEXT}','{$IoText}')"; $q->QUERY_SQL($sql, "artica_events"); if ($GLOBALS["VERBOSE"]) { echo "{$time}: {$load}\n"; } $unix->send_email_events("System Load - {$load} - exceed rule (processes)", $datas, "system", $time); if (strlen($lsofTEXT) > 50) { $unix->send_email_events("System Load - {$load} - exceed rule (opened files)", $lsofTEXT, "system", $time); } if (strlen($IoText) > 50) { $unix->send_email_events("System Load - {$load} - exceed rule (Disk perfs)", $IoText, "system", $time); } @unlink($filename); } else { echo "{$filebase} did not match ([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.queue\n"; @unlink($filename); } } } }
function ParseLoadQeues(){ $unix=new unix(); foreach (glob("/etc/artica-postfix/loadavg.queue/*.queue") as $filename) { $filebase=basename($filename); if($GLOBALS["VERBOSE"]){echo "parse $filename\n";} if(preg_match("#^([0-9]+)\.([0-9]+)\.queue$#",$filebase,$re)){$filebase="{$re[1]}.{$re[2]}.0.queue";} if(preg_match("#([0-9]+)\.([0-9]+)\.([0-9]+)\.queue$#",$filebase,$re)){ if(system_is_overloaded()){ $unix->events(basename(__FILE__).": ParseLoadQeues() system is overloaded aborting for $filename"); return; } if(is_file("$filename.lsof")){ $lsofTEXT=ParseLsof("$filename.lsof"); @unlink("$filename.lsof"); }else{ if($GLOBALS["VERBOSE"]){echo "$filename.lsof no such file\n";} } $time=date("Y-m-d H:i:s",$re[1]); $load="{$re[2]}.{$re[3]}"; if($GLOBALS["VERBOSE"]){echo "$time: $load\n";} $datas=loadavg_table($filename,$lsof); $unix->send_email_events("System Load - $load - exceed rule (processes)",$datas,"system",$time); if(strlen($lsofTEXT)>50){ $unix->send_email_events("System Load - $load - exceed rule (opened files)",$lsofTEXT,"system",$time); } @unlink($filename); }else{ echo "$filebase did not match ([0-9]+)\.([0-9]+)\.([0-9]+)\.queue\n"; } } }
function ParseLoadQeues() { $unix = new unix(); $du = $unix->find_program("du"); $rm = $unix->find_program("rm"); exec("{$du} -b -s /etc/artica-postfix/loadavg.queue 2>&1", $results); $tmp = trim(@implode("", $results)); if (preg_match("#[0-9]+\\s+#", $results, $re)) { $size = $re[1] / 1024; $size = $size / 1000; if ($size > 100) { shell_exec("/bin/rm -rf /etc/artica-postfix/loadavg.queue/*"); return; } } if ($handle = opendir("/etc/artica-postfix/loadavg.queue")) { while (false !== ($file = readdir($handle))) { if ($file == "." && $file == "..") { continue; } $filename = "/etc/artica-postfix/loadavg.queue/{$file}"; $filebase = basename($filename); if ($GLOBALS["VERBOSE"]) { echo "parse {$filename}\n"; } if (preg_match("#^([0-9]+)\\.([0-9]+)\\.queue\$#", $filebase, $re)) { $filebase = "{$re[1]}.{$re[2]}.0.queue"; } if (preg_match("#([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.queue\$#", $filebase, $re)) { if (system_is_overloaded()) { $unix->events(basename(__FILE__) . ": ParseLoadQeues() system is overloaded aborting for {$filename}"); return; } if (is_file("{$filename}.lsof")) { $lsofTEXT = ParseLsof("{$filename}.lsof"); @unlink("{$filename}.lsof"); } else { if ($GLOBALS["VERBOSE"]) { echo "{$filename}.lsof no such file\n"; } } $time = date("Y-m-d H:i:s", $re[1]); $load = "{$re[2]}.{$re[3]}"; if ($GLOBALS["VERBOSE"]) { echo "{$time}: {$load}\n"; } $datas = loadavg_table($filename, $lsof); $unix->send_email_events("System Load - {$load} - exceed rule (processes)", $datas, "system", $time); if (strlen($lsofTEXT) > 50) { $unix->send_email_events("System Load - {$load} - exceed rule (opened files)", $lsofTEXT, "system", $time); } @unlink($filename); } else { echo "{$filebase} did not match ([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.queue\n"; @unlink($filename); } } } }