Ü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¶
- Download der Software
- Anlegen einer (oder mehrerer) conf-Dateien
- Konfiguration des Apache Web-Servers
- 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¶
- Download der Software
- Anlegen des
cron-Jobs - 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.