Este tutorial lista algumas atividades de troubleshooting presentes no cotidiano da operação de servidores e ensina como atuar nessas situações. O tutorial se divide em duas partes: Linux e Windows.

A lei de Murphy, apesar de não possuir comprovação científica alguma, parece aplicar-se perfeitamente quando o contexto é a computação. Isso tanto é verdade que sistemas críticos são arquitetados para conviver com possíveis falhas e, por vezes, contam com redundância em vários níveis.

Em relação à operação de servidores e sistemas Web, conviver com as falhas é uma premissa, isso não é nenhuma novidade. No entanto, para que essa convivência seja saudável, há várias ferramentas que podem ajudá-lo a evitar tais erros, e outras que se propõem a ajudar nos testes, inspeções e soluções dos problemas.

Collapse: LogoLinux  

Para realizar testes, inspeções e solucionar problemas em servidores Linux, é preciso certa experiência, principalmente com a interface de linha de comandos (Command Line Interface – CLI). Em geral, a maneira mais rápida e eficiente de efetuar atividades de troubleshooting em servidores Linux envolve a utilização de ferramentas para o SHELL ou, até mesmo, scripts adaptados a finalidades específicas.

Veja algumas atividades disponíveis e suas respectivas ações. Os comandos e ações listados neste tutorial são compatíveis com Ubuntu e CentOS. O artigo vai mostrar eventuais diferenças entre a execução dos comandos nas duas distros. Em caso contrário, basta assumir que o funcionamento é o mesmo para ambos.

