Sistema de monitoreo para servidores de Windows en SQL puro, y cómo lo había arrastrado en secreto a la Producción

Hace mucho tiempo, en una galaxia muy, muy lejana, hab√≠a una compa√Ī√≠a que creci√≥ de una startup a algo mucho m√°s grande, pero durante un tiempo el departamento de TI a√ļn era compacto y muy eficiente. Esa empresa aloj√≥ en prem cientos de servidores virtuales de Windows y, por supuesto, estos servidores fueron monitoreados. Incluso antes de unirme a la compa√Ī√≠a, NetIQ hab√≠a sido elegida como una soluci√≥n de monitoreo.

Una de mis nuevas tareas fue apoyar NetIQ. La persona, que trabajó con NetIQ antes, dijo mucho sobre su experiencia con NetIQ, desafortunadamente, si trato de ponerlo aquí, sería solo una larga línea de caracteres '****'. Pronto me di cuenta por qué. Steve Jobs probablemente esté girando en su tumba mirando la interfaz así:

imagen

En la l√≠nea uno, la l√≥gica de la casilla de verificaci√≥n es positiva ( evento de aumento ), en la siguiente es negativa ( no evento de aumento ). Entonces, ¬Ņc√≥mo funciona ' Raise event only i f'? No tengo idea

Sin embargo, hab√≠a algo mucho peor sobre NetIQ: su agente de monitoreo era muy fr√°gil. Mucho m√°s vulnerable que el propio Windows. Poca memoria? El agente est√° ca√≠do. CPU es 100%? El agente no responde. ¬ŅQuedan 0 bytes libres en una unidad de disco? Bueno, para enviar un mensaje de alerta, un agente primero debe guardarlo en un archivo en un disco ... Entonces s√≠, no recibe ninguna alerta en ese caso.

Sin embargo, "no arregles lo que no est√° roto", y de alguna manera, vivimos con √©l hasta que nuestra empresa fue comprada por una mucho m√°s grande. Cuando una gran empresa compra una peque√Īa, la peque√Īa se disipa como una gota de agua en el mar. Sin embargo, en nuestro caso nosotros (desde la perspectiva de TI) no √©ramos mucho m√°s peque√Īos que la TI de una compa√Ī√≠a m√°s grande, y desde el principio era obvio que la fusi√≥n ser√≠a muy complicada. Tan complicado que por un tiempo nos quedamos solos como un departamento independiente y todos los procesos comerciales y de TI se mantuvieron igual, justo bajo el paraguas del nuevo nombre. Me recuerda el momento, cuando EL ANILLO estaba sobre la lava pero a√ļn no ha comenzado a derretirse.

imagen

Mientras tanto, había actualizado NetIQ de la versión 7 a la 8, y luego a la versión 9. Fue entonces cuando comenzaron todos nuestros problemas. Estábamos usando NetIQ para monitorear solo algunas cosas básicas: disponibilidad de un servidor, memoria, CPU, espacio en disco y lo más importante para nosotros: el estado de los servicios locales. Cuando cualquier tipo de inicio de servicio interno se estableció en "Automático", entonces debería estar siempre ejecutándose (de lo contrario, consideramos que se bloqueó). No debería haber casos como este:

imagen

Entonces, NetIQ dejó de monitorear el estado de los servicios. Después de una semana de experimentación y otra semana de llamadas con soporte de NetIQ, habíamos aprendido que " no era un error, era una característica " y la alerta se activaba solo cuando un proceso salía con un código de salida específico. Y nuestros servicios fallaron con CUALQUIER código.

En ese momento ya era demasiado tarde para retroceder. Como comprender√°, tan pronto como descubrimos que nuestra infraestructura cr√≠tica no era monitoreada, inmediatamente ... eh ... no hicimos nada. Porque en ese momento el proceso de "fusi√≥n" de nuestra compa√Ī√≠a en una m√°s grande alcanz√≥ una fase activa, y se ve√≠a as√≠:

imagen

Escuch√© sonidos de truenos desde muy arriba, y parec√≠a que los dioses en el Olimpo estaban decidiendo el destino del mundo, mientras trataba de distraerlos con mi peque√Īo problema t√©cnico. Al mismo tiempo, no pod√≠a dormir sabiendo que nuestro sistema de monitoreo era medio ciego.

Despu√©s de darme cuenta de que no hab√≠a nada que esperar, decid√≠ crear una soluci√≥n r√°pida y sucia: un peque√Īo esc√°ner de servicio que deber√≠a revisar todos los servidores para verificar los servicios y enviar correos electr√≥nicos para los servicios que estaban inactivos, exactamente como la versi√≥n anterior de NetIQ lo hizo. Puede pensar que el script de PowerShell es la mejor manera de hacerlo, pero ... Si todo lo que tiene es un martillo, todo parece un clavo. Si usted es un DBA que trabaj√≥ con SQL desde la versi√≥n 6.0, entonces ... Aqu√≠ hay un breve extracto del c√≥digo, para que pueda entender de lo que estoy hablando:

