Mit Nagios kann man den Status von Diensten und Rechnern abfragen, um so einen Überblick über seine Systeme zu bekommen. Diese Anleitung erklärt die Installation von Nagios ohne root-Rechte auf einem Uberspace-Account. Hierbei wird in ~/src kompiliert und in ~/opt sowie in html/nagios installiert.
  1. Quellen laden Zuerst Laden und Entpacken wir uns die Nagios-Sourcen (evtl. aktuellere Versionen hier). Es empfiehlt sich, das in einem eigenen Verzeichnis zu tun; hier "~/src":

    mkdir ~/src cd ~/src wget 'http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.4.tar.gz' wget 'http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz' tar xzf nagios-3.4.4.tar.gz tar xzf nagios-plugins-1.4.16.tar.gz

  2. Kompilieren Mit ./configure und make die Nagios-Quellen übersetzen, "ubernaut" ist mit dem eigenen Benutzernamen auszutauschen:

    cd nagios ./configure --with-command-group=ubernaut --with-command-user=ubernaut --with-nagios-user=ubernaut --with-nagios-group=ubernaut --prefix=/home/ubernaut/opt/nagios --with-httpd-conf=/home/ubernaut/opt/nagios/etc/apache2/ --with-init-dir=/home/ubernaut/opt/nagios/etc/init.d/ --with-cgiurl=/cgi-bin/nagios make all

  3. Vorbereitung für die Installation Anlegen von Symlinks und Verzeichnissen, sodass hinterher die Installation klappt ("ubernaut" ersetzen):

    mkdir -p ~/opt/nagios mkdir -p ~/opt/nagios/var/rw mkdir -p ~/opt/nagios/var/lock mkdir -p ~/opt/nagios/etc/apache2 mkdir -p ~/opt/nagios/etc/init.d mkdir /var/www/virtual/ubernaut/html/nagios mkdir /var/www/virtual/ubernaut/cgi-bin/nagios ln -s /var/www/virtual/ubernaut/cgi-bin/nagios ~/opt/nagios/sbin ln -s /var/www/virtual/ubernaut/html/nagios ~/opt/nagios/share

    Ein Symlinken von opt ins html Verzeichnis (ln -s ~/opt/nagios/share .../html/nagios) hat bei meinem Uberspace nicht geklappt (der Apache ignoriert den Symlink). Die letzten zwei Zeilen sorgen dafür, dass make install gleich an den richtigen Ort schreibt.
  4. Installation

    make install make install-init make install-config make install-webconf make install-exfoliation

    Das Ergebnis sollte nun so aussehen:

    ubernaut@uberspace:~/opt/nagios> tree -A . ├── bin │ ├── nagios │ └── nagiostats ├── etc │ ├── apache2 │ │ └── nagios.conf │ ├── cgi.cfg │ ├── init.d │ │ └── nagios │ ├── nagios.cfg │ ├── objects │ │ ├── commands.cfg │ │ ├── contacts.cfg │ │ ├── localhost.cfg │ │ ├── printer.cfg │ │ ├── switch.cfg │ │ ├── templates.cfg │ │ ├── timeperiods.cfg │ │ └── windows.cfg │ └── resource.cfg ├── libexec ├── sbin -> /var/www/virtual/ubernaut/cgi-bin/nagios ├── share -> /var/www/virtual/ubernaut/html/nagios └── var ├── archives ├── lock ├── rw └── spool └── checkresults

    ... und im Web-Teil:

    ubernaut@uberspace:/var/www/virtual/ubernaut> ls cgi-bin/nagios html/nagios cgi-bin/nagios: avail.cgi cmd.cgi config.cgi extinfo.cgi histogram.cgi history.cgi notifications.cgi outages.cgi showlog.cgi status.cgi statusmap.cgi statuswml.cgi statuswrl.cgi summary.cgi tac.cgi trends.cgi html/nagios: config.inc.php contexthelp docs images includes index.php js main.php media robots.txt rss-corefeed.php rss-newsfeed.php side.php ssi stylesheets

    Nun müssen noch die Rechte für die CGI-Skripte gesetzt werden, da sonst suexec später einen Fehler wirft:

    chmod 755 /var/www/virtual/ubernaut/cgi-bin/nagios chmod 755 /var/www/virtual/ubernaut/cgi-bin/nagios/*cgi

  5. Configfiles anpassen & htpasswd anlegen Um den Uberspace-Admins nicht in das Syslog zu schreiben, in ~/opt/nagios/etc/nagios.cfg:

    use_syslog=0

    Damit Nagios starten kann, in ~/opt/nagios/etc/init.d/nagios:

    NagiosLockDir=/var/lock/subsys

    ändern auf:

    NagiosLockDir=${prefix}/var/lock/subsys

    und

    su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"

    ändern auf:

    touch $NagiosVarDir/nagios.log $NagiosRetentionFile

    Leider ist mir hierfür keine ./configure-Option bekannt, die das gleich richtig setzen würde. Nun noch ein Passwort für den Standard-Admin "nagiosadmin" setzen:

    htpasswd -s -c /var/www/virtual/ubernaut/html/nagios/.htpasswd nagiosadmin

    ... und die .htaccess-Datei in /var/www/virtual/ubernaut/html/nagios/.htaccess mit folgendem Inhalt anlegen:

    AuthName "Nagios Access" AuthType Basic AuthUserFile /var/www/virtual/ubernaut/html/nagios/.htpasswd Require valid-user

    Nicht vergessen, cgi-bin/nagios damit zu versorgen:

    cp /var/www/virtual/ubernaut/html/nagios/.htaccess /var/www/virtual/ubernaut/cgi-bin/nagios/

    Wenn alles richtig ist, sollte im Webbrowser schon die Hauptseite von Nagios zu sehen sein; bei Klick auf "Tactical Overview" erscheint die Meldung:

    Whoops! Error: Could not read object configuration data!

    Das bedeutet, dass die CGI-Skripte korrekt ausgeführt werden können und noch der Nagios-Daemon aktiviert sowie die Plugins installiert werden müssen.
  6. Plugins Um mit Nagios Dienste abfragen zu können, bedarf es einiger Plugins. Hierzu wechseln wir in das Quellverzeichnis und kompilieren diese:

    cd ~/src/nagios-plugins-1.4.16/ ./configure --with-nagios-user=ubernaut --with-nagios-group=ubernaut --prefix=/home/ubernaut/opt/nagios --with-cgiurl=/cgi-bin/nagios make make install

    In ~/opt/nagios/libexec sollte es nun so aussehen:

    check_apt check_cluster check_dns check_ftp check_ifstatus check_ldap check_mailq check_mysql_query check_nt check_nwstat check_pop ...(etc)...

  7. Start! Das Startskript noch ausführbar machen:

    chmod +x ~/opt/nagios/etc/init.d/nagios

    Sich vergewissern, dass die Konfiguration stimmt und den Dienst starten:

    ~/opt/nagios/etc/init.d/nagios checkconfig ~/opt/nagios/etc/init.d/nagios start

    Nun sollte der Prozess laufen:

    ubernaut@uberspace:~> ps ux | grep nagios ubernaut 10867 0.0 0.0 23548 1044 ? Ssl 13:07 0:00 /home/ubernaut/opt/nagios/bin/nagios -d /home/ubernaut/opt/nagios/etc/nagios.cfg

    ... und im Tactical Overview im Web so etwas stehen:

    Tactical Monitoring Overview Last Updated: Wed Jan 23 13:08:27 CET 2013 Updated every 90 seconds Nagios® Core™ 3.4.4 - www.nagios.org Logged in as nagiosadmin

    Das war es auch schon. Es bietet sich an, den Nagios-Startbefehl auf seinem Uberspace automatisch starten zu lassen, hierzu sei auf die Uberspace-Wiki verwiesen. Als run-Skript verwende ich folgendes:

    #!/bin/sh ~/opt/nagios/etc/init.d/nagios start 2>&1 #wait for nagios to come up sleep 10 #prevent backgrounding while test -e ~/opt/nagios/var/nagios.lock ; do sleep 1m done

Warum schaut das hier so komisch aus ?