Surveillance des serveurs Windows sur MS SQL pur et comment je l'ai implémenté secrètement

Une fois, dans une galaxie lointaine et lointaine, il y avait une entreprise qui avait longtemps évolué à partir d'une startup, mais qui restait encore assez compacte et efficace. La société a hébergé (sur son matériel) des centaines de serveurs Windows, et cela a dû être surveillé. Avant même d'y arriver, NetIQ a été choisi comme solution.

J'ai été chargé de mettre en place NetIQ, et celui qui l'a fait avant moi n'en a pas dit un mot. Imprimé. J'ai vite compris pourquoi. Steve Jobs tourne probablement dans la tombe, regardant une interface similaire:

image

En une ligne, la logique des «oiseaux» est positive (événement Raise). Dans un autre négatif (ne pas déclencher d'événement). Comment «ne déclencher les événements que lorsque» fonctionne avec un ensemble différent de cases à cocher, je ne l'ai généralement compris qu'expérimentalement (et j'ai déjà oublié).

Cependant, une caractéristique bien pire de NetIQ était sa fragilité. Son agent, installé sur chaque serveur, était nettement plus vulnérable que Windows lui-même. Pas assez de mémoire? L'agent s'est envolé. CPU 100%? L'agent ne répond pas. 0 octet restant sur le disque - qu'en pensez-vous? Pour envoyer un message, l'agent doit d'abord le créer sur disque, sous forme de fichier ... Eh bien, vous comprenez.

Néanmoins, ils ont vécu avec elle jusqu'à ce que l'entreprise soit rachetée par l'entreprise encore plus. Lorsqu'un monstre mange une toute petite entreprise, cette entreprise se dissout comme une goutte dans la mer. Dans notre cas, nous-mêmes, selon les normes informatiques, n'étions que légèrement inférieurs à ceux qui nous ont achetés, et il était immédiatement évident que le processus de fusion serait très difficile. Si compliqué que pendant un certain temps nous n'avons pas été touchés du tout et en interne tous les processus sont restés les mêmes. Cet état était similaire au moment où l'anneau de toute-puissance est tombé sur la lave, mais n'a pas encore commencé à fondre:


En attendant, j'ai mis à niveau NetIQ de la version 7 à 8 puis à 9, lorsque nos problèmes ont commencé. NetIQ n'a surveillé que quelques éléments: la disponibilité du serveur lui-même, de la mémoire, du processeur, du disque et, surtout, des services. Si nos services auto-écrits étaient en Automatique, alors ils auraient dû fonctionner. Cela ne devrait pas être comme ça:


Ces événements dans la plupart des cas et ont cessé de surveiller NetIQ. Après une semaine d'expériences et une semaine de travail avec le support, nous avons découvert que «ce n'est pas un bug, c'est une fonctionnalité» et qu'une alerte est générée uniquement avec un certain code de sortie. Et nos services tombaient parfois sous n'importe quel code.

Beaucoup de temps s'est écoulé et il était trop tard pour revenir en arrière. Comme vous le comprenez, après avoir découvert que notre infrastructure critique n'est pas surveillée, nous n'avons immédiatement ... euh ... rien fait. Parce qu'à ce moment-là, la «dissolution» de notre entreprise était entrée en grande partie dans la phase active, et elle ressemblait à ceci:


Des coups de tonnerre lointains, des cris, des éclairs m'ont atteint, et il semblait que le destin du monde était en train d'être décidé, et je grimpais avec une sorte de problème technique mineur ... Mais je ne pouvais pas dormir paisiblement, sachant que notre surveillance était à moitié aveugle.

Réalisant qu'il n'y avait nulle part où attendre de l'aide, j'ai décidé d'écrire rapidement un scanner de service qui contournerait tous les serveurs et enverrait un e-mail si quelque chose n'allait pas comme NetIQ. Vous pensez probablement que j'ai utilisé Powershell? Non. Si vous avez un marteau entre les mains, alors tout est clou, et si vous utilisez DBA et travaillez avec SQL depuis la version 6.0, alors ... Un court extrait du code pour que vous puissiez comprendre de quoi il s'agit:


