Aktives Monitoring eines Seafile Systems

Größere Seafile Installation werden typischerweise in Form eines Clusters aufgebaut, bei dem die Zugriffe mit Hilfe von Load Balancern auf mehrere Frontend-Knoten verteilt werden. Ein solcher Clusterverbund erfordert ein aktives Monitoring der Prozesse, der Applikationen und der unterstützenden Infrastruktur um Probleme zu beseitigen, bevor Sie zu einer Nicht-Erreichbarkeit des Systems führen. Das Ziel dieses Artikels ist es einen Überblick über die zu überwachenden Komponenten zu geben und Hilfestellung zu leisten, um die passendenden Methoden auszuwählen.

Seafile Architektur und Aufbau

Der Umgang des Monitorings eines Seafile Systems richtet sich normalerweise nach der Größe des Systems, der Anzahl der User und der Bedeutung für die Unternehmensprozesse. Bei einem Single-Server Seafile System mag es ausreichend sein in regelmäßigen Abständen die Erreichbarkeit der Weboberfläche und des Synchronisationsdienstes zu überprüfen. Bei einem Cluster-System will man ja bewusst Redundanzen schaffen, die den Ausfall von einzelnen Komponenten erlaubt ohne die Verfügbarkeit einzuschränken. Ohne ein aktives Monitoring merkt man vielleicht gar nicht, das einzelnen Komponenten nicht mehr funktionieren und verpasst das Zeitfenster, in dem man ohne Einschränkungen das System reparieren kann.

Seafile Cluster-Systeme orientieren sich typischerweise an den folgenden Best-Practise Ansätzen, die es gilt zu überwachen:

  1. Das Seafile System besteht aus mehreren Frontend- und einem Backend-Knoten kombiniert mit vorgeschalteten Load Balancern zur Verteilung der Zugriffe.
  2. Als Datenbank kommt ein Galera Cluster für MySQL zum Einsatz, um die Datenbank auf allen Seafile Knoten synchron zu halten.
  3. Beim Dateisystem kann man eines oder mehrere der unterstützten Speichersysteme wie Amazon AWS, OpenStack Swift, Ceph oder GlusterFS ausgehen.

Die zentralen Komponenten von Seafile

Während der zentrale Synchronisationsserver von Seafile in C programmiert ist, ist die Weboberfläche von Seafile in Python programmiert. Seafile benötigt ein Dateisystem zum Speichern der Datenblöcke und eine Datenbank zum Abspeichern der Benutzer-, Block- und Metainformationen.

Während der Verlust eines Frontend- oder eines Backendknotens das System nicht in die Knie zwingen sollte, ist es essentiell über so ein Ereignis informiert zu werden um einen zuverlässigen Betrieb garantieren zu können. Aus diesem Grund ist es von zentraler Bedeutung, dass der Seafile Server, die Load Balancer, der Datenspeicher und die Datenbank aktiv überwacht werden. Dieses Dokument gibt die notwendigen Hilfsmittel hierfür an die Hand.

Seafile Server und Seahub Weboberfläche

Seafile bietet einen einfachen Mechanismus zur Überprüfung, ob sowohl der Applikationsserver sowie die Weboberfläche verfügbar und bereit sind. Es genügen die folgenden Abfragen, um die Erreichbarkeit zu testen. Wenn die folgenden Rückgabewerte zurückgeliefert werden, kann man davon ausgehen, dass der Seafile Server zur Verfügung steht:


$ curl SEAFILE-URL/api2/ping/
"pong"

$ curl SEAFILE-URL/seafhttp/protocol-version
{"version": 2}

Wichtig: diese beiden Abfragen müssen auf allen Seafile Knoten ausgeführt werden.

Webserver

Obwohl Seafile den auf python basierenden Webserver Gunicorn mitbringt, empfiehlt es sich einen dedizierten Webserver wie Apache oder nginx vorzuschalten. So profitiert das Seafile System von SSL-Verschlüsselung und diversen Caching-Mechanismen, die das System beschleunigen. Da nginx (oder Apache) eine zentrale Komponente zum Betrieb des Seafile Servers ist, sollte dieser Dienst aktiv überwacht werden. So empfiehlt es sich die beiden Logdateien (seahub.access.log und seahub.error.log) auf die Fehlercodes im Bereich 4xx und 5xx zu überwachen. Praktisch jedes Log-Analysetool oder Monitoringtool bringt entsprechende Fähigkeiten mit.

