Checklist: Diagnóstico de indisponibilidade no ambiente de serviços web

Em mais de 16 anos trabalhando com o ambiente de aplicações e conteúdo web, boa parte deles atuando ou cooperando na administração, já vivenciei muitos problemas.

Em geral, nada é mais atordoante do que o surgimento (súbito ou intenso) de algum evento ou reclamação de indisponibilidade ou erro em um ou mais serviços ou recursos. Em um ambiente complexo como este, interpretar os sintomas, rastrear até a origem, identificar a(s) causa raiz do problema e obter uma solução é missão ampla e complexa.

Some-se o fato de, cada vez mais, o ambiente web estar sendo cenário de sistemas e serviços de missão crítica e operação ininterrupta 24×7. Ou seja, é uma estressante corrida contra o tempo.

Por isso, elaborei aqui um checklist procurando listar todos os elementos envolvidos neste complexo ecossistema, para orientar e facilitar o diagnóstico de indisponibilidades no ambiente de serviços web.

  1. Problemas e sintomas
    1. O quê: Caracterização dos problemas: quais serviços, em que situação
    2. Quando: Data ou período de início de problemas observados ou reportados
    3. Como: Cada problema identificado pode ser reproduzido sistematicamente, ocorreu uma única vez, ou é intermitente?
  2. Usuário
    1. Indisponibilidade ou problemas de configuração no acesso do usuário
    2. Desktop usuário infectado por malware
    3. Desktop usuário com problemas no navegador, no sistema operacional, instalação ou configuração de software
    4. Desktop usuário com gargalos ou problemas de processamento e desempenho de hardware (CPU, memória RAM, GPU, disco/armazenamento, rede), ou de configuração de driver, software ou sistema operacional
    5. Desktop usuário com falhas ou defeitos de hardware
    6. Robôs de busca e varredura com atividade excessiva
    7. Invasores, ataques e usos indevidos ou mal-intencionados
  3. Aplicação
    1. Defeitos (bugs, inadequações ou ineficiência) no código da aplicação, inclusive SQL (consultas, stored procedures) submetido ao banco de dados
    2. Serviços ou aplicações web implantados ou atualizados no período
    3. Configurações e testes realizados em produção ou desenvolvimento
    4. Mudanças no contexto/cenário operacional
  4. Infraestrutura de Software
    1. Gargalos de configuração ou picos de ocupação (slots, threads, ouvintes)
      1. Proxy ou web cache
      2. Servidor web
      3. Servidor de aplicação (Java EE, .NET, PHP etc.), CMS/ECM, SOA, ESB, BPM e outros servidores de middleware
      4. Servidor de banco de dados
      5. Outros serviços, recursos e mecanismos envolvidos (autenticação, transação, armazenamento etc.)
    2. Incompatibilidade e falhas – atualizações e patches no período
      1. Serviços proxy, web, aplicação, banco de dados, outros
      2. Sistema operacional
      3. Java VM, ferramentas, componentes e bibliotecas
  5. Infraestrutura de Hardware e Rede
    1. Hardware dos servidores – Gargalos ou falhas
      1. Uptime – tempo “no ar” desde o último desligamento
      2. E/S (I/O): discos, partições e storage em geral
      3. CPU: carga, multitarefa, deadlocks, temperatura
      4. Memória e cache
    2. Equipamentos e configurações de rede e conectividade
      1. Gargalos e falhas de hardware nos equipamentos de rede e conectividade
      2. Falhas (mau contato, encaixe, desgaste, ruptura etc.), interferência ou insuficiência em cabeamento, conectores e sinal sem-fio
      3. Ativação e configuração de interfaces, rotas e domínios de rede
      4. Mudanças e atualizações de configuração de switches, roteadores, hubs etc.
      5. Mudanças e atualizações de firewall, IDS e outros appliances de rede, conectividade e segurança
    3. Transmissão de dados e telecomunicações
      1. Falhas ou indisponibilidade nos canais (links) de comunicação de dados
      2. Gargalos no tráfego, volume ou QoS de dados
    4. Gerenciamento de energia e ambiente
      1. Falhas ou instabilidade no fornecimento ou rede de energia
      2. Falhas em no-breaks, estabilizadores ou geradores
      3. Falhas ou insuficiência na refrigeração
      4. Falhas ou incidentes na estrutura física do ambiente
      5. Invasores, ataques e ação ou mal-intencionada na segurança física do ambiente
  6. Provedores de serviços e recursos
    1. Mudanças ou alterações diversas ocorridas em provedores externos

Os itens de diagnóstico aqui listados são, em geral, apenas os elementos a serem verificados, sem entrar em detalhe de como fazer o diagnóstico, pois isso pode variar muito de um ambiente para outro.

Entre os recursos de diagnóstico, destaco dois, presentes na maioria dos sistemas ou componentes de tecnologia:

  • Arquivos de log/registro/histórico de mensagens/avisos/alertas/erros
  • Console, ambiente ou ferramenta de administração, monitoramento e controle

Como a lista é grande, priorize a análise e o diagnóstico dos elementos para os quais haja indício provável — em especial, evento, registro ou alta probabilidade de incidente, falha, ou alteração recente –, deixando os menos suspeitos para o final. Como costumo dizer: “Não procure chifre em cabeça de cavalo.”

Referências relacionadas: