Monitorando servidores Windows em puro MS SQL e como eu o implementei secretamente

Certa vez, em uma galáxia distante e distante, havia uma empresa que havia muito crescera desde uma startup, mas que ainda era bastante compacta e eficiente. A empresa hospedava (em seu hardware) centenas de servidores Windows, e isso precisava ser monitorado. Mesmo antes de eu chegar lá, o NetIQ foi escolhido como a solução.

Fui instruído a configurar o NetIQ, e quem fez isso antes de mim não disse uma única palavra sobre isso. Impresso. Eu logo percebi o porquê. Steve Jobs provavelmente está girando no túmulo, olhando para uma interface semelhante:

imagem

Em uma linha, a lógica dos "pássaros" é positiva (evento de elevação). Em outro ponto negativo (Não aumentar evento). Como "Somente criar eventos quando" funciona com um conjunto diferente de caixas de seleção, geralmente entendi apenas experimentalmente (e já esqueci).

No entanto, uma característica muito pior do NetIQ foi sua fragilidade. O agente dela, instalado em cada servidor, era significativamente mais vulnerável que o próprio Windows. Memória insuficiente? Agente voou para fora. CPU 100%? O agente não está respondendo. 0 bytes restantes no disco - o que você acha? Para enviar uma mensagem, o agente deve primeiro criá-la no disco, como um arquivo ... Bem, você entende.

No entanto, eles de alguma forma viveram com ele até que a empresa foi comprada pela empresa ainda mais. Quando um monstro come uma pequena empresa, ela se dissolve como uma gota no mar. No nosso caso, nós próprios, pelos padrões de TI, éramos apenas um pouco menos do que aqueles que nos compraram, e ficou imediatamente óbvio que o processo de fusão seria muito difícil. Tão complicado que por algum tempo não fomos tocados e internamente todos os processos permaneceram os mesmos. Esse estado era semelhante ao momento em que o Anel da Onipotência caiu sobre a lava, mas ainda não começou a derreter:


Enquanto isso, atualizei o NetIQ da versão 7 para 8 e depois para 9, quando nossos problemas começaram. O NetIQ monitorou apenas algumas coisas: a disponibilidade do próprio servidor, memória, CPU, disco e, o mais importante - serviços. Se nossos serviços auto-escritos estivessem em Automático, eles deveriam ter funcionado. Isso não deve ser assim:


Esses eventos na maioria dos casos e pararam de monitorar o NetIQ. Após uma semana de experimentos e uma semana de trabalho com suporte, descobrimos que “isso não é um bug, é um recurso” e que um alerta é gerado apenas com um determinado código de saída. E nossos serviços às vezes caíam com quaisquer códigos.

Muito tempo passou e era tarde demais para reverter. Como você entende, tendo descoberto que nossa infraestrutura crítica não está sendo monitorada, imediatamente ... uh ... nada fizemos. Porque a essa altura, a “dissolução” de nossa empresa em grande parte havia entrado na fase ativa, e parecia algo como isto:


Distantes trovões, gritos, raios chegaram até mim e parecia que o destino do mundo estava sendo decidido, e eu estava subindo com algum tipo de pequeno problema técnico ... Mas não consegui dormir em paz, sabendo que nosso monitoramento era meio cego.

Percebendo que não havia lugar para esperar por ajuda, decidi escrever rapidamente um scanner de serviço que ignoraria todos os servidores e enviaria um e-mail se algo não fosse o NetIQ. Você provavelmente acha que eu usei o Powershell? Não. Se você tem um martelo nas mãos, tudo está pronto, e se você estiver usando o DBA e trabalhando com o SQL desde a versão 6.0, então ... Um pequeno trecho do código para que você possa entender do que se trata:


Eu fiz isso em algumas horas. Nos dias seguintes, houve uma auditoria de mensagens, parâmetros e outros itens. Depois de ler sobre o comando WMIC, não consegui parar. Depois, algumas semanas em um nevoeiro. Acordei quando tudo o que usamos no NetIQ foi reescrito e funcionou com um estrondo.

A funcionalidade não foi apenas copiada - eu realizei todas as minhas fantasias, tudo o que eu gostaria desse sistema. LOWDISK - você também obtém um gráfico de como o espaço livre no disco se comportou recentemente - se esse crescimento é normal ou se algo deu errado. Não há memória suficiente - esse é o cronograma, a lista de processos e quanto eles levam, e para o w3wp.exe concluiremos o nome do pool de aplicativos, lembretes inteligentes e muito mais. A propósito, o sistema pode pegar a lista de servidores por conta própria da VMware. Uma rápida olhada em assuntos de alertas no telefone foi suficiente para entender o que estava acontecendo:


Os programadores modernos estão tão acostumados a pensar abstratamente que não podem escrever um sistema de monitoramento diferente de 'para o servidor, executamos um conjunto de scripts de monitoramento abstratos e não nos importamos com o que está dentro', enquanto monitora cada estado - disco, memória, CPU, serviços - à sua maneira são únicos. Percebendo isso "abstratamente", você está se saindo mal para cada caso, e é o que acontece: (Esta é uma captura de tela do email do SCOM. Certamente feito estritamente de acordo com o ToR)


Uma grande vantagem do novo sistema foi o fato de ele não ter agente, respectivamente, não houve problemas com a instalação do agente, suas falhas - simplesmente não havia nada para cair por lá. O sistema era simples e confiável como um martelo.

Nos meses seguintes, vim trabalhar de manhã, fiquei na frente da minha ideia, como um artista na frente de uma tela, e apliquei algumas pinceladas, tornando-a ainda mais ideal. Como não tinha prazos, a dívida técnica foi minimizada. Em algum momento, eu ainda me forcei a parar.

O NetIQ ainda funcionava, mas todo mundo gostava mais do novo tipo de alerta e, gradualmente, transferi todos para o novo sistema, sem desativar o antigo. Enquanto isso, o processo de "fusão" entrou em seu estágio final:


Bem, o conto de fadas deveria terminar. Eu próprio fiquei surpreso por me divertir tanto em uma grande empresa burocrática. Após um mês de preparação, eles me disseram que, em uma semana, extinguimos o NetIQ e mudamos para o SCOM. Desliguei o NetIQ (admito, odiei tanto que fiquei muito satisfeito) e comecei a esperar pelo SCOM. Mas na hora marcada ele não estava lá. Não depois de uma semana e depois de um mês.

O SCOM apareceu apenas seis meses depois - alguém esqueceu quantos servidores temos e quantas licenças precisamos para o SCOM. Em seis meses, muitos sistemas começaram a depender do meu sistema, que começou a manter estoques, métricas e muito mais, que silenciosamente continuavam em segundo lugar - não-oficiais. Para os auditores, existe o SCOM, e tudo realmente útil está no segundo sistema.

Às vezes, gerentes de diferentes níveis se perguntavam - de onde vêm esses emails automatizados? Recentemente, descrevi em detalhes para eles a história que expus neste artigo, e eles riram alegremente. Embora às vezes ainda seja muito engraçado para mim, como em uma grande empresa burocrática você pode "arrastar um olhar silencioso" muitas coisas. Sim, e é bom escrever o código, como nos velhos tempos.

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


All Articles