Example #1
0
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);
            }
        }
    }
}
Example #2
0
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";
		}
		
		
	}
	
	
}
Example #3
0
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);
            }
        }
    }
}