Vor langer Zeit gab es in einer weit entfernten Galaxie ein Unternehmen, das von einem Startup zu etwas viel Größerem gewachsen war, aber für eine Weile war die IT-Abteilung immer noch kompakt und sehr effizient. Dieses Unternehmen hat
auf Hunderten von virtuellen Windows-Servern gehostet, und diese Server wurden natürlich überwacht. Bereits vor meinem Eintritt in das Unternehmen wurde NetIQ als Überwachungslösung ausgewählt.
Eine meiner neuen Aufgaben war die Unterstützung von NetIQ. Die Person, die zuvor mit NetIQ gearbeitet hat, hat viel über seine Erfahrungen mit NetIQ gesagt. Wenn ich versuche, es hierher zu bringen, wäre es leider nur eine lange Reihe von '****' Zeichen. Bald wurde mir klar warum. Steve Jobs dreht sich wahrscheinlich in seinem Grab und betrachtet die Benutzeroberfläche folgendermaßen:

In der einen Zeile ist die Logik des Kontrollkästchens positiv (
Ereignis auslösen), in der nächsten negativ (
Ereignis nicht auslösen ). Wie funktioniert "
Ereignis nur für mich auslösen"? Ich habe keine ahnung
NetIQ hatte jedoch noch viel Schlimmeres zu bieten: Der Überwachungsagent war sehr zerbrechlich. Viel anfälliger als Windows selbst. Geringer Speicher? Agent ist ausgefallen. CPU ist 100%? Der Agent reagiert nicht. 0 freie Bytes auf einem Laufwerk? Nun, um eine Warnmeldung zu senden, muss ein Agent sie zuerst in einer Datei auf einer Festplatte speichern ... Ja, in diesem Fall erhalten Sie keine Warnungen.
"Reparieren Sie jedoch nicht, was nicht kaputt ist", und irgendwie haben wir damit gelebt, bis unser Unternehmen von einem viel größeren Unternehmen gekauft wurde. Wenn eine große Firma eine kleine kauft, löst sich die kleine als Wassertropfen in einem Meer auf. In unserem Fall waren wir (aus IT-Sicht) jedoch nicht viel kleiner als die IT eines größeren Unternehmens, und es war von Anfang an klar, dass die Fusion sehr schwierig sein würde. So knifflig, dass wir eine Zeit lang als unabhängige Abteilung allein waren und alle Geschäfts- und IT-Prozesse gleich blieben - direkt unter dem Dach des neuen Namens. Es erinnert mich an den Moment, als
DER RING auf der Lava lag, aber noch nicht zu schmelzen begann.

In der Zwischenzeit hatte ich NetIQ von Version 7 auf 8 und später auf Version 9 aktualisiert. Zu diesem Zeitpunkt begannen alle unsere Probleme. Wir haben NetIQ verwendet, um nur einige grundlegende Dinge zu überwachen: Verfügbarkeit eines Servers, Arbeitsspeichers, CPUs, Speicherplatzes und das für uns wichtigste - den Status von selbst entwickelten Diensten. Wenn ein selbst erstellter Dienststarttyp auf "Automatisch" gesetzt wurde, sollte er immer ausgeführt werden (andernfalls wird er als abgestürzt angesehen). Es sollte keine Fälle wie diesen geben:

Daher hat NetIQ die Überwachung des Status der Dienste eingestellt. Nach einer Woche des Experimentierens und einer weiteren Woche der Anrufe mit NetIQ-Unterstützung hatten wir erfahren, dass "
es kein Fehler war, es war eine Funktion " und eine Warnung nur ausgelöst wurde, wenn ein Prozess mit einem bestimmten Exit-Code beendet wurde. Und unsere Dienste stürzten mit irgendwelchen Codes ab.
Zu diesem Zeitpunkt war es zu spät, um zurückzurollen. Wie Sie verstehen, hatten wir sofort ... eh ... nichts unternommen, sobald wir festgestellt hatten, dass unsere kritische Infrastruktur nicht überwacht wurde. Denn zu dieser Zeit erreichte der Prozess des „Schmelzens“ unseres Unternehmens zu einem größeren eine aktive Phase, und es sah so aus:

Ich hörte Donnergeräusche von weit oben und es sah so aus, als würden die Götter auf dem Olymp über das Schicksal der Welt entscheiden, während ich versuchte, sie mit meinem winzigen technischen Problem abzulenken. Gleichzeitig konnte ich nicht schlafen, weil ich wusste, dass unser Überwachungssystem halb blind war.
Nachdem mir klar geworden war, dass es nichts zu warten gab, beschloss ich, eine schnelle und schmutzige Lösung zu erstellen - einen winzigen Service-Scanner, der alle Server durchsuchen sollte, um die Dienste zu überprüfen und E-Mails für Dienste zu senden, die ausgefallen waren, genau wie die alte Version von NetIQ hat es getan. Sie könnten denken, dass das PowerShell-Skript der beste Weg ist, aber ... Wenn Sie nur einen Hammer haben, sieht alles wie ein Nagel aus. Wenn Sie ein DBA sind, der seit Version 6.0 mit SQL gearbeitet hat, dann ... Hier ist ein kurzer Auszug aus dem Code, damit Sie verstehen, wovon ich spreche:

