Da bei uns im Unternehmen Twiki als Wiki implementation benutzt wird, habe ich die Nagios integration dafuer geschrieben.
Vorraussetzung ist eine Twikiinstallation und Nagios.
Das erste Problem habe ich in der Syntax von Twiki. Eine neue Seite wird angelegt und auch automatisch verlinkt wenn das Wort gewisse kriterien erfuellt. Das ist Grossbuchstabe gefolgt von Kleinbuchstabe wieder Grossbuchstabe (Die Anzahl der einzelen Sorten ist belibig). Also Z.B. WikiWeb ist gultig wobei WIKIWeb nicht funktioniert. Des weitern duerfen keine Sonderzeichen enthalten sein.
Da ich die Seitennamen automatisch generieren wollte um nacher Besser mit arbeiten zu koennen, habe ich mit ein kleines CGI gebastelt welches mir die Namen passend zusammensetzt.
Dort generiere den Link zum Wiki. Er folgt der Syntax fuer den Host → Host + hostname (erster Charakter Uppercase) und fuer den Servcie → Host + hostname + Srv + servicename (erster Charakter Uppercase)
#!/usr/bin/perl # Parser um aus Host- und Service- Namen fuer das Wiki mit Link zu generieren # ME 20061010 use strict; use CGI; sub wikiexec($); my $cgi=new CGI; # Uebergabe der des Host und Servicenamen mit Get my $hostname = wikiexec($cgi->param("host")); my $servicedesc = wikiexec($cgi->param("srv")); # Der Link Zum Wiki Web my $wikiweblink = "http://xxx.xxx.xxx.xxx/twiki/bin/view.pl/NagiosServer/"; my $link; if ($hostname) { if ($servicedesc) { #Linkgenerierung fuer Service immer Host + hostname + Srv + servicedesc $link = "${wikiweblink}Host${hostname}Srv$servicedesc"; } else { #Linkgenerierung fuer Service immer Host + hostname $link = "${wikiweblink}Host$hostname"; } } else { print $cgi->header(); print "Keine Hostnamen angegeben. Bitte geben Sie den Hostname an"; exit; } print $cgi->redirect($link); ######################################################################## #removes any non-letters/digits from the given string sub wikiexec ($) { $_=shift; $_||=''; s/[^\w\d]//g; # Entfernen allerzeichen ausser Buchstabe und Zahlen my $z = ucfirst; #Um ein wikiwort zu bilden wird der erste Buchstabe aufjeden fall Uppercase return $z; } ########################################################################
Eingebunden habe ich das ganze ueber die notes_url aber die action_arl koennte man auch nehmen.
Beim Host:
define hostextinfo{
host_name *
notes_url /nagios/cgi-bin/wiki.cgi?host=$HOSTNAME$
}
Beim Servcie:
define serviceextinfo{
host_name ikarus
service_description Samba_by_SSH
notes_url /nagios/cgi-bin/wiki.cgi?host=$HOSTNAME$&srv=$SERVICEDESC$
}
Wenn die Seite schon existiert kommt man direkt auf die Seite ansonsten kann man sie direkt anlegen. Ich habe mir in meinen Fall ein eigenes Web fuer nagios angelegt und arbeite nur in dem.
Dort habe ich mit eine Hauptseite eingerichtet die ueber einen Serachbefehl alle Nagios Dokumente auflistet. So komme ich auch vom Wiki auf die Seiten ohne dehren Namen wissen zu muessen.
%SEARCH{"Host" scope="topic" nosummary="on" noheader="on" nosearch="on" nototal="on" format="$topic $n"}%
Fuer den Host habe ich mir ein Searchbefehl gemacht der mir die angelegten Services auflistet. Damit ich nicht immer wieder zurueck in die Nagios Uebersicht muss.
%SEARCH{"%TOPIC%Srv" scope="topic" nosummary="on" noheader="on" nosearch="on" nototal="on" format="$topic $n"}%
Anregungen, Berichtigungen oder Presentierungs vorschlaege sind erwuenscht. Einfach eine PM an qeqar senden.