From 23f46ed08e49dd78a222a560250dc04a04efa394 Mon Sep 17 00:00:00 2001 From: Andy Witter Date: Tue, 30 Apr 2013 07:11:20 -0400 Subject: [PATCH] Add the dynamic generation of hostgroups.cfg file for Icinga/Nagios --- GenaSYS.sh | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/GenaSYS.sh b/GenaSYS.sh index f202271..f33a585 100755 --- a/GenaSYS.sh +++ b/GenaSYS.sh @@ -25,8 +25,8 @@ PURPOSE_="Generate config files needed for Evergreen-ILS Cluster" SYNOPSIS_="$NAME_" REQUIRES_="standard GNU commands, apt, dpkg" - VERSION_="1.02" - DATE_="2010-09-18; last update: 2013-04-26" + VERSION_="1.03" + DATE_="2010-09-18; last update: 2013-04-30" AUTHOR_="Andy Witter " URL_="http://evergreen-ils.org" CATEGORY_="devel" @@ -1088,6 +1088,9 @@ PRFX="$HOSTNAME_PREFIX" ### Only DB machines. MACHINES_DB_ONLY="${PRFX}-db01 ${PRFX}-db02 ${PRFX}-db03" + + ### Only Memcache servers. + MACHINES_MEMCACHE_ONLY="${PRFX}-memcache01 ${PRFX}-memcache02" ### Only logger machines. MACHINES_LOGGER="${PRFX}-logger01" @@ -1101,6 +1104,9 @@ PRFX="$HOSTNAME_PREFIX" ### Only monitor machines. MACHINES_MONITOR="${PRFX}-monitor01" + ### Only reporter machines. + MACHINES_REPORTER="${PRFX}-reporter01" + else ### Without hostname prefix. @@ -1123,6 +1129,9 @@ else ### Only DB machines. MACHINES_DB_ONLY="db01 db02 db03" + ### Only Memcache servers. + MACHINES_MEMCACHE_ONLY="memcache01 memcache02" + ### Only logger machines. MACHINES_LOGGER="logger01" @@ -1134,6 +1143,9 @@ else ### Only monitor machines. MACHINES_MONITOR="monitor01" + + ### Only reporter machines. + MACHINES_REPORTER="reporter01" fi HOSTNAMES_NO_BRICKS="lvs01 lvs02 db01 db02 db03 logger01 utility01 sip01 sip02 reporter01 memcache01 memcache02 monitor01 backup01 admin01" @@ -1509,7 +1521,6 @@ for BRICK in $(seq $BRICKCOUNT) done -echo $BRICK_HEAD_LIST ### Setup hosts file for bricks. cat $TMPFOLDER/hosts-footer >> "$TMPHOSTS" @@ -1692,6 +1703,7 @@ for BRICK in $(seq $BRICKCOUNT) >> $TMPHOSTS eval printf "\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}\\\tA\\\t\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}_IP\\\n" >> $TMPZONEFILE eval printf "${BRICK}${DRONE}\\\tIN\\\tPTR\\\t\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}.${CLUSTERDOMAINNAME}.\\\n" >> $TMPREVZONEFILE + DRONE_LIST="$DRONE_LIST$(eval printf "\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}\ ")" ### Monitoring printf 'define host {\n' >>$TMPNAGIHOSTS;eval printf "\\\thost_name\\\t\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}\\\n" >>$TMPNAGIHOSTS eval printf "\\\talias\\\t\\\t\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}\\\n" >>$TMPNAGIHOSTS @@ -1706,6 +1718,9 @@ for BRICK in $(seq $BRICKCOUNT) done +### Add list of bricks and drones +BRICK_DRONE_LIST="$BRICK_HEAD_LIST $DRONE_LIST" + ### Setup hosts file for bricks. cat $TMPFOLDER/hosts-footer >> "$TMPHOSTS" sed -i "s^sampledomain.org^$CLUSTERDOMAINNAME^g" "$TMPHOSTS" @@ -1746,7 +1761,10 @@ if [ "$DRONELESS" == "1" ] echo "done!" fi +### Fix padding of lists. BRICKHEADLIST="$(echo "$BRICK_HEAD_LIST" | sed -e 's/^ *//g' -e 's/ *$//g')" +DRONELIST="$(echo "$DRONE_LIST" | sed -e 's/^ *//g' -e 's/ *$//g')" +BRICKDRONELIST="$BRICKHEADLIST $DRONELIST" ### Complete DNS zonefile configuration cat $TMPFOLDER/zonefile-footer >> "$TMPZONEFILE" @@ -2129,9 +2147,11 @@ do 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 if echo $NAGINODE | grep lvs0 @@ -2142,15 +2162,46 @@ do fi printf '\tuse\t\tgeneric-host\n}\n' >>$TMPNAGIHOSTS - eval echo \${MONITOR_HOST} - eval echo \$${MONITOR_HOST}_IP done +### Build lists to generate hostgroups for Icinga/Nagios +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 +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 +GenHostGroup () { ### Usage: $0 "hostgroup_name" "alias" "members" +printf 'define hostgroup {\n' >>$TMPNAGHOSTGROUPS +printf "\thostgroup_name ${1}\n" >>$TMPNAGHOSTGROUPS +printf "\talias ${2}\n" >>$TMPNAGHOSTGROUPS +printf "\tmembers ${3// /,}\n" >>$TMPNAGHOSTGROUPS +printf '}\n' >>$TMPNAGHOSTGROUPS +} + +GenHostGroup "evergreen-heads" "Evergreen Head Servers" "$BRICKHEADLIST" +GenHostGroup "opensrf-nodes" "Opensrf Nodes" "$OSRF_MACHINES_LIST" +GenHostGroup "sip-servers" "SIP Servers" "$MACHINES_SIP_ONLY" +GenHostGroup "utility-servers" "Utility Servers" "$MACHINES_UTILITY" +GenHostGroup "db-servers" "Database Servers" "$MACHINES_DB_ONLY" +GenHostGroup "memcache-servers" "Memcache Servers" "$MACHINES_MEMCACHE_ONLY" +GenHostGroup "lvs-servers" "LVS Servers" "$MACHINES_LVS_ONLY" +GenHostGroup "reporter-servers" "Reporter Servers" "$MACHINES_REPORTER" +GenHostGroup "log-servers" "Logging Servers" "$MACHINES_LOGGER" + ### Configure the monitoring servers. for MONITOR in $MACHINES_MONITOR do mkdir -p "$OUTDIR/$MONITOR/etc/icinga/objects" cp -f "$TMPFOLDER/hosts.cfg" "$OUTDIR/$MONITOR/etc/icinga/objects" + cp -f "$TMPFOLDER/hostsgroups.cfg" "$OUTDIR/$MONITOR/etc/icinga/objects" + cp -f "$TEMPLATEDIR/monitor/services.cfg" "$OUTDIR/$MONITOR/etc/icinga/objects" done ### Write config info file. -- 2.11.0