Je l'ai fait en quelques heures. Au cours des prochains jours, il y a eu un audit des messages, paramètres et autres goodies. Après avoir lu la commande WMIC, je n'ai pas pu m'arrêter. Puis quelques semaines dans un brouillard. Je me suis réveillé lorsque tout ce que nous avons utilisé dans NetIQ a été réécrit et a fonctionné avec fracas.

La fonctionnalité n'était pas seulement copiée - j'ai réalisé tous mes fantasmes, tout ce que j'aimerais d'un tel système. LOWDISK - vous obtenez également un graphique de la façon dont l'espace libre sur le disque s'est comporté récemment - si cette croissance est normale ou si quelque chose s'est mal passé. Il n'y a pas assez de mémoire - c'est le calendrier, et la liste des processus et combien ils prennent, et pour w3wp.exe, nous terminerons le nom du pool d'applications, les rappels intelligents et bien plus encore. Soit dit en passant, le système pourrait prendre seul la liste des serveurs de VMware. Un coup d'œil rapide aux sujets d'alertes au téléphone a suffi pour comprendre ce qui se passait:


Les programmeurs modernes sont tellement habitués à penser de manière abstraite qu'ils ne peuvent pas écrire un système de surveillance autre que "pour le serveur, nous exécutons un ensemble de scripts de surveillance abstraits, et nous ne nous soucions pas de ce qu'il y a à l'intérieur", tout en surveillant chaque état - disque, mémoire, CPU, services - à sa manière sont uniques. En réalisant cela «de manière abstraite», vous vous en sortez tout aussi mal pour chaque cas, et c'est ce qui se passe: (Ceci est une capture d'écran de l'e-mail de SCOM. Sûrement fait strictement selon le mandat)


Un énorme avantage du nouveau système était qu'il était sans agent, respectivement, il n'y avait aucun problème avec l'installation de l'agent, ses plantages - il n'y avait tout simplement rien à y faire. Le système était simple et fiable comme un marteau.

Les mois suivants, je suis venu travailler le matin, je me suis tenu devant mon idée originale, comme un artiste devant une toile, et j'ai appliqué quelques coups, ce qui le rend encore plus idéal. Comme je n'avais pas de délais, la dette technique a été minimisée. À un moment donné, je me suis encore forcé à arrêter.

NetIQ fonctionnait toujours, mais tout le monde aimait plus le nouveau type d'alertes, et progressivement j'ai transféré tout le monde aux alertes du nouveau système, sans désactiver l'ancien, cependant. Entre-temps, le processus de «fusion» est entré dans sa phase finale:


Eh bien, le conte de fées devait se terminer. J'ai moi-même été surpris de pouvoir m'amuser autant dans une grande entreprise bureaucratique. Après un mois de préparation, ils m'ont dit qu'en une semaine, nous avons éteint NetIQ et nous sommes passés à SCOM. J'ai désactivé NetIQ (je l'avoue, je le détestais tellement que j'étais très content) et j'ai commencé à attendre SCOM. Mais à l'heure fixée, il n'était pas là. Pas après une semaine et après un mois.

SCOM est apparu seulement six mois plus tard - quelqu'un a oublié le nombre de serveurs que nous avons et le nombre de licences dont nous avons besoin pour SCOM. En six mois, de nombreux systèmes ont commencé à dépendre de mon système, qui a commencé à conserver les inventaires, les mesures et bien plus encore, qui est resté tranquillement deuxième - non officiel. Pour les auditeurs, il y a SCOM, et tout ce qui est vraiment utile est dans le deuxième système.

Parfois, les gestionnaires de différents niveaux se demandaient - d'où viennent ces courriels automatisés? Récemment, je leur ai décrit en détail l'histoire que j'ai exposée dans cet article, et ils ont ri joyeusement. Bien que ce soit encore parfois très drôle pour moi, comment dans une grande entreprise bureaucratique vous pouvez "traîner dans une morgue silencieuse" beaucoup de choses. Oui, et c'est bien d'écrire simplement le code, comme au bon vieux temps.

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


All Articles