Translations of this page:

Mit Hilfe des folgenden Skriptes ist es möglich, eine Verbindung zwischen einer vorhanden DokuWiki-Integration mit einem vorhanden NagVis zu verbinden. Die Idee hierfür war eine Möglichkeit zu schaffen, von einem Nagios-Host aus der Nagios-Web-Oberfläche heraus unmittelbar auf alle NagVis-Maps zugreifen zu können, in welchen der Nagios-Host vorkommt. Hierfür bin ich über den Umweg von DokuWiki gegangen, nachdem ich aus Nagios direkt heraus keine sinnvolle Lösung gefunden habe.

Folgende Voraussetzungen setzt das Skript (bisher noch) voraus:

  • die Nagios-Host-Definitionen liegen in einem seperatem Verzeichnis in Dateiform ab
  • DokuWiki, NagVis und Nagios laufen auf ein und dem selben Server
  • auf die NagVis-Maps ist direkt über den Browser zugreifbar

Das Skript läuft folgendermaßen ab:

  1. es extrahiert alle in Nagios bekannten Hosts über deren Nagios-Parameter „host_name“
  2. es stellt fest, welche Nagios-Hosts ob und in welchen NagVis-Maps vorkommen
  3. falls eine entsprechende DokuWiki-Datei mit -Verzeichnis nicht existiert, wird diese mit entsprechenden Rechten angelegt
  4. es erstellt IMMER am Anfang der entsprechenden DokuWiki-Datei einen „NagVis“-Eintrag in Tabellenform
  5. es erstellt pro vorhandenem Eintrag in irgendeiner NagVis-Map eine Zeile in der Tabelle mit Mapname und enstprechendem URL-Link

Anmerkung – WICHTIG –: In den bisherigen Tests mit dem Skript sind keine bereits vorhandenen Inhalte der einzelnen DokuWiki-Dateien verloren gegangen. Ich empfehle dennoch, vor jedem Durchlauf eine Sicherung der DokuWiki-Dateien durchzuführen!

Skript „dokuwiki_to_nagvis.sh“

#!/bin/bash
#
# CREATED:              23.10.2007
# AUTHOR:               WolverineJR
# DESCRIPTION:          Dieses Script dient als Verknuepfung zwischen DokuWiki und NagVis.
#                       Das Script durchsucht alle definierte Nagios-Hosts, ob diese in einer
#                       oder mehreren NagVis-Maps vorkommt und erstellt hierfuer in einer
#                       anzugebenden DokuWiki-Datei einen Link auf diese NagVis-Map.

# Path to DokuWiki-Pages for Nagios
DW_PATH=/usr/local/dokuwiki-test

# Name of DokuWiki-File
DW_FILE=host.txt

# Permissions for directories/files for DokuWiki
DW_DIR_MOD=755

# Owner/group for directories/files for DokuWiki
DW_DIR_OWN="wwwrun:www"

# Path in which Nagios-host-definition-files are located
NAG_HOSTS=/usr/local/nagios/etc/hosts

# Path to NagVis-Maps
NAGVIS=/usr/local/nagios/share/nagvis/nagvis/etc/maps

# URL for NagVis-Maps
NAGVIS_EXP_PATH=http://[dein Nagios-Server]/nagios/nagvis/nagvis/index.php?map=

for i in $(/bin/grep host_name $NAG_HOSTS/* | awk -F: '{print $NF}' | sed -e 's/^[\t ]*//g' | egrep -v "^[ ]*#" | awk '{print $2}' | tr [:upper:] [:lower:] | sed -e 's/\s//g')
do
        if /bin/grep -i $i$ $NAGVIS/* | egrep -v ".cfg.bak" 2>&1 1>/dev/null
         then
                if [ ! -d $DW_PATH/$i ]
                 then
                        mkdir $DW_PATH/$i
                        chmod $DW_DIR_MOD $DW_PATH/$i
                        chown $DW_DIR_OWN $DW_PATH/$i
                fi
                if [ ! -f $DW_PATH/$i/$DW_FILE ]
                 then
                        touch $DW_PATH/$i/$DW_FILE
                        chown $DW_DIR_OWN $DW_PATH/$i/$DW_FILE
                fi
                if cat $DW_PATH/$i/$DW_FILE | grep "NagVis-Location" 2>&1 1>/dev/null
                 then
                        sed -e '/==== NagVis-Location ====/,/----/d' $DW_PATH/$i/$DW_FILE > $DW_PATH/$i/$DW_FILE_temp.txt
                        mv -f $DW_PATH/$i/$DW_FILE_temp.txt $DW_PATH/$i/$DW_FILE
                        chown $DW_DIR_OWN $DW_PATH/$i/$DW_FILE
                fi
                if [ -s $DW_PATH/$i/$DW_FILE ]
                 then
                        sed -i '1s/.*$/==== NagVis-Location ====\n\n^  Map  ^  Link  ^\n &/g' $DW_PATH/$i/$DW_FILE
                else
                        printf "==== NagVis-Location ====\n\n^  Map  ^  Link  ^\n " > $DW_PATH/$i/$DW_FILE
                fi
                MAPCOUNT=4
                for j in $(/bin/grep -i $i$ $NAGVIS/* | egrep -v ".cfg.bak" | grep host_name | awk -F: '{print $1}' | sed -e 's/.cfg//g' | awk -F/ '{print $NF}' | uniq)
                do
                        sed -i ''$MAPCOUNT's;.*$;| '$j' | [['$NAGVIS_EXP_PATH''$j']] |\n &;g' $DW_PATH/$i/$DW_FILE
                        let MAPCOUNT=$MAPCOUNT+1
                done
                sed -i ''$MAPCOUNT's;.*$;\n----\n&;g' $DW_PATH/$i/$DW_FILE
        fi
done

Weiterentwicklungen sind erwünscht ;-)

nagios/howtos/wiki_nagvis_link.txt · Zuletzt geändert: 2008/04/30 15:20 von wolverinejr
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0