Überwachen von Windows-Servern unter reinem MS SQL und wie ich es heimlich implementiert habe

Einmal gab es in einer fernen, fernen Galaxie ein Unternehmen, das seit langem von einem Startup gewachsen war, aber dennoch recht kompakt und effizient blieb. Das Unternehmen hat (auf seiner Hardware) Hunderte von Windows-Servern gehostet, und dies musste irgendwie überwacht werden. Noch bevor ich dazu kam, wurde NetIQ als Lösung ausgewählt.

Ich wurde angewiesen, NetIQ einzurichten, und derjenige, der dies vor mir tat, sagte kein einziges Wort darüber. Gedruckt. Mir wurde schnell klar warum. Steve Jobs dreht sich wahrscheinlich im Grab und schaut sich eine ähnliche Oberfläche an:

Bild

In einer Zeile ist die Logik der „Vögel“ positiv (Ereignis auslösen). In einem anderen Negativ (Ereignis nicht auslösen). Wie "Nur Ereignisse auslösen, wenn" mit einem anderen Satz von Kontrollkästchen funktioniert, habe ich im Allgemeinen nur experimentell verstanden (und bereits vergessen).

Ein viel schlimmeres Merkmal von NetIQ war jedoch seine Fragilität. Ihr Agent, der auf jedem Server installiert war, war erheblich anfälliger als Windows. Nicht genug Speicher? Agent flog aus. CPU 100%? Der Agent antwortet nicht. Noch 0 Bytes auf der Festplatte - was würden Sie denken? Um eine Nachricht zu senden, muss der Agent sie zuerst als Datei auf der Festplatte erstellen ... Nun, Sie verstehen.

Trotzdem lebten sie irgendwie damit, bis die Firma von der Firma noch mehr gekauft wurde. Wenn ein Monster eine winzige Firma frisst, löst sich diese Firma wie ein Tropfen im Meer auf. In unserem Fall waren wir selbst nach IT-Maßstäben nur geringfügig weniger als diejenigen, die uns gekauft haben, und es war sofort klar, dass der Fusionsprozess sehr schwierig sein würde. So kompliziert, dass wir einige Zeit überhaupt nicht berührt wurden und intern alle Prozesse gleich blieben. Dieser Zustand ähnelte dem Moment, als der Ring der Allmacht auf die Lava fiel, aber noch nicht zu schmelzen begonnen hat:


In der Zwischenzeit habe ich NetIQ von Version 7 auf 8 und dann auf 9 aktualisiert, als unsere Probleme begannen. NetIQ überwachte nur einige Dinge: die Verfügbarkeit des Servers selbst, des Speichers, der CPU, der Festplatte und vor allem der Dienste. Wenn unsere selbstgeschriebenen Dienste automatisch waren, hätten sie funktionieren sollen. Dies sollte nicht so sein:


Diese Ereignisse haben in den meisten Fällen die Überwachung von NetIQ gestoppt. Nach einer Woche voller Experimente und einer Woche mit Support haben wir herausgefunden, dass „dies kein Fehler ist, dies ist eine Funktion“ und dass eine Warnung nur mit einem bestimmten Exit-Code generiert wird. Und unsere Dienstleistungen fielen manchmal mit irgendwelchen Codes.

Es verging viel Zeit und es war zu spät, um zurückzurollen. Wie Sie verstehen, haben wir sofort ... äh ... nichts unternommen, nachdem wir festgestellt haben, dass unsere kritische Infrastruktur nicht überwacht wird. Denn zu diesem Zeitpunkt war die „Auflösung“ unseres Unternehmens größtenteils in die aktive Phase eingetreten, und es sah ungefähr so ​​aus:


Entfernte Donnerschläge, Schreie und Blitze erreichten mich und es sah so aus, als würde das Schicksal der Welt entschieden, und ich kletterte mit einem kleinen technischen Problem ... Aber ich konnte nicht friedlich schlafen, da ich wusste, dass unsere Überwachung halb blind war.

Als mir klar wurde, dass es keinen Ort gab, an dem ich auf Hilfe warten konnte, beschloss ich, schnell einen Service-Scanner zu schreiben, der alle Server umgeht und eine E-Mail sendet, wenn etwas nicht so ist wie NetIQ. Glaubst du wahrscheinlich, ich habe Powershell benutzt? Nein. Wenn Sie einen Hammer in der Hand haben, sind alles Nägel, und wenn Sie seit Version 6.0 DBA verwenden und mit SQL arbeiten, dann ... Ein kurzer Auszug aus dem Code, damit Sie verstehen, worum es geht:


