} else { // If return status > 3, means invalid status, rewrite to unknown (3) if ($mydata['status'] > 3) { //print "Warning rewrote status value from ". $mydata['status'] ." to 3\n"; $mydata['status'] = 3; } } $event = new Event(); $event->set_status($mydata['status']); $event->set_info_msg($mydata['message']); $event->set_script("Submitted Check"); if (is_numeric($mydata['check_id'])) { // if this is the case we have the check_id that makes live easy. $event->set_check_id($mydata['check_id']); $event->set_check_name($mydata['checkname']); $event->set_hostname($mydata['hostname']); } else { // Then we need hostname with checkname and keys if (!isset($mydata['hostname']) || $mydata['hostname'] == '' || !isset($mydata['checkname']) || $mydata['checkname'] == '') { $msg = "Invalid request: Expecting either check_id or hostname AND checkname"; header("HTTP/1.0 400 {$msg}"); print $msg; exit; } //$event->set_check_id(null); $event->set_check_name($mydata['checkname']); $event->set_hostname($mydata['hostname']); $event->set_key1($mydata['key1']); $event->set_key2($mydata['key2']); } // Parse message data, to extract message and performance data
$check = new Check($check_id); // Start timer and exec check script $time_start = microtime(true); $script = "{$script_dir}/" . $check->get_parsed_check_script(); $check_result = exec_check($script); // Now create a new Event object // Store the info we know from Check object // and check results $event = new Event(); $event->set_status($check_result['status']); $event->set_info_msg($check_result['message']); $event->set_performance_data($check_result['perf_data']); $event->set_check_id($check->get_check_id()); $event->set_script($script); $event->set_check_name($check->get_name()); $event->set_hostname($check->get_hostname()); $event->set_key1($check->get_key1()); $event->set_key2($check->get_key2()); // Now we can use handle_event() to figure out if this is a new // or exitsing event. It will do all the updating for us // and call notify() in the event class $event->handle_event(); $time_end = microtime(true); $time = $time_end - $time_start; //print status line print "{$script} => status: " . $event->get_status() . " " . trim($event->get_info_msg()); if ($check_result['perf_data'] != "") { print " | " . $check_result['perf_data']; } print " -- ({$time} sec)\n"; // This function does the actual execution