add generation of config files for monitoring
authorAndy Witter <awitter@georgialibraries.org>
Fri, 3 May 2013 14:18:48 +0000 (10:18 -0400)
committerAndy Witter <awitter@georgialibraries.org>
Fri, 3 May 2013 14:18:48 +0000 (10:18 -0400)
GenaSYS.sh

index 84a60cf..b2e1385 100755 (executable)
@@ -54,6 +54,7 @@ done
 WD=$(dirname $(readlink -f $0))
 CUSTOMDIR="$WD/custom"
 EG_VERSION="2.3.6"
+UBUNTU_CODENAME="precise"
 LICENSE="$WD/License.txt"
 TEMPLATEDIR="$WD/templates"
 DEFAULT_PRIVATE_NET="10.0.1"
@@ -1166,6 +1167,7 @@ MEMCACHE01_IP="${PRIVATENET}.151"
 MEMCACHE02_IP="${PRIVATENET}.152"
 BACKUP01_IP="${PRIVATENET}.171"
 MONITOR01_IP="${PRIVATENET}.201"
+MONITOR02_IP="${PRIVATENET}.202"
 ADMIN01_IP="${PRIVATENET}.211"
 
 MASTER_DB="$(echo $MACHINES_DB_ONLY | awk '{ print $1 }')"
@@ -2138,45 +2140,35 @@ if ! echo "${REPORTS_NFS_HOSTNAME}" | grep -q "reporter0\|db0" 2>/dev/null
        Reports_NFS_Host
 fi
 
-### Configure basic monitoring for non brick nodes.
-for NAGINODE in $HOSTNAMES_NO_BRICKS
+##### Configure basic monitoring for non brick nodes.
+for NAGINODE in ${MACHINES_NO_BRICKS}
 do
-        ### hosts.cfg
+        ### Generate the hosts.cfg file
         MONITOR_HOST=$( echo "${NAGINODE}" | tr  '[:lower:]'  '[:upper:]' )
-       if [ "$USE_HOSTNAME_PREFIX" = "y" ] || [ "$USE_HOSTNAME_PREFIX" = "Y" ]
-       then
-               printf 'define host {\n' >>$TMPNAGIHOSTS;printf "\thost_name\t${PRFX}-${NAGINODE}\n" >>$TMPNAGIHOSTS
-               printf "\talias\t\t${PRFX}-$NAGINODE\n" >>$TMPNAGIHOSTS
-               MACHINES_LIST="$MACHINES_LIST$(printf "${PRFX}-$NAGINODE ")"
-       else
-               printf 'define host {\n' >>$TMPNAGIHOSTS;printf "\thost_name\t${NAGINODE}\n" >>$TMPNAGIHOSTS
-                printf "\talias\t\t$NAGINODE\n" >>$TMPNAGIHOSTS
-               MACHINES_LIST="$MACHINES_LIST$(printf "$NAGINODE ")"
-       fi
+       printf 'define host {\n' >>$TMPNAGIHOSTS;printf "\thost_name\t${NAGINODE}\n" >>$TMPNAGIHOSTS
+       printf "\talias\t\t$NAGINODE\n" >>$TMPNAGIHOSTS
+       MACHINES_LIST="$MACHINES_LIST$(printf "$NAGINODE ")"
         
        if echo $NAGINODE | grep lvs0
         then
-                eval printf "\\\taddress\\\t\\\t\$${MONITOR_HOST}_PRIVATE_IP\\\n" >>$TMPNAGIHOSTS
+                eval printf "\\\taddress\\\t\\\t\$${MONITOR_HOST#*-}_PRIVATE_IP\\\n" >>$TMPNAGIHOSTS
         else
-                eval printf "\\\taddress\\\t\\\t\$${MONITOR_HOST}_IP\\\n" >>$TMPNAGIHOSTS
+                eval printf "\\\taddress\\\t\\\t\$${MONITOR_HOST#*-}_IP\\\n" >>$TMPNAGIHOSTS
         fi
         
        printf '\tuse\t\tgeneric-host\n}\n' >>$TMPNAGIHOSTS
+
 done
 
-### Build lists to generate hostgroups for Icinga/Nagios
+### Build lists to generate hostgroups for Icinga/Nagios monitoring server
 OSRF_MACHINES_LIST="$BRICKDRONELIST $MACHINES_UTILITY $MACHINES_SIP_ONLY $MACHINES_REPORTER"
 ALL_MACHINES_LIST="$BRICKDRONELIST $MACHINES_LIST ${REPORTS_NFS_HOSTNAME}"
 echo $OSRF_MACHINES_LIST
-### Generate hostgroups file
+
+### Define the temp hostgroups.cfg file
 TMPNAGHOSTGROUPS="$TMPFOLDER/hostgroups.cfg"
-#printf 'define hostgroup {\n' >>$TMPNAGHOSTGROUPS
-#printf "\thostgroup_name all\n" >>$TMPNAGHOSTGROUPS
-#printf "\talias All Servers\n" >>$TMPNAGHOSTGROUPS
-#printf "\tmembers *\n" >>$TMPNAGHOSTGROUPS
-#printf '}\n' >>$TMPNAGHOSTGROUPS 
 