Ich habe es in ein paar Stunden geschafft. In den nächsten Tagen wurden Nachrichten, Parameter und andere Extras überprüft. Nachdem ich über den WMIC-Befehl gelesen hatte, konnte ich nicht aufhören. Dann ein paar Wochen im Nebel. Ich bin aufgewacht, als alles, was wir in NetIQ verwendet haben, neu geschrieben und mit einem Knall bearbeitet wurde.

Funktionalität wurde nicht nur kopiert - ich realisierte alle meine Fantasien, alles, was ich von einem solchen System möchte. LOWDISK - Sie erhalten auch eine grafische Darstellung des Verhaltens des freien Speicherplatzes auf der Festplatte in letzter Zeit - ob dieses Wachstum normal ist oder etwas schief gelaufen ist. Es ist nicht genügend Speicher vorhanden - dies ist der Zeitplan und die Liste der Prozesse und wie viel sie benötigen. Für w3wp.exe werden wir den Namen des Anwendungspools, intelligente Erinnerungen und vieles mehr fertigstellen. Übrigens könnte das System die Liste der Server selbst von VMware übernehmen. Ein kurzer Blick auf die Themen der Warnungen am Telefon genügte, um zu verstehen, was geschah:


Moderne Programmierer sind es so gewohnt, abstrakt zu denken, dass sie kein anderes Überwachungssystem schreiben können als "Für den Server führen wir eine Reihe von abstrakten Überwachungsskripten aus, und es ist uns egal, was sich darin befindet", während sie jeden Status - Festplatte, Speicher, CPU, Dienste - auf ihre eigene Weise überwachen sind einzigartig. Wenn Sie dies "abstrakt" erkennen, geht es Ihnen in jedem Fall gleich schlecht, und Folgendes passiert: (Dies ist ein Screenshot aus der E-Mail von SCOM. Sicherlich streng nach dem ToR)


Ein großes Plus des neuen Systems war, dass es agentenlos war, es gab keine Probleme bei der Installation des Agenten, seine Abstürze - es gab einfach nichts, was dort hinfallen könnte. Das System war einfach und zuverlässig wie ein Hammer.

In den nächsten Monaten kam ich morgens zur Arbeit, stellte mich wie ein Künstler vor eine Leinwand und machte ein paar Striche, um sie noch idealer zu machen. Da ich keine Fristen hatte, wurde die technische Verschuldung minimiert. Irgendwann zwang ich mich immer noch aufzuhören.

NetIQ funktionierte immer noch, aber jeder mochte die neue Art von Warnungen mehr, und nach und nach übertrug ich alle auf Warnungen vom neuen System, ohne jedoch die alte auszuschalten. In der Zwischenzeit hat der Prozess der „Fusion“ seine letzte Phase erreicht:


Nun, das Märchen sollte enden. Ich selbst war überrascht, dass ich in einer großen bürokratischen Firma so viel Spaß haben konnte. Nach einem Monat der Vorbereitung sagten sie mir, dass wir in einer Woche NetIQ gelöscht und zu SCOM gewechselt hätten. Ich schaltete NetIQ aus (ich gebe zu, ich hasste es so sehr, dass ich sehr zufrieden war) und begann auf SCOM zu warten. Aber zur festgesetzten Zeit war er nicht da. Nicht nach einer Woche und nach einem Monat.

SCOM erschien nur sechs Monate später - jemand vergaß, wie viele Server wir haben und wie viele Lizenzen wir für SCOM benötigen. In sechs Monaten begannen so viele Systeme von meinem System abhängig zu werden, dass Inventare, Metriken und vieles mehr aufbewahrt wurden, was stillschweigend an zweiter Stelle blieb - inoffiziell. Für Auditoren gibt es SCOM, und alles, was wirklich nützlich ist, befindet sich im zweiten System.

Manchmal fragten sich Manager verschiedener Ebenen - woher kommen diese automatisierten E-Mails? Kürzlich habe ich ihnen die Geschichte, die ich in diesem Artikel dargelegt habe, ausführlich beschrieben, und sie haben fröhlich gelacht. Obwohl es für mich manchmal immer noch sehr lustig ist, wie man in einer großen bürokratischen Firma viele Dinge in einen stillen Blick hineinziehen kann. Ja, und es ist schön, einfach den Code zu schreiben, wie in den guten alten Zeiten.

Source: https://habr.com/ru/post/de430662/


All Articles