From c21d764bcfe32bd132afc92a0ecfd0f3938d7ebb Mon Sep 17 00:00:00 2001 From: jweiss Date: Fri, 1 Feb 2008 17:11:44 +0000 Subject: [PATCH] allow for simple service monitoring via tagged members --- gen/nagios-wsh.gen | 69 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/gen/nagios-wsh.gen b/gen/nagios-wsh.gen index 2b6567d0..3700360d 100755 --- a/gen/nagios-wsh.gen +++ b/gen/nagios-wsh.gen @@ -24,14 +24,14 @@ while (($root_list_id, $hostname) = $sth0->fetchrow_array) { umask 022; open(OUT, ">$outdir/$hostname") || exit $MR_OCONFIG; print OUT "# This file is automatically generated by Moira. Do not edit.\n"; - $sth = $dbh->prepare("SELECT m.name FROM machine m, imembers i " . + $sth = $dbh->prepare("SELECT m.name, i.tag FROM machine m, imembers i " . "WHERE i.list_id = " . $dbh->quote($root_list_id) . "AND i.member_type = 'MACHINE' AND m.status = 1 " . "AND i.member_id = m.mach_id AND i.direct = 1 ORDER BY m.name") || exit $MR_DBMS_ERR; $sth->execute; - while (($name) = $sth->fetchrow_array) { + while (($name, $tag) = $sth->fetchrow_array) { next if $name eq "[NONE]"; $name = lc($name); push(@allwshhosts, $name); @@ -68,7 +68,70 @@ define serviceescalation{ END - } + next if $tag == 0; + $sth1 = $dbh->prepare("SELECT s.string " . + "FROM strings s " . + "WHERE s.string_id = " . $tag) + || exit $MR_DBMS_ERR; + $sth1->execute; + my @tags = split /\s+/,$sth1->fetchrow_array; + $sth1->finish; + my %services; + while (<@tags>) { + my $service = $_; + chomp $service; + if ($service =~ /^(FTP|NFS|HTTP|HTTPS|SMTP|SSHD|TELNET|TNS)$/i) { + my $ucservice = $service; + $ucservice =~ tr/a-z/A-Z/; + my $lcservice = $service; + $lcservice =~ tr/A-Z/a-z/; + $services{$ucservice}++; + print OUT <fetchrow_array print OUT <