Nagios check_disk wrapper für PHP

Manchmal muss man auch mal die Disk durch einen einfachen HTTP request abfragen. Warum also nicht bestehende Scripte, wie das Nagios Plugin check_disk dafür verwenden. Anbei ein kleines Script, dass genau dieses macht. Eine kleine Einschränkung, der HTTP Response Code ist bei Warning und Critial der gleiche – natürlich leicht zu erweitern ;)

<?php

// global binary
$NAGIOS_DISK = "/usr/lib/nagios/plugins/check_disk";
$DISK_KEY = "Uvg2kFMfy3DU";

if (isset($_GET['key'], $_GET['w'], $_GET['c'])) {
	// okay
	$key = $_GET['key'];
	$warning = $_GET['w'];
	$critical = $_GET['c'];

	if(! (preg_match('/^[0-9]+%$/', $warning) && preg_match('/^[0-9]+%$/', $critical)) ) {
		echo "Critical or Warning values are not a valid value.\n";
		header("HTTP/1.0 510 Not Extended");
		exit;
	}

	if ($key == $DISK_KEY ) {
		// correct key

		$return = shell_exec("$NAGIOS_DISK -l -x /dev/shm -w $warning -c $critical");

		if (stripos($return,"OK")) {
			print "$return\n";
			header("HTTP/1.0 200 Okay");
		} else {
			print "$return\n";
			header("HTTP/1.0 507 Insufficient Storage");
		}

	} else {
		print "ERROR\n";
		header("HTTP/1.0 401 Unauthorized");
	}

} else {
	// error
	print "ERROR\n";
	header("HTTP/1.0 418 I’m a teapot");
}

?>

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.