]> andersk Git - moira.git/commitdiff
handle deep URLs and virtual hosts
authorjweiss <jweiss>
Mon, 4 Feb 2008 23:45:41 +0000 (23:45 +0000)
committerjweiss <jweiss>
Mon, 4 Feb 2008 23:45:41 +0000 (23:45 +0000)
gen/nagios-wsh.gen

index 3700360d7f728cccc3ff27e96ed5c58814a0af8e..ab61299e114a8d2311c71add1409a617f0107dba 100755 (executable)
@@ -113,9 +113,77 @@ define service{
         }
 
 END
-           } else {
-               printf STDERR "Machine %s has unknown service %s; ignoring\n", $name, $service;
-           }
+           } else { # Hopefully this is a URL of some sort
+               my $protocol;
+               my $server;
+               my $path;
+               if ($service =~ /^([a-z]*):\/\/([^\/]*)(.*)$/ ) {
+                   $protocol = $1;
+                   $server = $2;
+                   $path = $3;
+                   $protocol =~ tr/a-z/A-Z/;
+                   $server =~ tr/A-Z/a-z/;
+               }
+               if ($protocol =~ /^HTTP(|S)$/) {
+                   $path = "/" if ($path eq "");
+                   if ($server eq $name && $path eq "/") { # this is a simple service
+                       push @tags,$protocol;
+                   }
+                   # prep a bunch of variables for the text we'll spit out
+                   my $description = "$protocol-$server-$path";
+                   $description =~ s/-\//-/g;
+                   $description =~ s/\/-/-/g;
+                   $description =~ s/\//-/g;
+                   $description =~ s/-$//g;
+                   $description =~ tr/A-Z/a-z/;
+                   my $ucdescription = $description;
+                   $ucdescription =~ tr/a-z/A-Z/;
+                   my $SSL = "";
+                   if ($protocol eq "HTTPS") {
+                       $SSL = "--SSL -k /var/nagios/etc/cert.pem";
+                   }
+                   print OUT <<END;
+define command{
+       command_name    check_$name-$description
+       command_line    \$USER1\$/check_http -H $server $SSL -u $path
+       }
+
+define service{
+       host_name               $name
+       name                    $description-service
+       service_description     $ucdescription
+       contact_groups          wsh
+       check_command           check_$name-$description
+       use                     generic-service
+       }
+
+define serviceescalation{
+       host_name               $name
+       contact_groups          wsh,wsh-mail
+       service_description     $ucdescription
+       first_notification      2
+       last_notification       0
+       notification_interval   0
+       }
+
+END
+                   if ($services{$protocol}) {
+                   print OUT <<END;
+define servicedependency{
+       dependent_host_name             $name
+       dependent_service_description   $ucdescription
+       host_name                       $name
+       service_description             $protocol
+       execution_failure_criteria      n
+       notification_failure_criteria   w,u,c
+       }
+
+END
+                   }
+               } else {
+                   printf STDERR "Machine %s has unknown service %s; ignoring\n", $name, $service;
+               }
+           }  # if SERVICE else URL
 
            if ($services{'HTTPS'} && $services{'HTTPS-CERT'}) {
                print OUT <<END;
This page took 0.396107 seconds and 5 git commands to generate.