imagen

Me tomó solo unas pocas horas escribir la primera solución. Durante los próximos días agregué una auditoría, parámetros y otras cosas elegantes. Después de examinar lo que podía hacer el comando WMIC, no pude detenerme. No recuerdo exactamente lo que sucedió durante las próximas 2 semanas: todo estaba un poco borroso, pero cuando me desperté, todas las características de NetIQ se implementaron utilizando SQL puro.

No solo he copiado la funcionalidad de NetIQ "tal cual", he implementado todo lo que siempre so√Ī√©. En la alerta por correo electr√≥nico de LOWDISK tambi√©n obtienes un PDF adjunto con una tabla de crecimiento del uso del disco para que puedas entender instant√°neamente si el crecimiento fue genuino o si algo sali√≥ mal. Poca memoria: y obtiene no solo el gr√°fico, sino tambi√©n una distribuci√≥n de memoria por proceso, adem√°s de w3wp.exe obtiene un nombre de grupo agregado. Tambi√©n hab√≠a implementado recordatorios inteligentes con protecci√≥n contra inundaciones y muchas otras cosas elegantes. Por cierto, la lista de servidores virtuales se extrajo autom√°ticamente de los repositorios de VMware. Simplemente mirando los temas de alerta en un cliente m√≥vil, puede decir instant√°neamente lo que estaba sucediendo, incluso sin abrir los correos electr√≥nicos:

imagen

Los desarrolladores modernos se acostumbraron a crear niveles de abstracci√≥n hasta el punto de perjudicar su capacidad de escribir un c√≥digo simple y directo. No pueden crear un sistema de monitoreo sin decir: "Ok, entonces para cualquier servidor podemos ejecutar cualquier conjunto de scripts con reglas desde un repositorio ... Qu√© flexible ...". Pero el monitoreo de algunas cosas fundamentales como la memoria, la CPU, el disco y el estado de los servicios es √ļnico. Al implementar la verificaci√≥n de estas condiciones b√°sicas con un nivel de abstracci√≥n, terminan con un c√≥digo que funciona igualmente mal para todos los casos. Este es un ejemplo del sistema SCOM. Estoy seguro de que fue implementado exactamente por las especificaciones:

imagen

Pero la principal ventaja del nuevo sistema era que no hab√≠a ning√ļn agente en absoluto. Sin agentes: nada que instalar, nada que romper. El sistema era simple y confiable como un hummer.

Pocos el mes que viene vine a trabajar y pasé una o dos horas trabajando en mi nueva creación, lentamente, sin plazos ni ETA, sin dejar casi ninguna deuda técnica. Después de un rato me obligué a parar.

NetIQ todav√≠a estaba en producci√≥n, pero la gente definitivamente prefer√≠a las alertas del nuevo sistema, m√°s confiables e informativas. Gradualmente, mov√≠ todos los "suscriptores" de alerta al nuevo sistema, manteniendo, sin embargo, el antiguo sistema con vida. Mientras tanto, el proceso de "fusi√≥n" de nuestra antigua compa√Ī√≠a en una m√°s grande hab√≠a alcanzado su etapa final:

imagen

Bueno, todo tiene un final. Incluso me sorprendió tener la oportunidad de jugar con esas cosas en una gran empresa burocrática. Después de un mes de preparación, me dijeron que "está bien, en una semana cerramos NetIQ y pasamos a SCOM como estándar corporativo ". Cerré NetIQ (tengo que admitirlo, lo odié tanto que fue uno de los momentos más felices de mi carrera) y comencé a esperar a que llegara SCOM. Pero no había ninguno. Nada desde una semana, un mes e incluso una cuarta parte.

Recibimos SCOM solo despu√©s de 6 meses completos: alguien se hab√≠a olvidado del costo de las licencias para la gran cantidad de servidores que ten√≠amos. En estos 6 meses, muchos departamentos se volvieron tan dependientes del nuevo sistema, que mantuvo no solo las alertas, sino tambi√©n las m√©tricas de rendimiento y los inventarios, por lo que era imposible cerrarlo. Se convirti√≥ en un segundo sistema de respaldo. Para los auditores est√° SCOM, para las cosas realmente √ļtiles, est√° mi creaci√≥n.

De vez en cuando, los gerentes en diferentes niveles de jerarqu√≠a pasaban por alto las alertas de ese sistema y preguntaban: ¬Ņqu√© es? Recientemente hab√≠a explicado toda la historia detr√°s de este producto. Se rieron y dejaron que ese sistema viviera, y para m√≠ fue una oportunidad de escribir un c√≥digo como cuando era un estudiante, guiado no por especificaciones sino por mi propia comprensi√≥n, como un hobby. Fue muy divertido.

Artículo en ruso

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


All Articles