Testes, Inspeção e Solução de Problemas nos Servidores

De Wiki Locaweb
Ir para: navegação, pesquisa


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.


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.


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.


# 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


Para poder investigar problemas em seu servidor, será inevitável acessá-lo via SSH:

ssh usuario@cproXYZ.publiccloud.com.br


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:

# 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


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

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


Verificar sintaxe da configuração do servidor Web

# Verificar a configuração do servidor NGINX sudo nginx -t 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

# 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)


Informações de Hostname

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


Permissões de arquivos

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

# 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


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

# 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

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.


# 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


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



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.


Veja Também