/ HowTo

Tutorial: Windows Server mit Icinga2 (Docker) und NSClient++ überwachen

Aktuell habe ich mich viel damit beschäftigt, wie ich einen Windows Server möglichst gut überwachen kann.
Die Software Nagios fiel für mich weg, da mir hier die Lizenzkosten zu hoch sind, wenn ich mehr als 7 Hosts monitoren möchte.
Eine gute Alternative ist hier der Nagios-Fork Icinga2. Keine Lizenzkosten, bereits vorhandene Docker Images und die eine oder andere, leider meist veraltete, Anleitung.

Darum hier der Weg den ich gegangen bin um Icinga2 auf einem Dedizierten Hetzner Server einzurichten und eine Test-Win2k16-VM zu überwachen.
Ich möchte schlussendlich die CPU, den RAM, die Festplatte (ggf. RAID), das Netzwerk-Interface und einige Dienste überwachen. Später wäre ebenfalls eine genauere Überwachung eines Exchange Servers oder eines Terminal-Servers interressant.

Installation von Icinga2 per Docker:

Wie man Docker installiert und einen Ubuntu-Server 16.04 LTS grundeinrichtet werde ich nicht zeigen. Hier gibt es genug Anleitungen im Internet, wenn man nicht weiter weiß.
Das Icinga2-Webinterace soll per NGINX-Proxy erreichbar sein, da ich auch andere Webapplikationen per Docker nutze, welche ebenfalls ohne extra Port erreichbar sein sollen.

Als Docker-Image nutze ich das Image von Jordan.

docker pull jordan/icinga2 

Unter /opt/ lege ich mir einen "icinga" Ordner mit einigen Unterordner an. Diese Ordner mounte ich gleich als Volume in Docker.

mkdir /opt/icinga
mkdir /opt/icinga/{phpsessions,etc,lib,web,mysql,ssmtp}

Nun starte ich den Docker Container mit ein paar Parametern.
Der Parameter hinter --hostname muss allerdings, je nach System, angepasst werden.

docker run -p 8980:80 -p 5665:5665 -t -v /opt/icinga/phpsessions:/var/lib/php/sessions/ -v /opt/icinga/etc:/etc/icinga2 -v /opt/icinga/lib:/var/lib/icinga2 -v /opt/icinga/web:/etc/icingaweb2 -v /opt/icinga/ssmtp:/etc/ssmtp --name icinga2 --hostname monitoring.til-zoeller.de  jordan/icinga2:latest

Nun werden unteranderem die Anmeldedaten ausgegeben, welche man sich notieren sollte. Dies kann jedoch einige Sekunden dauern.
In meinem Fall: icingaadmin:icinga

Mit CTRG+C kann man die Ausgabe schließen und per UFW-Firewall blocke ich den Port 8980 und öffne den Port 5665 nach außen.

ufw deny 8980 && ufw allow 5665 && ufw reload 

Damit ich das Webinterface über den NGINX-Proxy erreichen kann, muss hier auch noch eine Konfigurationsdatei angelegt werden.

nano /etc/nignx/sites-available/icinga.conf 

In diese Datei kommt follgender Inhalt rein. Auch hier muss der Hostname abgeändert werden.

### redirects http requests to https
server {
    listen 80;
    server_name monitoring.til-zoeller.de;

    return 302 https://$server_name$request_uri;
}

### the https server
server {
    # listen on ssl, deliver with speedy if possible
    listen 443 ssl spdy;

    server_name monitoring.til-zoeller.de;

    # change these paths!
    ssl_certificate /etc/letsencrypt/live/monitoring.til-zoeller.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/monitoring.til-zoeller.de/privkey.pem;

    # enables all versions of TLS, but not SSLv2 or 3 which are weak and now deprecated.
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    # disables all weak ciphers
    ssl_ciphers 'AES128+EECDH:AES128+EDH';

    ssl_prefer_server_ciphers on;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:8980;  # no trailing slash
        proxy_redirect off;

        # Socket.IO Support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
} 

Das HTTPS-Zertifikat besorge ich mir mithilfe des LetsEncrypt CertBot und aktiviere die NGINX-Konfigurationsdatei.

service nginx stop
certbot certonly --standalone --rsa-key-size 4096 -d monitoring.til-zoeller.de
ln -s /etc/nginx/sites-available/icinga.conf /etc/nginx/sites-enabled/
service nginx start

Hier könnte man später nocheinmal überlegen das Erneuern des Zertifikates zu automatisieren. Auch hierfür gibt es mehr als genug Anleitungen im Internet.

Jetzt kann man sich unter https://{{meinhostname}} anmelden.
Icinga2 ist somit fertig installiert.

Windows Server per NSClient++ überwachen:

Anleitung folgt noch...