Navegue pelo índice

    Acessar o servidor

    Sem dúvidas, o primeiro passo para buscar a solução de problemas em seu servidor é acessá-lo. O problema pode, inclusive, ser este: servidor inacessível. Para fazer um teste simples de latência, podemos utilizar o protocolo ICMP por meio do comando ping.

    [sourcecode]
    # PING
    ping cproXYZ.publiccloud.com.br
    # Abaixo segue uma resposta de exemplo ao comando ping.
    PING cproXYZ.publiccloud.com.br (AAA.BBB.CCC.DDD): 56 data bytes
    64 bytes from AAA.BBB.CCC.DDD: icmp_seq=0 ttl=45 time=42.120 ms
    64 bytes from AAA.BBB.CCC.DDD: icmp_seq=1 ttl=45 time=25.453 ms
    64 bytes from AAA.BBB.CCC.DDD: icmp_seq=2 ttl=45 time=23.603 ms
    [/sourcecode]

    Para poder investigar problemas em seu servidor, será inevitável acessá-lo via SSH >> ssh usuario@cproXYZ.publiccloud.com.br

    Verificar logs

    Quando algo dá errado, se há um lugar para buscar alguma pista primeiro, é a área de arquivos de log. Em distribuições Linux estes arquivos ficam, em geral, na pasta /var/log.

    Para verificar, por exemplo, os logs de seu servidor Apache no Ubuntu, visualize os arquivos presentes na pasta/var/log/apache2/. O arquivo de erros é o /var/log/apache2/error.log. No CentOS os logs do Apache ficam em /var/log/httpd/ e o arquivo de erros é o /var/log/apache2/error_log. Veja alguns comandos bastante úteis para lidar com logs:

    [sourcecode]
    # Acompanhar em tempo real os logs de erros do Apache
    tail –f /var/log/apache2/error.log # Ubuntu
    tail -f /var/log/httpd/error_log # Centos
    # Visualizar últimas 15 entradas de erros nos logs do NGINX
    tail -n 15 /var/log/nginx/error.log # Ubuntu e CentOS
    # Abrir arquivo de logs de erros do sistema
    cat /var/log/syslog # Ubuntu
    cat /var/log/messages # CentOS
    [/sourcecode]

    Verificar se o servidor (Web, banco de dados, etc.) está em execução

    [sourcecode]
    # Status das conexões
    sudo netstat -plunt | grep apache2
    sudo netstat -tanpl | grep nginx
    sudo netstat -plunt | grep mysql
    [/sourcecode]

    Verificar sintaxe da configuração do servidor Web

    [sourcecode]
    # Verificar configuração do servidor Apache
    apache2ctl configtest
    # ou
    apachectl configtest
    # Verificar a configuração do servidor NGINX
    sudo nginx -t
    [/sourcecode]


    nc -z localhost 80 # testar acesso ao servidor Web local
    nc -z 216.58.219.142 80 # testar acesso a um servidor externo (Google)

    Verificar acesso

    [sourcecode]
    # Solicitar (e testar) acesso a uma determinada porta (e serviço relacionado)
    telnet localhost 11211 # busca acesso o memcached
    telnet localhost 80 # tenta acessar o servidor Web
    # Testar acesso a um determinado endereço e porta
    nc -z localhost 80 # testar acesso ao servidor Web local
    nc -z 216.58.219.142 80 # testar acesso a um servidor externo (Google)
    [/sourcecode]

    Informações de Hostname

    [sourcecode]
    hostname # verifica o hostname do servidor
    dnsdomainname # lista ou configura o domainname
    more /etc/hosts # verifica hosts configurados
    [/sourcecode]

    Permissões de arquivos

    Um dos conceitos mais importantes em sistemas operacionais Linux é o dos diferentes níveis de permissão de um arquivo.

    [sourcecode]
    # 0123456789
    # -rwxrw-r–
    # 0: tipo do arquivo, ‘-‘ indica um arquivo comum, ‘d’ um diretório
    # 123: permissões de ‘r’ leitura, ‘w’ escrita e ‘x’ execução para o dono do arquivo
    # 456: permissões de ‘r’ leitura, ‘w’ escrita e ‘x’ execução para o grupo do arquivo
    # 789: permissões de ‘r’ leitura, ‘w’ escrita e ‘x’ execução para todos usuários
    [/sourcecode]

    Muitas vezes, é preciso checar ou alterar as permissões de um arquivo ou diretório em seu servidor. Veja alguns comandos úteis:

    [sourcecode]
    # Verificar permissões da pasta e de seus arquivos
    ls -l /caminho/de/uma/pasta
    # Altera permissões recursivamente
    chmod -R 755 /caminho/de/uma/pasta
    # Alterar propriedade (_ownership_) recursivamente
    sudo chown -R user_owner:group_owner /caminho/de/uma/pasta
    [/sourcecode]

    Collapse: Windows

    Uma ferramenta bastante poderosa para auxiliá-lo a gerenciar servidores é o Windows PowerShell. Nos servidores Cloud Locaweb, esta ferramenta já vem instalada. Para testes, inspeções ou soluções de problemas em servidores Windows, este tutorial utiliza comandos executados via Powershell e acesso a ferramentas visuais.

    Acesso ao servidor

    Se o seu servidor é Windows, assim como no Linux, o primeiro passo é testar o acesso. Utilize o Powershell para fazer um teste simples de latência via protocolo ICMP por meio do comando ping.

    [sourcecode]
    # PING
    PS C:\Users\Administrator> ping cproXYZ.publiccloud.com.br
    # Abaixo segue uma resposta de exemplo ao comando ping do PowerShell.
    Pinging locaweb.com.br [AAA.BBB.CCC.DDD] with 32 bytes of data:
    Reply from AAA.BBB.CCC.DDD: bytes=32 time=2ms TTL=248
    Reply from AAA.BBB.CCC.DDD: bytes=32 time<1ms TTL=248
    Reply from AAA.BBB.CCC.DDD: bytes=32 time=2ms TTL=248
    Reply from AAA.BBB.CCC.DDD: bytes=32 time=2ms TTL=248
    Ping statistics for AAA.BBB.CCC.DDD:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 2ms, Average = 1ms
    [/sourcecode]

    Para poder investigar problemas em seu servidor Windows você deverá acessá-lo via Remote Desktop. Caso ainda não tenha cadastrado sua conexão, crie uma nova. Depois, verifique que o seu usuário aparecerá listado nas conexões adicionadas: Gerenciador de Servidor – Server Manager

    O Windows Server Manager é uma ferramenta que funciona como uma espécie de central de gerenciamento do seu servidor: você poderá acessar várias ferramentas que ajudarão bastante na busca e solução de problemas.

    Verificar logs

    A maneira mais rápida de verificar os logs do seu servidor é por meio da Visão Detalhada de Eventos (Event Detail View), disponível no Server Manager. Você pode utilizar diferentes filtros: severidade, período, fontes ou tipos de logs, que o ajudam para listar e analisar os eventos ocorridos em seu servidor.

    Outra ferramenta bastante poderosa para logs no Windows Server é o Log Parser, que oferece acesso universal a consultas de dados baseados em texto, como arquivos de log, arquivos XML e arquivos CSV, assim como as principais fontes de dados do sistema operacional Windows, como o Log de Eventos, o Registro, o sistema de arquivos e o Active Directory.

    Verificar serviços em execução

    Para analisar se seus serviços e aplicações estão sendo executados corretamente, você pode utilizar a Visão Detalhada de Serviços (Services Detail View).

    Outras ferramentas de gerenciamento

    O Windows possui diversas opções de aplicações para diagnóstico e para auxiliar o gerenciamento do sistema:

    • Windows Network Diagnostics
    • Troubleshooting item in Control Panel
    • Network tracing for DirectAccess
    • Windows Firewall tracing

    DEPOIS DE FECHAR COLLAPSE:

    Recomendações gerais

    Testar, inspecionar e solucionar problemas são, independente da plafaforma, atividades que fazem parte do dia-a-dia dos desenvolvedores e administradores de sistemas. É de extrema importância conhecer e possuir acesso as documentações de referência para troubleshooting da plafatorma utilizada.

    Para problemas simples e recorrentes, uma simples busca na internet descrevendo o tipo de problema enfrentado irá trazer resultados relevantes que podem ser a solução do seu problema. Paciência, detalhismo e metodismo são importantes para inspecionar e solucionar problemas. É importante também que se documente internamente as situações enfrentadas e as soluções encontradas para que futuramente o processo de solução seja facilmente executado.

    Outra recomendação bastante óbvia, mas que muitos deixam passar: evite repetir erros. Se você enfrentou problemas, por exemplo, com permissões de escrita em uma aplicação, fique mais atento a isso em outras aplicações.

    Busque a causa raiz dos problemas enfrentados. Ainda pegando como exemplo o problema com permissão de escrita, ao enfrentá-lo pela primeira vez, não deixe de inspecionar sua aplicação por outras possíveis situações de escrita que possam gerar problemas.

    Por fim, a regra geral é: utilize logs e aprenda a inspecioná-los. Construa sua aplicação de modo que esta mantenha logs dos eventos importantes e dos erros enfrentados.