diff --git a/server/check_ispconfig.php b/server/check_ispconfig.php new file mode 100755 index 0000000000000000000000000000000000000000..075b8e87eff328ad791616edaf1a621fcb545b75 --- /dev/null +++ b/server/check_ispconfig.php @@ -0,0 +1,65 @@ +#!/usr/bin/env php +dbmaster->queryAllRecords("SELECT DISTINCT type, state FROM monitor_data + WHERE server_id = ? AND state != 'no_state'", $conf['server_id']); + +foreach($records as $record) { + $server_states[$record['state']][] = $record['type']; +} + +foreach ($server_states as $state => $data) { + if ($state == 'ok') { + $state_list[] = "$state: " . count($data); + } + else { + $state_list[] = "$state: " . join(', ', $data); + } +} +if (empty($server_states)) { + $server_state = 'unknown'; + $retval = 3; +} +elseif (is_array($server_states['critical']) && count($server_states['critical']) > 0 || is_array($server_states['error']) && count($server_states['error']) > 0) { + $server_state = 'critical'; + $retval = 2; +} +elseif ($server_states['warning'] > 0) { + $server_state = 'warning'; + $retval = 1; +} + +$status_line = strtoupper($server_state) . ': (' . join(', ', $state_list) . ')'; + +echo $status_line . PHP_EOL; +exit($retval);