Überwachen Sie den Programmfortschritt auf mehreren Servern

9

Wir haben drei Server, auf denen Python-Programme ausgeführt werden, auf denen Datenanalyseaufgaben innerhalb einer tmuxSitzung ausgeführt werden. Die Methode, die wir im Moment verwenden, besteht darin, die tmuxSitzung zu verbinden und die Ausgabe in der Befehlszeile zu überwachen .

Diese Methode ist langwierig. Daher suchen wir nach einer Lösung, die die Überwachung des Programmfortschritts (Ausgabe auf CLI) für mehrere Server gleichzeitig automatisiert. Idealerweise möchten wir eine Web-UI-Lösung, aber auch eine CLI wäre perfekt geeignet.

Danke fürs Lesen.

Guano
quelle
Verwenden Sie Prometheus und Grafana :-)
Reinstate Monica - M. Schröder

Antworten:

8

Jedes Mal, wenn Sie Ad-hoc-Befehle mit langer Laufzeit ausführen, sollten Sie einen Schritt zurücktreten und Ihren Prozess überdenken, da dies automatisiert werden sollte, einschließlich der Fehlerbehandlung.

Anstatt eine Verbindung zu den Servern herzustellen, um den Status anzuzeigen, besteht ein besserer Ansatz darin, diese Informationen zu veröffentlichen. Sie können eine Vielzahl von Dingen ausführen, wenn Sie eine Reihe von benutzerdefiniertem Code schreiben möchten. Am einfachsten ist es jedoch, die Ausgabe über Syslog an ein zentrales Protokollierungssystem (Syslog selbst oder ELK oder was auch immer) zu senden. Auf diese Weise können Sie alles von einem zentralen Ort aus überwachen.

Wenn dies keine einmalige Aufgabe ist, sollte die Überwachung automatisiert werden. Das heißt, Sie sollten niemals nur Protokolle ansehen müssen, um zu sehen, ob die Dinge so laufen, wie sie sollen. Stattdessen sollten Sie davon ausgehen, dass dies der Fall ist (und mit anderen Arbeiten fortfahren), bis Ihre Warnung ausgelöst wird . Dies ist eine Investition von Zeit, um zuverlässige und umfassende Warnmeldungen zu erhalten. Mit zunehmender Komplexität Ihrer Systeme zahlt sich dies jedoch aus, da Sie nicht jedes Mal alles überwachen müssen, wenn Sie Änderungen vornehmen .

Boykott SE für Monica Cellio
quelle
Dies ist keine einmalige Sache. Ich mag Ihre Idee, Zeit in die Automatisierung der Überwachung und Zentralisierung der Protokollierung zu investieren. Haben Sie Vorschläge für Tools, die kostenlos verwendet werden können und gut mit Ubuntu-Hosts funktionieren, auf denen die Programme ausgeführt werden?
Guano
@guano Ich denke, Wissam hat alle spezifischen Tools behandelt, die ich erwähnen würde, abgesehen von der Verwendung von Sensu, um die Alarmierung zu aktivieren.
Boykott SE für Monica Cellio
4

Graylog

Da Ihnen bereits zwei Personen geraten haben, Ihren aktuellen Prozess zu überdenken (was ich zweitens befürworte, da dies irgendwann zu schlaflosen Nächten führen wird;)), werde ich einen anderen Weg gehen und eine bestimmte Software empfehlen, die meiner Meinung nach am besten passt Ihre Bedürfnisse: Graylog .

Ich habe einige ELK-Stapel sowohl für die Protokollaggregation als auch für Business Intelligence implementiert und verwendet und Graylog seit ungefähr zwei Jahren bei meinem derzeitigen Arbeitgeber ausgeführt / gewartet. Ich empfehle Graylog, da es die folgenden Funktionen enthält und meiner Meinung nach etwas einfacher einzurichten und zu warten ist:

  • Ein Webinterface
  • Mehrbenutzerfunktionen
  • Alarmierung

Soweit ich Ihr Szenario verstehe, sieht es so aus, als müssten Sie auf bestimmte Ereignisse reagieren oder benachrichtigt werden, die in Ihrem Strom von Protokollnachrichten angezeigt werden. Wenn wir uns die Graylog-Funktionen ansehen :

Lösen Sie Aktionen aus oder werden Sie benachrichtigt, wenn etwas beachtet werden muss, z. B. fehlgeschlagene Anmeldeversuche, Ausnahmen oder Leistungseinbußen.

Ideen: Senden Sie eine E-Mail oder eine Slack-Nachricht an Ihr Team. Erstellen Sie eine neue Maschine, um die Verarbeitungslast auszugleichen. Blockieren Sie IP-Bereiche in Ihren Firewalls automatisch, wenn ein Angriff erkannt wird.

Um Graylog auszuprobieren, würde ich die folgenden zwei Schritte empfehlen:

  • Richten Sie einen dedizierten Host ein, auf den alle Anwendungshosts zugreifen können, um Graylog (und seine Abhängigkeiten MongoDB und ElasticSearch) auszuführen.
  • Senden Sie Protokolle aus Ihrer Anwendung an graylog (möglicherweise als GELF- Nachrichten).

Hinweis: Diese beiden Schritte können Seiten und Seiten mit Best Practices füllen und sollten mindestens ein paar Gedanken enthalten. Ganz zu schweigen davon, dass Graylog keine Überwachungslösung ist und Graylog selbst von einem geeigneten Überwachungstool überwacht werden sollte (wie z. B. Icinga, Prometheus, Nagios, um nur einige zu nennen).

malte
quelle
3

Ich stimme @Xiong Chiamiov zu und möchte eine klarere Option geben. Wenn Sie möchten, dass jede Zeile in der CLI überwacht wird, würde ich vorschlagen, die gesamte Ausgabe in eine bestimmte Datei und den Fehler in eine andere Datei umzuleiten. Verwenden Sie dann logstash oder filebeat , um diese beiden Dateien an Elasticsearch zu senden , und konfigurieren Sie Logtril mit Mit Kibana können Sie Ereignisse von mehreren Hosts in Echtzeit mit einer devops-freundlichen Oberfläche anzeigen, analysieren, suchen und protokollieren

Wissam Roujoulah
quelle
1

zentralisiert tmux

Während die anderen Antworten auf lange Sicht klüger und klüger sind, denke ich, dass die schnelle hackige CLI-Lösung erwähnenswert ist. Führen Sie es tmuxauf einem Server aus, der alle anderen erreichen kann. Ein guter Ort dafür wäre eine Sprungbox oder ein anderer Ort, an dem die Leute normalerweise sowieso angemeldet sind. Innerhalb dieser "zentralen" tmuxSSH zu jeder Box in einem anderen Bereich und Ende alle Protokolldateien erforderlich. Sie können ctrl- verwenden b ", um mehr Fenster in einer Registerkarte innerhalb zu erhalten tmux. Jetzt muss nur noch jemand an die "zentrale" tmuxSitzung anhängen, um die Dinge zu überprüfen, und er kann den gesamten Cluster auf einen Blick sehen.

Ich habe viel Zeit damit verbracht, die Web-UI-Lösungen zu entwickeln, auf die Sie hinarbeiten, aber wenn Sie sie heute brauchen, kann das Hacken von etwas tmuxden Tag retten.

Küken
quelle