#!/bin/bash # #/* # * Licensed to the Apache Software Foundation (ASF) under one # * or more contributor license agreements. See the NOTICE file # * distributed with this work for additional information # * regarding copyright ownership. The ASF licenses this file # * to you under the Apache License, Version 2.0 (the # * "License"); you may not use this file except in compliance # * with the License. You may obtain a copy of the License at # * # * http://www.apache.org/licenses/LICENSE-2.0 # * # * Unless required by applicable law or agreed to in writing, software # * distributed under the License is distributed on an "AS IS" BASIS, # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # * See the License for the specific language governing permissions and # * limitations under the License. # */ err=0; function check_disks { for m in `awk '$3~/ext3/ {printf" %s ",$2}' /etc/fstab` ; do fsdev="" fsdev=`awk -v m=$m '$2==m {print $1}' /proc/mounts`; if [ -z "$fsdev" ] ; then msg_="$msg_ $m(u)" else msg_="$msg_`awk -v m=$m '$2==m { if ( $4 ~ /^ro,/ ) {printf"%s(ro)",$2 } ; }' /proc/mounts`" fi done if [ -z "$msg_" ] ; then echo "disks ok" ; exit 0 else echo "$msg_" ; exit 2 fi } function check_taskcontroller { if [ "<%=scope.function_hdp_template_var("security_enabled")%>" == "true" ]; then perm=`stat -c %a:%U:%G <%=scope.function_hdp_template_var("task_bin_exe")%> 2>/dev/null` if [ $? -eq 0 ] && [ "$perm" == "6050:root:hadoop" ] ; then echo "taskcontroller ok" else echo 'check taskcontroller' ; exit 1 fi fi } function check_jetty { hname=`hostname` jmx=`curl -s -S -m 5 "http://$hname:50060/jmx?qry=Hadoop:service=TaskTracker,name=ShuffleServerMetrics" 2>/dev/null` ; if [ $? -eq 0 ] ; then e=`echo $jmx | awk '/shuffle_exceptions_caught/ {printf"%d",$2}'` ; e=${e:-0} # no jmx servlet ? if [ $e -gt 10 ] ; then echo "check jetty: shuffle_exceptions=$e" ; exit 1 else echo "jetty ok" fi else echo "check jetty: ping failed" ; exit 1 fi } function check_link { snmp=/usr/bin/snmpwalk if [ -e $snmp ] ; then $snmp -t 5 -Oe -Oq -Os -v 1 -c public localhost if | \ awk ' { split($1,a,".") ; if ( a[1] == "ifIndex" ) { ifIndex[a[2]] = $2 } if ( a[1] == "ifDescr" ) { ifDescr[a[2]] = $2 } if ( a[1] == "ifType" ) { ifType[a[2]] = $2 } if ( a[1] == "ifSpeed" ) { ifSpeed[a[2]] = $2 } if ( a[1] == "ifAdminStatus" ) { ifAdminStatus[a[2]] = $2 } if ( a[1] == "ifOperStatus" ) { ifOperStatus[a[2]] = $2 } } END { up=0; for (i in ifIndex ) { if ( ifType[i] == 6 && ifAdminStatus[i] == 1 && ifOperStatus[i] == 1 && ifSpeed[i] == 1000000000 ) { up=i; } } if ( up == 0 ) { print "check link" ; exit 2 } else { print ifDescr[up],"ok" } }' exit $? ; fi } # Run all checks # Disabled 'check_link' for now... for check in disks taskcontroller jetty; do msg=`check_${check}` ; if [ $? -eq 0 ] ; then ok_msg="$ok_msg$msg," else err_msg="$err_msg$msg," fi done if [ ! -z "$err_msg" ] ; then echo -n "ERROR $err_msg " fi if [ ! -z "$ok_msg" ] ; then echo -n "OK: $ok_msg" fi echo # Success! exit 0