Vou dizer o que eu já vi acontecer, certo dia, certo serviço saiu do ar, o sysadmin recebeu um chamado com tag ‘ultra-mega-urgente-importante’ para resolver o problema para ontem, eis que o rapaz então abre o console e sai rasgando “ssh servidor-do-cliente -l sysadmin48″ para tentar resolver o problema o quanto antes, sabe como é, tem que manter a SLA (nessas horas eu me pergunto, cadê o tal do monitoramento, o cliente precisa avisar abrindo chamado?).
Pois então, o problema era que o sistema XPTO não estava funcionando, eis que o sysadmin então vai direto no sistema XPTO, mexe daqui, mexe dali, reinicia (/etc/init.d/xpto restart) mexe nas configurações (vim /etc/xpo/xpto.conf) altera dezenas de linhas, reinicia o serviço XPTO, olha o log e em completo desespero acende uma vela para Linus, Alan Cox, Ken Thompson, Dennis Ritchie e até para o TUX, e nada, o trem não funciona, ele não sai do lugar, derrepende começa a mandar aqueles e-mails para listas de discussão, pedindo socorro, urgente, aquele tipo de e-mail que não passa nem o OS que ele tá usando ou a versão do serviço XPTO, mas ainda assim quer ajuda, claro que recebe vários RTFM e links de netiqueta.
Nesse momento, passei por ali, por acaso e vi a pessoa arrancando cada fio do cabelo, dos quais não eram muitos, e enquanto isso o tal sysadmin já ia abrindo o currículo profissional no outro terminal, pelo jeito ele imaginava que seu tempo ali acabara, pois enfim encontrou um problema insolúvel, sentei ali com minha caneca de café forte e troquei uma idéia com o cara, sem saber do problema, perguntei se ele já havia feito algum checklist no sistema, o sysadmin surpreso disse que não, peguei um papel e escrevi o seguinte checklist para o sysadmin verificar antes de checar o serviço XPTO.
–
Checklist da infra-estrutura e do sistema operacional
00. Verificar conexão física no servidor
Cabos de rede estão conectados corretamente?
E os demais cabos?
01. Verificar interfaces de rede
Estão ativadas?
Estão configuradas corretamente, Ipv4/Ipv6, máscara?
02. Verificar rotas
As rotas para suas filiais ou redes externas estão configuradas?
Está com o gateway padrão configurado?
03. Verificar DNS
Existe o arquivo /etc/resolv.conf
Os servidores de nome estão configurados corretamente?
Consegue resposta ao comando: $ dig slashdot.org
04. Verificar logs
Verifique os arquivos:
-messages
-daemon
-syslog
-auth.log
-kernel.log
-user.log
Algo anormal?
05. Verificar saída do dmesg
Vê alguma mensagem anormal?
06. Verificar partições (mount)
Veifique o /etc/fstab
Todas as partições estão/foram montadas?
Nenhum erro de FS no DMESG?
07. Verificar espaço em disco com (df -h)
Alguma partição está com 100% de uso?
08. Verificar UPTIME/TOP/UNAME/PS
a carga do sistema está normal? (top)
o consumo de memória está normal? (top)
o consumo de cpu está normal? (top)
o uptime é recente, então máquina acabou de reiniciar? (top/uptime)
caso a máquina tenha reiniciado subiu o kernel correto? (uname)
algum processo estranho/anormal rodando? (ps)
09. Verificar WHO
Quem está conectado?
Caso alguém esteja conectado, está fazendo o que?
10. Verificar LAST
Quem conectou recentemente?
—
Dá para ir além, mas acho que tinha escrito estas 11 checagens, agora vamos ao desfecho.
O cara descobriu algumas coisas interessantes, primeiro a máquina tinha reiniciado recentemente, talvez um pique de luz que o nobreak não segurou [1]. Depois disto ele viu que a interface subiu com a mascara errada e por isto a filial não enxergava o sistema XPTO [2], o DNS estava errado [3] e por isto o serviço não carregava algumas RSS pois não resolvia as URL’s, ele checou que recentemente o usuário sysadmin22 conectou na máquina, após falar com o sysadmin22 ele admitiu ter mexido no /etc/resolv.conf, verificou também que o ponto de montagem NFS com arquivos essenciais para o serviço XPTO não foi montado automaticamente quando a máquina reiniciou [4], verificou que após montar a partição com arquivos essenciais, esta encontrava-se com 100% de espaço ocupado e por isto o sistema XPTO não aceitava upload’s [5] e por fim o DMESG acusou que a partição /home que usava sistema de arquivos ext3 estava emitindo alguns alertas [6].
Atitudes a serem tomadas após o checklist:
[1] Verificar nobreak em que este servidor está ligado, chamar manutenção
[2] Arrumar configuração estática da interface em /etc/network/interfaces
[3] Arrumar configuração do /etc/resolv.conf
[4] Arrumar configuração do /etc/fstab
[5] Expandir tamanho da partição LUN LVM ou mover arquivos antigos.
[6] Verificar partição com fsck e verificar integridade e estabilidade do disco.
E por fim o sistema XPTO não tinha nenhum problema, não era necessário mexer em nenhuma configuração, como ele foi mexido, bom ele acabou se tornando um novo problema, o sysadmin48 teve que desfazer as alterações que andou fazendo por conta dos testes de ‘tentativa-e-erro’.
Agora veja que um simples checklist a ser executado no início de cada manutenção ou análise pode lhe revelar muitos dos reais problemas de um serviço. Normalmente desviamos nossa atenção do básico e focamos no que roda com mais complexidade em um sistema ao invés de lembrarmos dos fundamentos de funcionamento do OS que utilizamos.
Este foi um cenário real, em que naturalmente foi mal instalado e mal configurado, pois todas as configurações estáticas estavam com problemas ou equivocadas, algo típico de um servidor que é instalado e colocado em produção sem testes e devido processo de homologação.
Veja que a maioria destes problemas, talvez mais de 98% deles, poderiam ser evitados com políticas administrativas bem delineadas na instalação e homologação do servidor, e se houver um monitoramento adequado o sysadmin saberá muito antes do cliente que aquele servidor demanda manutenção por questões de espaço em disco em uma de suas partições ou por alertas em relação ao sistema de arquivos de uma outra partição, sem falar em controle mudanças, controle de configurações, controle de incidentes e muito mais se formos focar na gestão como um todo.
Pensando nisto estou querendo criar o checklist para os sysadmins gnu/linux que estão começando a sua vida, que tal construirmos isto coletivamente?
Já dei 11 sugestões que funcionam na maioria dos casos, vamos aumentar e melhorar este checklist?
Aguardo sua sugestão.
[]‘s
Guto






