«Freie Software» (Freiheiten gewährende Software, free software) bietet eine Vielzahl von Vorteilen, darunter die Möglichkeit, den Quellcode zu überprüfen, anzupassen und zu verbessern. Dadurch haben Nutzende mehr Kontrolle über ihre Software und können diese ihren individuellen Bedürfnissen anpassen. Wie also funktioniert es?
Freie Software stellt die Freiheit von Computernutzern in den Mittelpunkt. Ein Nutzer erhält mit dem Empfang der Software die vollumfänglichen Nutzungsrechte und diese dürfen ihm nicht vorenthalten oder beschränkt werden. Per Lizenz werden folgende 4 Freiheiten eingeräumt:
- Die Freiheit, das Programm nach eigenem Gutdünken und zu jedem beliebigen Zweck auszuführen (Freiheit 0).
- Die Freiheit, die Funktionsweise des Programms zu studieren und so zu ändern, dass es die gewünschten Aktionen durchführt (Freiheit 1). Der Zugang zum Quellcode ist eine Voraussetzung dafür.
- Die Freiheit, Kopien weiterzugeben (Freiheit 2).
- Die Freiheit, Kopien der veränderten Versionen an andere weiterzugeben (Freiheit 3).
Diese 4 Freiheiten grenzen Freie Software von anderen Lizenmodellen wie z.B. Open source, Freeware oder kommerzieller Software klar ab.
Der Begriff «freie Software» wurde von der 1985 gegründeten Free Software Fondation (FSF) geprägt, einer gemeinnützigen Organisation, die sich für die Förderung von Softwarefreiheit einsetzt. Die FSF publiziert die GNU General Public License (GNU GPL), die weltweit populärste Lizenz für Freie Software. Die GNU GPL ist rechtlich weltweit wirksam und lässt sich bei Verstössen vor Gericht durchsetzen.
Freie Software ist in der Industrie seit vielen Jahren etabliert. Grosse Player, wie z.B. Microsoft, die kommerzielle Produkte und Services anbieten, profitieren von Freier Software. Neben ihren kommerziellen Produkten stellen sie frei verwendbare Produkte zur Verfügung und engagieren sich für die Weiterentwicklung Freier Software. Freie Software kann in der Regel als sicher angesehen werden, da sie von einer grossen Gemeinschaft von Entwicklern überprüft und verbessert wird. Da der Quellcode offen ist, können Sicherheitslücken schneller entdeckt und behoben werden. Allerdings hängt die Sicherheit auch von der jeweiligen Implementierung und Wartung ab. Freie Software kann sicher sein, solange sie von vertrauenswürdigen Quellen heruntergeladen und regelmässig aktualisiert wird, um Sicherheitslücken zu schliessen. Auch zur Kosteneinsparung gibt es Studien. »Unternehmen müssten laut der Analyse ohne freie Software 3,5-mal so viel für ihre Computerprogramme ausgeben, als sie es derzeit tun. 84 Prozent der Mehrkosten würden allein für die sechs wichtigsten Programmiersprachen anfallen.»
Aber wenden wir nun den Blick auf das IML.
Server- und Service-Monitoring am IML
Wenn man ein Netzwerk mit Rechnern und anderen Geräten an mehreren Standorten betreibt, möchte man als Administrator den Überblick behalten, ob alles in Ordnung ist oder Handlungsbedarf wegen eines in absehbarer Zukunft auftretenden Engpasses oder gar eines Ausfalls einer Komponente besteht. Für eine Gesamtübersicht über alle Systeme setzt das IML Monitoring-Werkzeuge ein.