-### Generate block for hostgroups.cfg for Icinga/Nagios monitoring
+### Generate block for hostgroups.cfg for Icinga/Nagios monitoring server.
 GenHostGroup () { ### Usage: $0 "hostgroup_name" "alias" "members"
 printf 'define hostgroup {\n' >>$TMPNAGHOSTGROUPS
 printf "\thostgroup_name ${1}\n" >>$TMPNAGHOSTGROUPS
@@ -2185,6 +2177,7 @@ printf "\tmembers ${3// /,}\n" >>$TMPNAGHOSTGROUPS
 printf '}\n' >>$TMPNAGHOSTGROUPS
 }
 
+### Generate hostgroups.cfg file
 GenHostGroup "evergreen-heads" "Evergreen Head Servers" "$BRICKHEADLIST"
 GenHostGroup "opensrf-nodes" "Opensrf Nodes" "$OSRF_MACHINES_LIST"
 GenHostGroup "sip-servers" "SIP Servers" "$MACHINES_SIP_ONLY"
@@ -2202,8 +2195,39 @@ do
        cp -f "$TMPFOLDER/hosts.cfg" "$OUTDIR/$MONITOR/etc/icinga/objects"
        cp -f "$TMPFOLDER/hostgroups.cfg" "$OUTDIR/$MONITOR/etc/icinga/objects"
        cp -f "$TEMPLATEDIR/monitor/services.cfg" "$OUTDIR/$MONITOR/etc/icinga/objects"
+       cp -f "$TEMPLATEDIR/monitor/commands.cfg" "$OUTDIR/$MONITOR/etc/icinga/objects"
+
+       ### Generate sources.list for apt to install icinga
+        mkdir -p "${OUTDIR}/${MONITOR}/etc/apt/sources.list.d/"
+        echo "#PPA for Icinga monitoring for Evergreen" >> "${OUTDIR}/${MONITOR}/etc/apt/sources.list.d/icinga_ppa.list"
+        echo "deb http://ppa.launchpad.net/formorer/icinga/ubuntu $UBUNTU_CODENAME main" >> "${OUTDIR}/${MONITOR}/etc/apt/sources.list.d/icinga_ppa.list"
+        echo "deb-src http://ppa.launchpad.net/formorer/icinga/ubuntu $UBUNTU_CODENAME main" >> "${OUTDIR}/${MONITOR}/etc/apt/sources.list.d/icinga_ppa.list"
 done
 
+### Generate npre setup script for all monitored hosts.
+TMPSETUPMONITOR="/$TMPFOLDER/.setup_monitoring.sh"
+echo sed -i \'s^allowed_hosts=127.0.0.1^#allowed_hosts=127.0.0.1^g\' "/etc/nagios/nrpe.cfg" >>$TMPSETUPMONITOR
+for NAGINODE in ${MACHINES_MONITOR} ## strip prefix
+do
+       MONITOR_SERVER=$( echo "${NAGINODE}" | tr  '[:lower:]'  '[:upper:]' )
+       ### remove prefix ${MONITOR_SERVER#*-}
+       echo ${MACHINES_MONITOR#*-}
+       THIS_MONITOR_SERVER_IP=$(eval echo \$${MONITOR_SERVER#*-}_IP)
+       if [ -z "$MONITOR_SERVER_IP_LIST" ]
+       then
+               MONITOR_SERVER_IP_LIST="$THIS_MONITOR_SERVER_IP"
+       else
+               MONITOR_SERVER_IP_LIST="$MONITOR_SERVER_IP_LIST $THIS_MONITOR_SERVER_IP"
+       fi
+done
+echo MONITOR_SERVER_IP_LIST is: $MONITOR_SERVER_IP_LIST
+printf "echo \"allowed_hosts=${MONITOR_SERVER_IP_LIST// /,}\" >> /etc/nagios/nrpe.cfg\n" >>$TMPSETUPMONITOR
+echo sed -i \'s^dont_blame_nrpe=0^dont_blame_nrpe=1^g\' "/etc/nagios/nrpe.cfg" >>$TMPSETUPMONITOR
+chmod 755 $TMPSETUPMONITOR
+
+
+
+
 ### Write config info file.
 echo >> "$NETCFGFILE"
 echo "Cluster Public (shared) IP Address set to : $CLUSTERIPADDRESS" >> "$NETCFGFILE"
@@ -2367,6 +2391,7 @@ do
                mkdir ../setup_${SUBFOLDER}
                mv ${SUBFOLDER}_apt.list ../setup_${SUBFOLDER}
                cp $TMPFOLDER/debconf-settings ../setup_${SUBFOLDER}
+               cp $TMPSETUPMONITOR ../setup_${SUBFOLDER}
                touch ../setup_${SUBFOLDER}/.osrf_node
                sed -i "s^HOSTNAME^${SUBFOLDER}^g" ../setup_${SUBFOLDER}/debconf-settings
                        
@@ -2410,6 +2435,7 @@ printf " |\r";sleep 0.05; printf " /\r";sleep 0.05; printf -- ' - \r';sleep 0.05
 cd $NODE_FOLDER
 mkdir "setup_${NODE_FOLDER}"
 cp "$TEMPLATEDIR/setup.sh" "setup_${NODE_FOLDER}/setup_$NODE_FOLDER.sh"
+cp "$TMPSETUPMONITOR" "setup_${NODE_FOLDER}"
 chmod 755 "setup_${NODE_FOLDER}/setup_$NODE_FOLDER.sh"
 cp "$TEMPLATEDIR/setup-vars" "setup_${NODE_FOLDER}/setup-vars"
 cp "$TEMPLATEDIR/setup-functions" "setup_${NODE_FOLDER}/setup-functions"