Wir beenden unsere Webanwendung und planen die Bereitstellung. Ein sehr wichtiger Aspekt bei der Bereitstellung in der Produktion ist die Überwachung des Systemzustands. Ein kleines Team von Entwicklern / Supportmitarbeitern macht es für uns sehr wichtig, frühzeitig über potenzielle Probleme informiert zu werden und diese zu beheben, bevor sie Auswirkungen auf die Benutzer haben.
Die Verwendung von Nagios-Nähten ist eine gute Option, Sie möchten jedoch mehr Meinungen zu den besten Überwachungstools / -praktiken für Webanwendungen im Allgemeinen und speziell für Django-Apps erhalten. Ich würde auch Empfehlungen darüber begrüßen, was neben der offensichtlichen CPU, dem Speicher, dem Speicherplatz und der Datenbankkonnektivität überwacht werden sollte.
Unsere Web-App ist in Django geschrieben, wir laufen unter Linux (Ubuntu) unter Apache + Fast CGI mit PostgreSQL-Datenbank.
BEARBEITEN Wir haben eine vollständig virtualisierte Umgebung unter Linode.
EDIT Wir django-Protokollierung verwenden , so dass wir eine Möglichkeit , getrennte Informationen, Fehler, kritische Fragen haben, usw.
quelle
Antworten:
Nagios ist gut, es ist gut, wenn Systemtests (Selenium) regelmäßig ausgeführt werden.
Edit: Hyperic und Groundwork sehen auch interessant aus.
Es gibt wahrscheinlich ein Test-Suite-System, mit dem Sie auch weiterhin alles unter Druck testen können. Ich kann mich nicht an den Namen erinnern, vielleicht kann jemand unten einen erwähnen.
Andere Dinge, die ich gerne mache:
Das beste Motto für die Infrastruktur lautet immer reparieren, erkennen, reparieren. Steh auf, gehe der Wurzel auf den Grund und heile / verhindere es, wenn du kannst.
Da ein System auf vielen Ebenen existiert, sollten wir auf vielen Ebenen testen:
Bearbeiten: Lassen Sie alle Fehler oder Warnungen per E-Mail direkt an Ihren Fallmanager senden. Auf diese Weise können Sie Ereignisse an einem Ort verfolgen.
1) Verbindung : Überwachen Sie Ihre Internetverbindung vom Server und von außen. Protokolliere das irgendwo
2) Server : Überwachen Sie alle Prozesse, die Sie benötigen, um sicherzustellen, dass sie ausgeführt werden und den Server nicht fixieren. Verwenden Sie einen HP Server oder etwas Ähnliches mit einer Hardwarefehlerbenachrichtigung, die auf BIOS-Ebene ausgeführt werden kann. Benachrichtigen und protokollieren Sie, wenn dies der Fall ist.
3) Software : Identifizieren Sie die Schlüsselsoftware, die immer ausgeführt werden muss. Stellen Sie gegebenenfalls die Leistungsstufen ein und überwachen Sie sie. Nagios sollte dabei helfen können. Unter Windows kann es etwas mehr sein. Wenn eine Ausnahme auftritt, sollten Sie in der Lage sein, ein Skript daraus auszuführen, um Prozesse automatisch neu zu starten. Mein Traumsystem ermöglicht es mir, mit Servern per SMS zu interagieren, wenn der Server dies als Ausnahme ansieht, die ich entweder zulassen muss, oder als eine Ausnahme, die automatisch auftritt, wenn ich nicht per SMS kündige. Eines Tages..
4) Remote-Stromversorgung : Stellen Sie sicher, dass Sie über Funktionen zum Zurücksetzen der Remote-Stromversorgung verfügen. Möglicherweise möchten Sie wöchentliche Neustarts planen, wenn Sie jemals Windows für irgendetwas verwenden.
5) Testen der Geschäftslogik : Führen Sie regelmäßig Skripts aus, um den Workflow Ihres Systems zu testen. Selenium kann wahrscheinlich etwas davon erreichen, aber ich mag es auch, die Ergebnisse zu protokollieren, um zu sagen, dass dies zu diesem Zeitpunkt lief und diese Dateien Fehler hatten. Wenn möglich, lassen Sie das System sich selbst durch Ihre Skripte überwachen.
6) Backups : Erstellen Sie ein Backup, das Sie festlegen und vergessen können. Wenn Sie Dinge in virtuelle Maschinen integrieren können, ist dies ideal, da Sie jeden Teil Ihrer Infrastruktur überall skalieren, verschieben oder bereitstellen können. Ich hatte Fälle, in denen ich einen toten Server auf meinen Laptop verschoben habe und ihn in VMware laufen ließ, während ich ein Problem behoben habe.
quelle
Die Überwachung der Anzahl der Verbindungen zu Ihrem Webserver und Ihrer Datenbank ist eine weitere gute Sache, die Sie verfolgen sollten. Wenn man durch das Dach schießt, hungert wahrscheinlich etwas nach Ressourcen und die Baustelle steht kurz vor dem Untergang.
Stellen Sie außerdem sicher, dass Sie regelmäßig eine URL anfordern, die einen angemessenen End-to-End-Test des Systems darstellt. Wenn Ihre Site die Suche unterstützt, lassen Sie Nagios eine Suche ausführen. Dies sollte sicherstellen, dass der Suchindex, der Webserver und der Datenbankserver fehlerfrei sind.
Stellen Sie außerdem sicher, dass Ihre Anwendungen Ihnen E-Mails senden, wenn Ihre Benutzer einen Fehler sehen oder eine nicht behandelte Ausnahme vorliegt. Auf diese Weise wissen Sie, wie die Anwendung vor Ort fehlschlägt.
quelle
Wenn ich eine Art von Test auswählen müsste, wäre es, die Endbenutzerfunktionalität des Systems zu testen. Das Wichtigste ist der Benutzer. Während das Testen von Dingen wie Datenbankverfügbarkeit, Server-Verfügbarkeit usw. wichtig ist, deckt das Testen von Workflows durch Ihr System über ein Remote-UI-Testsystem alle diese Grundlagen ab. Wenn Sie wissen, dass die kritischen Teile Ihres Systems dem Endbenutzer zur Verfügung stehen, wissen Sie, dass Ihr System in Ordnung ist.
Diese Endbenutzertests sollten die Überwachung des Systems in Ihrem Rechenzentrum nicht ausschließen. Ich möchte jedoch wiederholen, dass Endbenutzertests die wichtigste Art von Tests sind, die Sie für eine Webanwendung durchführen können.
quelle
Ahhh, Überwachung. Wie ich dich und deine Schwingungen um 3 Uhr morgens liebe.
Im Wesentlichen benötigen Sie eine Möglichkeit, den internen Status Ihrer Anwendung sowohl zu einem bestimmten Zeitpunkt als auch über einen bestimmten Zeitraum hinweg zu überprüfen (letzteres ist sehr wichtig, um Probleme zu erkennen, bevor sie auftreten). Eine andere Art, es zu betrachten, ist das verherrlichte Testen von Einheiten.
Wir haben unser eigenes (sehr schönes) Überwachungssystem, daher kann ich Nagios oder andere Apps nicht kommentieren. Unser Anwendungsfall ähnelt jedoch Ihrem (CGI-App auf Apache).
Das ist alles ziemlich hoch. Wichtig ist, dass Sie den Verlauf der Anwendung im Laufe der Zeit im Verlauf haben. Daraus können Sie dann Regeln erstellen (möglicherweise nur SQL-Rohabfragen, die Sie irgendwo in eine Konfiguration eingefügt haben), die besagen: "Wenn sich die Abfragen pro Sekunde verdoppelt haben, senden Sie eine SlashDotted-Warnung" oder "Wenn 50% der Antworten 404 sind, senden Sie eine." aufmerksam". Es verblüfft auch das Management, weil Sie jeden Kommentar darüber quantifizieren können, ob er hoch, runter, schnell oder langsam ist.
Zu den zu überwachenden Dingen gehören (andere haben diese wahrscheinlich auch erwähnt): http-Status, Portzugriff, http-Laden, Datenbankladen, offene Verbindung, Abfrageverzögerung, Serverzugriff (ssh, Ping), Abfragen pro Sekunde, Anzahl der Arbeitsprozesse, Fehlerprozentsatz , Fehlerrate.
Einfache End-to-End-Tests sind ebenfalls sehr praktisch, können jedoch spröde sein. Es ist am besten, sie einfach zu halten, aber Sie sollten eine haben, die versucht, Kernelemente der App (Caching, Datenbank, Authentifizierung) zu berühren.
quelle
Ich benutze Munin und Monit und war mit beiden sehr zufrieden.
quelle
Die interne Protokollierung ist in Ordnung und gut, aber wenn Ihre gesamte App ausfällt oder Ihre Box / Umgebung abstürzt, müssen Sie auch eine externe Überprüfung durchführen. http://www.pingdom.com/ war für mich sehr zuverlässig.
Mein einziger anderer Rat ist, dass ich nicht zu viel Zeit damit verbringen würde . Mein bestes Beispiel ist Twitter. Wie viel Energie haben sie in das System gesteckt, um halb sterben zu können, anstatt nur diese Zeit und Energie in das Werfen von mehr Hardware / Skalieren zu investieren?
Die Chancen stehen gut, dass Sie im Stich gelassen werden. Ihre Protokollierungs- und Gesundheitssysteme werden sowieso fehlen.
quelle
Die wichtigste Möglichkeit zur Überwachung einer Online-Site ist die externe Überwachung. Das Ziel sollte darin bestehen, Ihre Website so zu überwachen, dass sie die Nutzung der Website durch Ihre Benutzer am besten widerspiegelt. In 99% der Fälle ist es relativ einfach, die Grundursache zu finden, sobald Sie wissen, dass Ihre Website extern nicht verfügbar ist. Das Wichtigste ist, so schnell wie möglich zu wissen, dass Ihre Kunden Ihre Website nicht laden können.
Dies bedeutet im Allgemeinen die Verwendung eines externen Leistungsüberwachungsdienstes. Sie reichen vom sehr niedrigen Ende (mon.itor.us, pingdom) bis zum oberen Ende (Webmetrics, Gomez, Keynote). Und wie immer bekommen Sie, wofür Sie bezahlen. Folgende Dinge sollten Sie beim Einkauf für einen Überwachungsdienst beachten:
Viel Glück!
quelle
Die Webüberwachung durch IP Patrol oder SiteSentry war für uns hilfreich. Das zweite ist ein bisschen wie das Vertrauen in die Website, aber etwas hübscher lol.
quelle
Haben Sie auch darüber nachgedacht, die Funktionalität zu überwachen? Ein Skript (entweder in einer Skriptsprache wie Perl oder Pyton oder mit einem Tool wie WebTest ), das mit Ihrer Anwendung kommuniziert und einige wichtige Schritte wie Anmelden, Kaufen usw. ausführt , ist sehr hilfreich.
quelle
Abgesehen davon, was überwacht werden soll, was bereits beantwortet wurde, müssen Sie sicherstellen, dass Sie - unabhängig davon, welches System Sie verwenden - bei jeder Anforderung nur eine Benachrichtigung über einen Fehler erhalten, der mehrmals auftritt. Oder Ihr Posteingang hat nicht mehr genügend Speicherplatz :) Außerdem ist es einfach ärgerlich ...
Verteilen Sie die Standby-Schichten auf das Support- / Entwicklerteam, damit nicht jeden Abend eine Person auf Abruf sein muss. Das wird die Leute zermürben. Überwachung ist eine gute Sache , aber jeder muss die Chance bekommen, ab und zu ein Leben zu führen. Ihr Handy, das für ein paar Nächte um 2 Uhr morgens summt, wird ziemlich bald sehr alt, vertrauen Sie mir. Und nicht jeder Entwickler ist an Support rund um die Uhr gewöhnt. Daher müssen Sie das Gleichgewicht zwischen Überwachung und Missbrauch der Überwachung finden.
Grundsätzlich sollten Sie unterschiedliche Eskalationsstufen haben. Wenn der Himmel nicht fällt, definieren Sie nachts ein Fenster " Gelassenheit jetzt ", in dem kleinere Eskalationsstufen nicht ausgehen.
quelle
Ich habe Nagios + CruiseControl + Selenium verwendet, um Tests auf hoher Ebene für geschäftskritische Webanwendungen durchzuführen. Ich wurde ziemlich hart von einem einfachen Abfragefehler verbrannt, der Benutzer daran hinderte, über ein Online-Anmeldeformular zu arbeiten.
http://www.agileatwork.com/the-holy-trinity-of-web-2-0-application-monitoring/
quelle
Sie können sich AlertGrid ansehen . Mit dieser Webanwendung können Sie Warnungen filtern und an Ihr Team weiterleiten (weltweit). Es hat auch eine gute Möglichkeit zu überwachen, ob etwas nicht passiert ist.
quelle
Um Richard Levasseur zu paraphrasieren: Ah, Überwachungstools, wie Ihre Unvollkommenheiten mich frustrieren. Es scheint kein perfektes Werkzeug zu geben; Nagios ist ziemlich einfach einzurichten, aber die Benutzeroberfläche ist etwas altmodisch und auf jedem überwachten Server muss ein Daemon ausgeführt werden. Zenoss hat eine viel schönere Benutzeroberfläche, einschließlich Trenddiagrammen der Ressourcennutzung, aber es verwendet SNMP, daher muss man sich damit auskennen, damit es richtig funktioniert, und die Dokumentation ist nicht die beste - es gibt Hunderte von Seiten, aber es ist wirklich schwer zu tun Finden Sie genau die Informationen, die Sie benötigen, um loszulegen.
Freunde von mir haben auch Cacti und Hyperic empfohlen , aber ich habe keine persönlichen Erfahrungen damit.
Eine letzte Sache - eine der anderen Antworten schlug vor, ein Tool auszuführen, das Ihre Site belastet. Ich würde nicht empfehlen, dies auf Ihrer Live-Site zu tun, es sei denn, Sie haben eine zuverlässige Ruhephase, in der niemand darauf trifft. Selbst dann könnten Sie es unerwartet herunterfahren. Es ist viel besser, einen Staging-Server zu haben, auf dem Sie Auslastungstests ausführen können, bevor Sie Änderungen in die Produktion übernehmen.
quelle
Einer unserer Kunden nutzt Techout (www.techout.com) und ist sehr zufrieden mit dem Service.
Für Benachrichtigungen, egal welcher Art oder wie viele, fallen keine Gebühren an. Sie bieten E-Mail-, Voicemail- und SMS-Benachrichtigungen an - und wenn etwas Wichtiges passiert, ein Anruf von einer lebenden Person, um Ihnen zu helfen.
Alles basiert auf Service - Sie installieren die Software nicht und haben einen Berater, der mit Ihnen zusammenarbeitet, um den besten Ansatz für Ihr Unternehmen zu ermitteln. Es ist einer der bequemsten Überwachungsdienste für Webanwendungen , da sie sich um alles kümmern.
quelle
Ich möchte nur hinzufügen, dass Sie die Fehlerwahrscheinlichkeit etwas basierend auf der Historie vergangener Fehler vorhersagen und diese beheben können. Wenn Sie bei internen Tests in kleinerem Maßstab die Häufigkeit und den Schweregrad von Problemen grafisch darstellen, die bis zu diesem Punkt behoben wurden, erhalten Sie einen Überblick über vorhersehbare neue Probleme. Wenn seit einiger Zeit alles fehlerfrei läuft, sind die beiden Problemquellen die jüngsten Änderungen oder Skalierbarkeitsprobleme.
Aus dem oben Gesagten geht hervor, dass Skalierbarkeit Ihre einzige Sorge ist, aber ich erwähne nur den Test der Häufigkeit früherer Fehler, da die Teams, in denen ich war, ausnahmslos glauben, dass sie den letzten Fehler behoben haben und es keine mehr gibt. Bis es gibt.
quelle
Das Ändern der Zeile ein wenig, etwas, das ich wirklich nützlich finde und das die Überwachung meiner Apps stark verändert hat, besteht darin, irgendwo Javascript-Ausnahmen zu protokollieren. Es gibt eine sehr schöne Implementierung, die diese direkt von den Browsern der Benutzer in Google Analytics protokolliert. Dies ist ein Muss für Javascript-zentrierte Webanwendungen und kann Ihnen Ergebnisse liefern, die direkt auf den Browsern der Benutzer basieren. Dies kann zu sehr unerwarteten Fehlern führen (iE und mobiler Browser sind schmerzhaft).
Haftungsausschluss: Mein Beitrag unten
http://www.directperformance.com.br/en/javascript-debug-simples-com-google-analytics
quelle
Für die Überwachung der Internetpräsenz würde ich den Dienst vorschlagen, an dem ich arbeite: Sucuri NBIM (Network-based Integrity Monitor).
Es führt Verfügbarkeits- und Integritätsprüfungen durch und sucht nach Änderungen an Ihrer Internetpräsenz (Websites, DNS, WHOIS, Header usw.) und nach Verbindungsverlust. Es ist kostenlos und Sie können es ausprobieren hier .
quelle