Überwachung eines Rechners, der nur per HTTP/Apache erreichbar ist

Dies war der erste Einsatz des Urvaters von Nag(ix)SC. Ein Rechner sollte als Reverse-Proxy beim Kunden innerhalb einer DMZ stehen. In der Firewall wurde folglich neben ICMP/Ping nur der Port 443 (HTTPS) geöffnet. Support und Administration der Maschine erfolgt über ein nur beim Bedarf aufgebautes VPN.

Beteiligte Rechner

  • Der zu überwachende Reverse-Proxy ("revproxy")
  • Der Nagios-Server ("nagios")

Vorgehensweise

Auf dem Reverse-Proxy

  1. Download der Software
  2. Anlegen einer (oder mehrerer) conf-Dateien
  3. Konfiguration des Apache Web-Servers
  4. Einrichtung cron

Download der Software

1 root@revproxy:~ % cd /usr/local
2 root@revproxy:/usr/local % wget -O /tmp/nagixsc.tar.gz http://github.com/wAmpIre/nagixsc/tarball/master
3 [...]
4 root@revproxy:/usr/local % tar xzf /tmp/nagixsc.tar.gz
5 root@revproxy:/usr/local % mv wAmpIre-nagixsc-* nagixsc

Anlegen einer (oder mehrerer) conf-Dateien

1 root@revproxy:/usr/local % cd nagixsc
2 root@revproxy:/usr/local/nagixsc % mkdir -p etc/conf
3 root@revproxy:/usr/local/nagixsc % vi etc/conf/revproxy.conf ### Siehe unten

Die Datei "/usr/local/nagixsc/etc/conf/revproxy.conf":

 1 [kunde-revproxy]
 2 APT: /usr/lib/nagios/plugins/check_apt -t 60
 3 Disk_Root: /usr/lib/nagios/plugins/check_disk -w 10% -c 5% -m -p /
 4 Disk_Var: /usr/lib/nagios/plugins/check_disk -w 30% -c 15% -m -p /var
 5 Load: /usr/lib/nagios/plugins/check_load -w 5,5,5 -c 10,10,10
 6 Procs_Apache: /usr/lib/nagios/plugins/check_procs -C apache2 -w 3:8 -c 3:10
 7 Procs_Total: /usr/lib/nagios/plugins/check_procs -w 100 -c 150
 8 RAID: /usr/local/nagixsc/plugins/check_raid.pl
 9 Swap: /usr/lib/nagios/plugins/check_swap -w 50% -c 25%
10 Users: /usr/lib/nagios/plugins/check_users -w 2 -c 3
11 
12 [kunde-webappserver]
13 _host_check: /usr/lib/nagios/plugins/check_host -H 192.168.XXX.XXX
14 HTTP: /usr/lib/nagios/plugins/check_http -H 192.168.XXX.XXX --ssl -u /XXX/

Konfiguration des Apache Web-Servers

Der Apache wurde so konfiguriert, dass alle Zugriffe per default Virtual Host per Reverse Proxy an die Web-Applikation gehen.

Auf einem weiteren virtuellen Host, der unter einem bestimmten Namen (aber der gleichen IP) angesprochen werden muss, gehen die Zugriffe auf das Verzeichnis "/srv/www/nagixsc/". Die Zugriffe hierauf sind mit mod_auth_host IP-basierend und mod_auth_basic & Co. mit Benutzername/Passwort geschützt.

FIXME Apache-Konfiguration einfügen

Einrichtung cron

Für die regelmäßige Ausführung der Plugins und Erzeugung der XML-Datei wird auf cron zurückgegriffen. Da alle Plugins ohne "root"-Rechte auskommen, wurde hierfür der Benutzer "nagios" angelegt bzw. benutzt.

1 root@revproxy:~ % crontab -e -u nagios ### Inhalt siehe unten
2 root@revproxy:~ % crontab -e           ### Inhalt siehe unten
1 # Crontab for "nagios" 
2 # m h  dom mon dow   command
3 0,15,30,45 * * * * /usr/local/nagixsc/nagixsc_conf2xml.py -c /usr/local/nagixsc/etc/conf/revproxy.conf -o /srv/www/nagixsc/revproxy.xml
1 # Crontab for "root" 
2 # m h  dom mon dow   command
3 10,25,40,55 * * * * apt-get -qq update

Auf dem Nagios

  1. Download der Software
  2. Anlegen des cron-Jobs
  3. Konfiguration des Nagios

Download der Software

1 root@revproxy:~ % cd /usr/local
2 root@revproxy:/usr/local % wget -O /tmp/nagixsc.tar.gz http://github.com/wAmpIre/nagixsc/tarball/master
3 [...]
4 root@revproxy:/usr/local % tar xzf /tmp/nagixsc.tar.gz
5 root@revproxy:/usr/local % mv wAmpIre-nagixsc-* nagixsc

Anlegen des cron-Jobs

Da häufig der "nagios"-Benutzer auf dem Nagios-Server keine gültige Shell hat (z.B. bei der Installation aus Distributions-Packages), muss das Anlegen der Crontab durch den "root'"-Benutzer erfolgen:

1 root@nagios:~ % crontab -e -u nagios ### Inhalt siehe unten
1 # Crontab for "nagios" 
2 # m h  dom mon dow   command
3 5,20,35,50 * * * * /usr/local/nagixsc/nagixsc_xml2nagios.py -u https://REVPROXY-NAME/revproxy.xml -l USERNAME -p PASSWORD -O passive

Da im konkreten Fall der Nagios-Server auf Debian basiert und die nagios3*-Packages installiert sind, findet "nagixsc_xml2nagios" das External Command File ohne Angabe. Falls dies nicht gefunden wird, kann es explizit durch anhängen von "-p /PATH/TO/nagios.cmd'" angegeben werden.

"REVPROXY-NAME" muss durch den "geheimen" Namen des virtuellen Hosts des Apache ersetzt werden. "USERNAME" und "PASSWORT" sind so zu setzen, wie beim Apache für die HTTP Basic-Auth hinterlegt.

Konfiguration des Nagios

Wie an der "revproxy.conf" abzulesen ist, müssen im Nagios folgende Hosts und Services konfiguriert werden:
  • Host "kunde-revproxy"
    • "APT"
    • "Disk_Root"
    • "Disk_Var"
    • "Load"
    • "Procs_Apache"
    • "Procs_Total"
    • "RAID"
    • "Swap"
    • "Users"
  • Host kunde-webappserver"
    • "HTTP"

Um dafür ein Grundgerüst zu bekommen, kann man die XML-Datei nutzen:

1 root@nagios:/usr/local/nagixsc/ % ./nagixsc_xml2cfg.py -u https://REVPROXY-NAME/revproxy.xml -l USERNAME -p PASSWORD
2 define host {
3 [...]
4 root@nagios:/usr/local/nagixsc/ % ./nagixsc_xml2cfg.py -u https://REVPROXY-NAME/revproxy.xml -l USERNAME -p PASSWORD >/tmp/revproxy.cfg

"REVPROXY-NAME" muss durch den "geheimen" Namen des virtuellen Hosts des Apache ersetzt werden. "USERNAME" und "PASSWORT" sind so zu setzen, wie beim Apache für die HTTP Basic-Auth hinterlegt.