Ich habe nur wenige Stunden gebraucht, um die erste Lösung zu schreiben. In den nächsten Tagen habe ich ein Audit, Parameter und andere ausgefallene Dinge hinzugefügt. Nachdem ich untersucht hatte, was der WMIC-Befehl tun konnte, konnte ich nicht aufhören. Ich erinnere mich nicht genau, was in den nächsten 2 Wochen passiert ist - alles war etwas verschwommen, aber als ich aufwachte, wurden alle Funktionen von NetIQ mit reinem SQL implementiert.
Ich habe nicht nur die NetIQ-Funktionalität "wie sie ist" kopiert, sondern alles implementiert, wovon ich jemals geträumt habe. In der LOWDISK-E-Mail-Benachrichtigung erhalten Sie außerdem eine PDF-Datei mit einem Diagramm zur Wachstumsrate der Festplattennutzung, damit Sie sofort erkennen können, ob das Wachstum echt war oder etwas schief gelaufen ist. Geringer Arbeitsspeicher - und Sie erhalten nicht nur das Diagramm, sondern auch eine Speicherverteilung nach Prozessen. Für w3wp.exe wird ein Poolname angehängt. Ich hatte auch intelligente Erinnerungen mit Hochwasserschutz und vielen anderen ausgefallenen Dingen implementiert. Übrigens wurde die Liste der virtuellen Server automatisch aus VMware-Repositorys abgerufen. Wenn Sie nur die Alarmthemen in einem mobilen Client betrachten, können Sie sofort sagen, was los ist - auch ohne die E-Mails zu öffnen:

Moderne Entwickler haben sich daran gewöhnt, Abstraktionsebenen so zu erstellen, dass ihre Fähigkeit, einen einfachen, unkomplizierten Code zu schreiben, beeinträchtigt wird. Sie können kein Überwachungssystem erstellen, ohne zu sagen: "Ok, also können wir für jeden Server einen beliebigen Satz von Skripten mit Regeln aus einem Repository ausführen ... Wie flexibel ...". Die Überwachung einiger grundlegender Dinge wie Speicher, CPU, Festplatte und Dienststatus ist jedoch einzigartig. Durch die Implementierung der Überprüfung dieser Grundbedingungen mit einer Abstraktionsebene enden sie mit einem Code, der in allen Fällen gleich schlecht funktioniert. Dies ist ein Beispiel aus dem SCOM-System. Ich bin sicher, dass es genau durch die Spezifikationen implementiert wurde:

Der Hauptvorteil des neuen Systems war jedoch, dass es überhaupt keinen Agenten gab. Keine Agenten - nichts zu installieren, nichts zu brechen. Das System war als Hummer einfach und zuverlässig.
Wenige im nächsten Monat kam ich zur Arbeit und arbeitete ein oder zwei Stunden an meiner neuen Kreation - langsam, ohne Fristen und ETAs, ohne technische Schulden. Nach einer Weile zwang ich mich aufzuhören.
NetIQ war noch in der Produktion, aber die Leute bevorzugten definitiv Warnungen aus dem neuen System, zuverlässiger und informativer. Allmählich verschob ich alle Alarmteilnehmer auf das neue System, wobei das alte System jedoch am Leben blieb. Inzwischen hatte der Prozess des „Schmelzens“ unseres alten Unternehmens zu einem größeren sein Endstadium erreicht:

Nun, alles hat ein Ende. Ich war sogar überrascht, dass ich die Chance hatte, in einer großen bürokratischen Firma mit solchen Dingen zu spielen. Nach einem Monat der Vorbereitung wurde mir gesagt, dass „
in einer Woche NetIQ heruntergefahren und als Unternehmensstandard auf SCOM umgestellt wurde “. Ich habe NetIQ heruntergefahren (ich muss zugeben, ich habe es so sehr gehasst, dass es einer der glücklichsten Momente meiner Karriere war) und habe darauf gewartet, dass SCOM eintrifft. Aber es gab keine. Nichts seit einer Woche und einem Monat und sogar einem Viertel.
Wir haben SCOM erst nach 6 Monaten erhalten - jemand hatte die Lizenzkosten für die große Anzahl von Servern vergessen, die wir hatten. In diesen 6 Monaten wurden viele Abteilungen so abhängig von dem neuen System, das nicht nur die Warnungen, sondern auch die Leistungsmetriken und Inventare behielt, dass es nicht in Frage kam, es herunterzufahren. Es wurde ein zweites Backup-System. Für die Auditoren gibt es SCOM, für die wirklich nützlichen Dinge - es gibt meine Kreation.
Von Zeit zu Zeit gingen Manager auf verschiedenen Hierarchieebenen die Warnungen dieses Systems durch und fragten: Was ist das? Kürzlich hatte ich die ganze Geschichte hinter diesem Produkt erklärt. Sie lachten und ließen dieses System leben, und für mich war es eine Gelegenheit, einen Code zu schreiben, wie ich es als Student war - nicht nach Spezifikationen, sondern nach meinem eigenen Verständnis, wie ein Hobby. Es war ein großer Spaß.
Artikel in russischer Sprache