Überwachung eines Webservers mit Ansible


Die Überwachung eines Webservers ist eine essentielle Aufgabe, um sicherzustellen, dass er stets zuverlässig und performant bleibt. Statt auf klassische Monitoring-Lösungen wie Nagios, Zabbix oder Prometheus zurückzugreifen, habe ich mich für eine schlanke und sichere Variante entschieden: die Überwachung mit Ansible.

Ansible ist ein einfach zu nutzendes Automatisierungs-Tool, das über SSH auf die Systeme zugreift. Es eignet sich ideal, um periodische Prüfungen von Systemressourcen wie Festplattenspeicher, Arbeitsspeicher oder CPU-Auslastung durchzuführen. In diesem Blogbeitrag zeige ich, wie ich mit einem Ansible-Playbook meinen Webserver überwache und welche Vor- und Nachteile diese Methode bietet.

Warum Ansible zur Überwachung?

Traditionelle Monitoring-Tools erfordern meist die Installation zusätzlicher Software, die entweder auf dem Server läuft oder über separate Ports kommuniziert. Dies kann nicht nur Sicherheitsrisiken mit sich bringen, sondern auch unnötig Ressourcen verbrauchen. Ansible hingegen bietet einige Vorteile, die es zu einer eleganten Lösung machen:

  1. SSH-basierte Kommunikation: Ansible greift über eine bestehende SSH-Verbindung auf den Server zu, wodurch keine zusätzlichen Ports geöffnet werden müssen. Die Sicherheitsstruktur bleibt intakt, da nur der SSH-Key-basierte Zugang genutzt wird.

  2. Kein dauerhaft laufender Prozess: Anders als bei traditionellen Monitoring-Tools, die kontinuierlich Serverressourcen überwachen, wird das Ansible-Playbook nur dann ausgeführt, wenn die Überwachung gewünscht ist. Dies bedeutet, dass keine unnötigen Prozesse im Hintergrund laufen und Ressourcen verbrauchen.

  3. Einfache Automatisierung: Ansible-Playbooks können einfach in Tools wie Ansible Semaphore integriert werden, wodurch eine automatische und zeitgesteuerte Überwachung möglich ist. So lässt sich das Playbook z.B. täglich oder wöchentlich ausführen, ohne dass manuell eingegriffen werden muss.

Das Ansible-Playbook zur Überwachung

Hier das Playbook, mit dem ich die wichtigsten Systemressourcen meines Webservers überprüfe:

---
- name: Überwache Systemressourcen
  hosts: web
  gather_facts: no
  tasks:
    - name: Festplattenspeicher abfragen
      command: df -h
      register: disk_usage

    - name: Zeige Festplattenspeicher
      debug:
        msg: |
          Disk Usage:
          {{ disk_usage.stdout }}

    - name: Arbeitsspeicherauslastung abfragen
      command: free -h
      register: memory_usage

    - name: Zeige Arbeitsspeicherauslastung
      debug:
        msg: |
          Memory Usage:
          {{ memory_usage.stdout }}

    - name: CPU-Auslastung abfragen
      command: uptime
      register: cpu_load

    - name: Zeige CPU-Auslastung
      debug:
        msg: |
          CPU Load:
          {{ cpu_load.stdout }}
          
    - name: Systemuptime abfragen
      command: uptime -p
      register: system_uptime

    - name: Zeige Systemuptime
      debug:
        msg: |
          System Uptime:
          {{ system_uptime.stdout }}

    - name: Verfügbare Updates abfragen (Debian/Ubuntu)
      command: apt list --upgradable
      register: available_updates

    - name: Zeige verfügbare Updates
      debug:
        msg: |
          Available Updates:
          {{ available_updates.stdout }}

Link zur Playbook-Datei auf Github