ps aux, verificar se existem processos zumbis?
Boa @waltercruz, vamos colocar na lista ;)
Falou tanto do servidor … só faltou falar do serviço problemático…
O serviço está rodando ?
Olhou os logs do Serviço ?
telnet na porta do serviço sempre ajuda ;)
dependendo da tecnologia do serviço tem outras fontes de informação … alá jconsole em aplicações java :P
eu gosto da ideia de uma URL interna que verifica o servidor e suas caracteristicas para a aplicação para o qual ele foi configurado … acaba sendo uma forma rápida de se verificar o servidor .. mas nada que uma aplicação de monitoramento, devidamente configurada, não faça melhor
logs do banco de dados ??
conectividade com o banco de dados ???
configuração da velocidade das placas de rede ? ( já vi problemas com a auto-negociação de placas de rede )
e por ae vai :)
Mussi,
A idéia é essa mussi, checar o servidor antes do cara sair mexendo na aplicação achando que é lá o problema, as vezes perdendo tempo precioso, sugiro que seja feito um checklist preliminar, investindo este tempo para se ter um diagnóstico preciso da infra-estrutura que hospeda o serviço, por eliminação podemos saber se o problema é no OS ou na aplicação de fato.
E sim deve-se fazer um checklist para cada serviço de acordo com as características da aplicação, eu sou um tanto viciado em métodos organizacionais, faço checklist para tudo e sempre sigo a risca, se este checklist estiver documentado isso ajuda e muito a administração principalmente se outro sysadmin precisar mexer em algo que você implantou ou implementou.
Veja a metologia de trabalho que sugiro aos sysadmins jr.
Chega um chamado: serviço XPTO fora do ar.
1. Executar checklist A (checagens servidor/infra/os)
Aqui fazemos os 11 ou mais passos básicos.
2. Executar checklist B (checagens serviço XPTO e dependências)
Aqui fazemos as checagens que você sugeriu ou algo similar de
acordo com as características do serviço.
3. Fechar chamado colocar resolução na base de conhecimento
Fundamental
4. Atualizar controle de mudanças daquele servidor
caso algo tenha sido alterado.
Fundamental
5. Atualizar registro de incidentes, hora início/hora fim
Para medir disponibilidade para fins de SLA ;)
Seguindo isso a risca o cara não fica boiando e provavelmente vai resolver o chamado rapidamente.
Método é tudo ;)
[]‘s
Guto
Post obrigatório pra sysadmin n00b.
fi … os itens 3 e 4, principalmente em ambientes grandes são fundamentais .. pena que pouquissimas pessoas dão valor para eles :(
mais que tudo … a rotina em realizar essas ações é importante… o sysadmin n pode ver essas etapas como “perda de tempo” .. cois aque infelizmente a maioria acha :(
Cara, adorei, vou sempre levar comigo :D
De darthjee,
Bacana, se tiver alguma sugestão para melhorarmos o checklist é só falar.
[]‘s
Guto
De fato, acho que podemos falar de algumas ferramentas que possam suprir as necessidades deste tipo de gerenciamento.
Vamos fazer um post sobre GLPI/OCS/OTRS!?
E ai mussi, topa?
[]‘s
Guto
Mt bom!
Pingback: Blog do Márcio d’Ávila » Checklist: Diagnóstico de indisponibilidade no ambiente de serviços web