Datenbank-Cluster

Die SQL-Datenbank ist eine weitere Komponente von zentraler Bedeutung für den Betrieb von Seafile. Für die Überwachung eines Galera-Clusters liefert die Software entsprechende Methoden direkt mit oder man bedient sich einem separaten Management-Tool wie z.B. ClusterControl von severalnines. Dabei genügt es nicht nur auf darauf zu prüfen, dass die Datenbank vorhanden ist, man sollte auch regelmäßig die einzelnen Knoten überwachen, um zu vermeiden, dass es nicht zu einer Split-Brain Situation kommt. Grundsätzlich würde ich sagen, dass das Management des Datenbank-Clusters vermutlich die komplexeste Aufgabe des Monitorings ist. Wenn hier Fehler ignoriert oder übersehen werden, droht im schlimmsten aller Fälle sogar ein Datenverlust.

Speichersystem

Aufgrund der Vielzahl der möglichen Speichersysteme richtet sich die optimale Vorgehensweise nach dem eingesetzten Speichersystem. Grundsätzlich sollte man die verfügbaren Prüfmechanismen des Speichersystemanbieters verwenden und zusätzlich auf verfügbare und bewährte Techniken des Speicher-Host-Systems wie z.B. die Überwachung von SMART Werten und den RAID Zustand setzen. Pauschale Aussagen nach der Art des Monitorings sind jedoch aufgrund der Vielzahl und der Unterschiede nicht möglich.

Load Balancer

Auch bei den Load Balancern gibt es eine große Bandbreite an möglichen Lösungen. Neben softwarebasierten Lösungen wie HAProxy oder Kemp gibt es fertige hardwarebasierten Lösungen von F5, TP-Link oder Barracuda. Der neue Trend geht hingegen zu cloudbasierten Load-Balancern von Digital Ocean oder Amazon AWS.

Während man sich bei Load Balancern aus der Cloud auf die Zuverlässigkeit des jeweiligen Anbieter verlassen kann, muss man hard- und softwarebasierte Lösungen aktiv überwachen und in das Monitoringkonzept integrieren.

Sonstige unkritische Dienste

Auch wenn die folgenden Dienste nicht zwingend für den Betrieb von Seafile notwendig sind, lohnt es sich diese zu überwachen, da ein Ausfall den nutzbaren Funktionsumfang von Seafile einschränkt. Von Haus aus bringt Seafile >elasticsearch als Grundlage für die Volltextsuche mit und Memcached wird verwendet, um die Webseitenaufrufe zu beschleunigen. Auch Keepalived kommt typischerweise bei Seafile Clustern zum Einsatz, um virtuelle IP-Adressen für die interne Kommunikation der Komponenten zu ermöglichen.

Die einfachste Methode besteht darin, regelmäßig die Anzahl der zugehörigen Prozesse zu zählen und zu reagieren, wenn diese sich unaufgefordert beenden haben sollten oder zu viele Prozesse im System vorhanden sind.

Das aktive Monitoring eines Seafile Cluster ist Pflicht

Mit einem Seafile-Clusters baut man bewusst Redundanzen auf, um eine höhere Verfügbarkeit des Gesamtsystems zu gewährleisten. Dabei sollte man das System nicht unbeobachtet lassen, sondern ein aktives Monitoring aufbauen um rechtzeitig über entstehende Probleme oder Ressourcenengpässe informiert zu werden. Nur so erhalten die Administratoren die notwendige Zeit, um auf die aktuelle Situation zu reagieren.

Dieser Artikel hat die zu überwachenden Komponenten eines Seafile-Clusters und soweit möglich die Art der Überwachungen aufgezeigt. Welche konkreten Monitoring-Tools wir empfehlen und typischerweise verwenden, soll Bestandteil eines folgenden Artikels werden. Wenn Sie Fragen rund um das Thema haben, zögern Sie nicht uns anzusprechen.