#!/usr/bin/php threshod * check_jmx -H hostaddress -p port -w 1% -c 1% */ $options = getopt ("h:p:w:c:"); if (!array_key_exists('h', $options) || !array_key_exists('p', $options) || !array_key_exists('w', $options) || !array_key_exists('c', $options)) { usage(); exit(3); } $host=$options['h']; $port=$options['p']; $warn=$options['w']; $warn = preg_replace('/%$/', '', $warn); $crit=$options['c']; $crit = preg_replace('/%$/', '', $crit); /* Get the json document */ $json_string = file_get_contents("http://".$host.":".$port."/jmx?qry=Hadoop:service=NameNode,name=FSNamesystemMetrics"); $json_array = json_decode($json_string, true); $m_percent = 0; $c_percent = 0; $object = $json_array['beans'][0]; $missing_blocks = $object['MissingBlocks']; $corrupt_blocks = $object['CorruptBlocks']; $total_blocks = $object['BlocksTotal']; if($total_blocks == 0) { $m_percent = 0; $c_percent = 0; } else { $m_percent = ($missing_blocks/$total_blocks)*100; $c_percent = ($corrupt_blocks/$total_blocks)*100; } $out_msg = "corrupt_blocks:<" . $corrupt_blocks . ">, missing_blocks:<" . $missing_blocks . ">, total_blocks:<" . $total_blocks . ">"; if ($m_percent > $crit || $c_percent > $crit) { echo "CRITICAL: " . $out_msg . "\n"; exit (2); } if ($m_percent > $warn || $c_percent > $warn) { echo "WARNING: " . $out_msg . "\n"; exit (1); } echo "OK: " . $out_msg . "\n"; exit(0); /* print usage */ function usage () { echo "Usage: $0 -h -p port -w -c \n"; } ?>