Erläuterung des Playbooks

  • Festplattenspeicher abfragen: Mit dem Befehl df -h wird der verfügbare und genutzte Speicher auf den Festplatten angezeigt.
  • Arbeitsspeicherauslastung: free -h zeigt die aktuelle Arbeitsspeichernutzung an, sowohl für den physischen Speicher als auch für den Swap-Speicher.
  • CPU-Auslastung und System-Uptime: Mit uptime wird die Auslastung der CPU sowie die Betriebsdauer des Systems seit dem letzten Neustart abgefragt.
  • Verfügbare Updates: Für Debian- und Ubuntu-Systeme listet apt list --upgradable alle Pakete auf, für die Updates verfügbar sind.

Vorteile der Ansible-Überwachung

1. Sicherheit

Da Ansible über SSH auf den Server zugreift, muss keine zusätzliche Software oder ein Agent installiert werden. Zudem werden keine weiteren Ports geöffnet, was das Sicherheitsrisiko minimiert. Ansible nutzt lediglich den SSH-Key-basierten Zugriff, der ohnehin schon für die Administration des Servers konfiguriert ist.

2. Geringe Systembelastung

Im Gegensatz zu klassischen Monitoring-Tools, die ständig im Hintergrund laufen und Ressourcen überwachen, wird dieses Playbook nur bei Bedarf oder in regelmäßigen Abständen (z.B. via Cronjob) ausgeführt. Das schont die Ressourcen und ermöglicht es, die Überwachung nach Belieben zu steuern.

3. Automatisierbarkeit

Durch die einfache Integration in Tools wie Ansible Semaphore oder sogar CI/CD-Pipelines lässt sich die Überwachung problemlos automatisieren. So können zeitgesteuerte Prüfungen eingerichtet werden, ohne dass manueller Eingriff erforderlich ist.

4. Flexibilität

Ansible ist ein äußerst flexibles Tool. Es ist einfach, das Playbook um weitere Prüfungen oder Benachrichtigungen zu erweitern. Beispielsweise können nach der Überprüfung der Systemressourcen Benachrichtigungen per E-Mail oder Slack verschickt werden, falls bestimmte Schwellenwerte überschritten werden.

Nachteile der Ansible-Überwachung

Natürlich gibt es auch einige Einschränkungen bei der Verwendung von Ansible zur Überwachung:

  • Kein Echtzeit-Monitoring: Da Ansible nur dann ausgeführt wird, wenn das Playbook gestartet wird, gibt es kein kontinuierliches Monitoring in Echtzeit. Für eine lückenlose Überwachung müsste das Playbook sehr häufig ausgeführt werden, was den Ansatz unpraktisch machen könnte.

  • Keine zentrale Monitoring-Plattform: Traditionelle Monitoring-Tools bieten oft eine zentrale Plattform, auf der alle gesammelten Daten visualisiert und analysiert werden können. Ansible bietet diese Möglichkeit nicht von Haus aus, sodass die Ergebnisse separat ausgewertet werden müssen.

  • Benutzerdefinierte Schwellenwerte: Es müssen manuell Bedingungen hinzugefügt werden, um etwaige Warnungen auszulösen, z.B. wenn der Speicher knapp wird oder die CPU-Auslastung zu hoch ist. Dies erfordert zusätzliche Konfiguration.

Fazit

Die Überwachung meines Webservers mit Ansible ist eine einfache und effiziente Lösung, die mir einen sicheren und ressourcenschonenden Überblick über die wichtigsten Systemressourcen gibt. Ansible ist besonders nützlich, wenn man die Überwachung automatisieren möchte, ohne zusätzliche Software installieren zu müssen. Für Benutzer, die kein kontinuierliches Echtzeit-Monitoring benötigen, bietet Ansible eine flexible und sichere Alternative.

Die Erweiterbarkeit von Ansible ermöglicht es zudem, das Playbook problemlos an individuelle Anforderungen anzupassen und beispielsweise Benachrichtigungen oder zusätzliche Prüfungen hinzuzufügen. Ansible bleibt dabei stets einfach und verständlich in der Handhabung, was es zu einer großartigen Option für die gelegentliche Überwachung macht.