System-Monitoring
Betreibt man verschiedene Geräte und Server und möchte die Verfügbarkeit einzelner Hardwarekomponenten, Kennwerte oder laufende Programme im Blick behalten, so setzt man ein System-Monitoring ein. Wir verwenden bei uns im Haus die Freie Software Icinga2.
Damit ein Monitoring-Werkzeug den Gesamtzustand mitsamt aller Details anzeigen kann, müssen die Informationen zunächst mit Hilfe von Checks (in anderen Produkten auch Sensoren genannt) gesammelt und zugestellt werden. Wir verwenden nicht nur die Checks des Herstellers auf unseren Systemen – dank der Offenlegung des Formats können Drittanbieter das Repertoire erweitern und man kann diese auch selbst programmieren. Vom IML sind ca. 50 Checks unter GNU GPL 3 publiziert worden.
-
Icinga2 Systemmonitoring: in der Detailseite eines Einzelsystems kann man die Ergebnisse der Checks einsehen. Viele Checks bieten Graphen mit dem zeitlichen Verlauf der Werte. -
Icinga2 Systemmonitoring: ein Plugin positioniert Checks verschiedener Systeme auf einer Grafik oder Karte. Damit kann man eine Visualisierung für eine Applikation oder einen Prozess aufbereiten.
Wir sind zufrieden mit dem Produkt Icinga2, was es kann, dessen Erweiterbarkeit und wie wir es handhaben können. Es gibt keine lizenzbedingten Beschränkungen bezüglich Anzahl zu überwachender Systeme oder pro System durchgeführte Checks.
Der Hersteller ist aktiv an der Weiterentwicklung und Behebung von Sicherheitslecks. Es gibt eine breite Community. Zusammen mit der Icinga GmbH entstand 2023 eine Success-Story zur Einführung ihres Produkts:
Im Juni 2024 fand die Icinga Summit statt, wo der Hersteller die aktuellen Entwicklungen und Pläne zeigte. Axel Hahn hielt einen Vortrag zum Aufbau der Icinga-Infrastruktur am IML. Die Veranstaltung war ein guter Ort, um sich mit Gleichgesinnten auszutauschen und sich andere Implementierungen, Lösungskonzepte und Eisatzmöglichkeiten anzusehen.
Mit Hilfe eines zentralen Logservers werden Protokolldaten verschiedener Dienste von allen Systemen zentral eingesammelt. Für diesen Typ des Monitorings haben wir keine Eigenentwicklungen - wir setzen fertige Produkte ein.
Cronjobs
Cronjobs sind regelmässig ausgeführte Aufgaben, sei es alle N Minuten, täglich/ wöchentlich/monatlich zu einer festgelegten Zeit. Um eine Überwachungsmöglichkeit zu eröffnen, wird mit dem Cronwrapper ein kleines Zusatz-Werkzeug eingesetzt. Der Ausführungszustand wird in Kurzform in Icinga angezeigt. Zur Ansicht von Details werden die Logdaten inklusive Textausgabe oder Ausführungszeit aller Cronjobs für eine zentrale Ansicht zusammengeführt. Per Weboberfläche kann man bequem alle Server und ihre Cronjobs detailliert einsehen. Der «IML Cronlog Viewer» ist als Freie Software unter GNU GPL 3 publiziert.
Applikations-Monitoring
Das Icinga-System-Monitoring gibt Kennwerte und Zustände zu einzelnen Geräten oder Systemen an. Sind alle Systemkennwerte in Ordnung, so ist dies nicht implizit die Aussage, dass auch eine bestimmte Applikation funktioniert. Aber auch die umgekehrte Aussage kann zutreffen: wenn zu einem System ein Check einen kritischen Zustand aufweist, so kann eine Applikation dennoch vollständig funktional sein. Daher ist ein ergänzendes Applikations-Monitoring sinnvoll.
Mit dem «IML Appmonitor» haben wir am Institut seit 2014 eine Client-Server Applikation entwickelt. Der Appmonitor-Server ist eine PHP-Anwendung, die mit minimalen System-Anforderungen betreibbar ist. Privatpersonen können das Produkt bei einem Shared Hosting einsetzen. Der IML Appmonitor ist Freie Software unter GNU GPL 3.
Client
Ein Appmonitor-Client wird auf dem Rechner einer PHP-Anwendung installiert. Er beinhaltet mehrere einzelne Bausteine zum Prüfen des Dateisystems, Netzverbindungen, Datenbank-Verbindungen und einiges mehr. Mit diesen wird die Lauffähigkeit einer Applikation ermittelt. Das funktioniert typischerweise wie folgt:
- Gibt es eine Konfigurationsdatei und kann man diese lesen?
- Können die Datenbank und benötigte Schnittstellen mit den Verbindungsangaben aus der Konfiguration verbunden werden?
- Ist der Upload-Ordner vorhanden und beschreibbar?
- Ist das Webseiten-Zertifikat gültig?
- Auch Negativtests sind sinnvoll: sieht ein Anwender wirklich eine Fehlermeldung, wenn auf einen geschützten Bereich oder sensible Daten zugegriffen wird?
Jeder Test liefert ein Resultat mit Text und Bewertung in Ampelfarben. Daraus wird eine Gesamtbewertung zur Lauffähigkeit einer Anwendung ermittelt. Einige erste Prüfungen bekannter PHP-Anwendungen wurden ebenfalls in den Client übernommen. Damit muss die Zusammenstellung der Prüfungen nicht immer von Grund auf neu geschrieben werden und funktionieren out-of-the-box.
Und bei Anwendungen in anderen Programmiersprachen als PHP? Hier können die Check-Bausteine nicht verwendet werden. Es ist daher die Beschreibung der erwarteten Struktur dokumentiert, damit ein Appmonitor-Client in anderen Programmiersprachen implementiert werden kann. Einen weiteren Ansatz zeigt ein Schwesterprojekt auf: ein Client als ausführbare Datei. Dieser besitzt alle Prüfmöglichkeiten des PHP-Clients und ist unabhängig von einer Programmiersprache. Aber: er muss aber für eine Zielplattform compiliert werden können. Das Projekt hat daher noch eher experimentellen Character.
Server
Der Appmonitor-Server bietet eine Weboberfläche für den internen Gebrauch und zeigt die Übersicht aller eingebundenen Applikationen. Die benötigten Informationen werden von den überwachten Applikationen mit parallelen Https-Anfragen abgeholt. Die Anzeige erfolgt nach Kritikalität: Fehler und Warnungen hat man so als erstes im Blick. Ein Klick auf eine Anwendung zeigt deren Details an. Eine Liste aller aktuellen Probleme und eine Historie der Status-Veränderungen und Filtermöglichkeiten komplettieren die Anzeige. Bei Einschränkungen oder Ausfall einer Anwendung wird der für das betroffene Produkt relevante Benutzerkreis per Email oder Slack informiert.
API
Auf den Server ist weiterhin ein abgesicherter, maschinenlesbarer Zugriff möglich. Mit Hilfe einer Schnittstelle (API) kann man Informationen zum Systemzustand des Appmonitors wie auch alle Daten aller überwachten Anwendungen abrufen.
So lässt sich eine komplett eigenständige Monitoring-Ansicht aufbauen. Sämtliche Systeminterna und für Aussenstehende unverständliche Details können darin ausgeblendet werden. Man kann auch nur eine Teilmenge der Applikationen verarbeiten, sei es für eine Gruppe von Anwendungen oder alle Anwendungen einer Abteilung. Derzeit entsteht solch eine vereinfachte Statusanzeige mit reduzierten Details zu Measured-Funktionalitäten auf einem öffentlich zugänglichen System.
Die verwendete PHP-Klasse zum Abfragen der Appmonitor API ist ein weiteres unter GNU GPL 3 publiziertes Schwesterprojekt. Enthalten sind eine einfache Weboberfläche, mit der man starten kann und auch ein API Client zur Verwendung in Skripten.
Fazit
Die Open-Source-Bewegung basiert auf dem Prinzip der Zusammenarbeit und des freien Wissensaustauschs. Sie ermöglicht es Entwicklern, von den Kenntnissen und Fähigkeiten anderer zu profitieren, gemeinsam an Projekten zu arbeiten und kontinuierlich zur Verbesserung der Software beizutragen. An unserem Institut wird Freie Software in grossem Stil eingesetzt. Neben unseren kommerziell orientierten Produkten wird in Teilbereichen des Instituts das Prinzip des Nehmens und Geben gelebt und der Geist der Freien Software unterstützt. Wir profitieren in vielerlei Hinsicht - von freien Betriebssystemen, Anwendungen, Programmiersprachen, Diensten, Entwicklungsumgebungen. Bis hin zu freien Komponenten, die wir in unsere Applikationen einbauen, was uns viel Zeit eingespart hat, da man Teile der Anwendung nicht selbst programmieren, testen und aushärten muss. Einige unserer Eigenentwicklungen stellen wir daher ebenso unter eine freie Lizenz, bieten den Programmcode in öffentlich zugänglichen Repositories an, stellen eine Online-Dokumentation bereit, die Dritten Inbetriebnahme und Nutzung der Software möglich macht.