Stellen Sie sich einen einfachen FreeBSD-Computer vor, auf dem ein SMTP-Server ausgeführt wird. Wie kann ich automatisch überprüfen, ob er das Richtige tut (z. B. eingehende SMTP-Verbindungen für bestimmte Empfänger akzeptieren und die E-Mail in einem Maildir ablegen)?
Wir verwenden bereits Serverüberwachungssoftware (in diesem Fall Nagios) und führen natürlich manuelle Tests durch, aber ich habe mich gefragt: Gibt es eine übliche Möglichkeit, automatische Funktionstests für Serverdienste durchzuführen?
Ein Beispiel für das, woran ich denke: Bei der Neukonfiguration unseres Servers (was normalerweise zu Testzwecken in einer VM geschieht) denke ich darüber nach
- Übertragen Sie einige manuell erstellte SMTP-Sitzungen in netcat, das eine Verbindung zum SMTP-Port unseres Servers herstellt, und dann
- Führen Sie auf dem Server eine Art Überprüfungsskript aus, das sicherstellt, dass die erwarteten Zusicherungen gültig sind (z. B.: Neue Dateien mit erwarteten Inhalten wurden auf dem Server angezeigt, Protokolleinträge wurden erstellt usw.).
Ich kann mir vorstellen, dass das Ausführen einer Reihe solcher Tests für andere Dienste (z. B. das Testen, ob Sicherungen erstellt werden können, das Testen, ob der IMAP-Server Verbindungen für bestimmte Benutzer akzeptiert und die richtigen E-Mails auflistet) zum Testen von Konfigurationsänderungen hilfreich sein kann, oder um zu überprüfen, ob wiederhergestellte Systemsicherungen wie erwartet funktionieren.
expect
. :-)Diese Art von Tests kann mehr oder weniger einfach als Nagios-Test geschrieben werden (wie einfach dies ist, hängt vom jeweiligen Dienst ab). Denken Sie daran, ein Nagios-Test ist eine einfache Sache , zumindest die Schnittstelle zu Nagios. Es ist nur ein Programm oder ein Shell-Skript, das eine genau definierte Antwort (einen Rückkehrcode und einen Informationstext) zurückgibt.
Außerdem sind bereits viele Module für alle Arten von Diensten verfügbar. Überprüfen Sie den Nagios-Austausch . Eine Lösung für Ihr Mail-Beispiel ist dies .
quelle
Ich benutze NAGIOS.
Wenn ich daran interessiert bin, eine einzelne Funktion zu testen, die einen Schritt in einer Kette darstellt, die einen Geschäftsdienst bereitstellt, teste ich Folgendes: Um einen SMTP-Server zu testen, verwende ich das SMTP-Plugin, das eine Verbindung zu Port 25 herstellt und nach einem sucht geeignetes Banner; ebenso ein IMAP-Server; und so weiter.
Wenn ich daran interessiert bin, eine End-to-End-Sequenz, den Erfolg oder Misserfolg der gesamten Kette zu testen, überprüfe ich, ob sie erfolgreich abgeschlossen wurde. Um eine Kette zu testen, wie Sie sie beschreiben, habe ich möglicherweise einen Cron-Job, der alle 30 Minuten E-Mails mit einer bestimmten Testzeichenfolge an eine bestimmte Adresse sendet, und ich habe ein NAGIOS-Plugin, das im Empfängerpostfach nach dieser Zeichenfolge sucht, und prüft, ob es regelmäßig aktualisiert wird.
Normalerweise mache ich beides. Wenn der End-to-End-Test in den Status ALERT wechselt, wird voraussichtlich auch einer oder mehrere der Zwischenschritte alarmiert - möglicherweise ist der SMTP-Empfänger ausgefallen oder das Netzwerk Die Verbindung zwischen den beiden ist fehlgeschlagen oder die Disc ist auf dem Empfänger voll - und das gibt mir einen ersten Hinweis bei der Untersuchung des End-to-End-Fehlers. Oft werde ich die einzelnen Stufentests und den End-to-End-Test in einer einzigen Servicegruppe zusammenfassen, um eine schnelle und einfache Ansicht fehlerhafter Komponenten zu erhalten.
Ich bin jedoch der Meinung, dass einzelne NAGIOS-Plugins immer klein und leicht sein sollten . Beachten Sie also, wie der obige End-to-End-Test nur den endgültigen Erfolg oder Misserfolg der Kette testet . Es tut nichts, um die Schritte der Kette zu testen. Je komplexer ein einzelnes Plugin ist, desto eher scheitert es auf unerwartete Weise und desto wahrscheinlicher ist es, dass ich von meinem Überwachungssystem falsch positive (oder schlimmer noch falsch negative) Ergebnisse erhalte.
quelle