Android

Configurando o log de erro e acesso nginx

Logging | Nginx

Logging | Nginx

Índice:

Anonim

O Nginx é um servidor HTTP e de proxy reverso de código aberto e alto desempenho, responsável por lidar com a carga de alguns dos maiores sites da Internet. Ao gerenciar servidores da Web NGINX, uma das tarefas mais frequentes que você executa é a verificação dos arquivos de log.

Saber configurar e ler os logs é muito útil ao solucionar problemas de servidor ou aplicativo, pois eles fornecem informações detalhadas sobre depuração.

O Nginx grava registros de seus eventos em dois tipos de logs: logs de acesso e logs de erro. Os logs de acesso gravam informações sobre solicitações do cliente e os logs de erros gravam informações sobre os problemas do servidor e do aplicativo.

Este artigo descreve como configurar e ler os logs de acesso e erro do Nginx.

Configurando o log de acesso

Sempre que uma solicitação do cliente é processada, o Nginx gera um novo evento no log de acesso. Cada registro de evento contém um registro de data e hora e inclui várias informações sobre o cliente e o recurso solicitado. Os logs de acesso podem mostrar a localização dos visitantes, a página que eles visitam, quanto tempo eles gastam na página e muito mais.

A diretiva log_format permite definir o formato das mensagens registradas. A diretiva access_log ativa e define o local do arquivo de log e o formato usado.

A sintaxe mais básica da diretiva access_log é a seguinte:

access_log log_file log_format;

Onde log_file é o caminho completo para o arquivo de log e log_format é o formato usado pelo arquivo de log.

O log de acesso pode ser ativado no bloco de diretivas http , server ou location .

Por padrão, o log de acesso é ativado globalmente na diretiva http dentro do arquivo de configuração principal do Nginx.

/etc/nginx/nginx.conf

http {… access_log /var/log/nginx/access.log;… }

Para melhor manutenção, é recomendável definir um arquivo de log de acesso separado para cada bloco do servidor. A diretiva access_log configurada na diretiva do server substitui a diretiva configurada na diretiva http (nível superior).

/etc/nginx/conf.d/domain.com.conf

http {… access_log /var/log/nginx/access.log;… server { server_name domain.com access_log /var/log/nginx/domain.access.log;… } }

Se nenhum formato de log for especificado, o Nginx utilizará o formato combinado predefinido, semelhante a este:

log_format combined '$remote_addr - $remote_user ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

Para alterar o formato do registro, substitua a configuração padrão ou defina uma nova. Por exemplo, para definir um novo formato de log chamado main, que estenderá o formato combinado com o valor que mostra o cabeçalho X-Forwarded-For adicione a seguinte definição na diretiva http ou server :

log_format custom '$remote_addr - $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

Para usar o novo formato, especifique seu nome após o arquivo de log, como mostrado abaixo:

access_log /var/log/nginx/access.log custom;

Enquanto o log de acesso fornece informações muito úteis. ocupa espaço em disco e pode afetar o desempenho do servidor. Se seu servidor estiver com poucos recursos e você tiver um site ocupado, convém desativar o log de acesso. Para fazer isso, defina o valor da diretiva access_log como off :

access_log off;

Configurando o log de erros

O Nginx grava mensagens sobre o aplicativo e os erros gerais do servidor no arquivo de log de erros. Se você estiver enfrentando erros em seu aplicativo Web, o log de erros é o primeiro local a ser iniciado para solucionar problemas.

A diretiva error_log habilita e define o local e o nível de gravidade do log de erros. Ele assume o seguinte formato e pode ser definido em um bloco http , server ou location :

error_log log_file log_level

O parâmetro log_level define o nível de log. Abaixo estão os níveis listados por gravidade (de baixo para alto):

  • debug - Depurando mensagens. info - Mensagens informativas. notice - Avisos. warn - avisos. error - Erros ao processar uma solicitação. crit - Questões críticas. Requer uma ação imediata. alert - Alertas. A ação deve ser tomada imediatamente. emerg - situação de emergência. O sistema está em um estado inutilizável.

Cada nível de log inclui os níveis mais altos. Por exemplo, se você definir o nível de log como warn , o Nginx também registrará as mensagens de error , crit , alert e emerg .

Quando o parâmetro log_level não é especificado, o padrão é error .

Por padrão, a diretiva error_log é definida na diretiva http dentro do arquivo nginx.conf principal:

/etc/nginx/nginx.conf

http {… error_log /var/log/nginx/error.log;… }

Assim como nos logs de acesso, é recomendável definir um arquivo de log de erros separado para cada bloco do servidor, que substitui a configuração herdada dos níveis mais altos.

Por exemplo, para definir o log de erros do domínio.com para warn você usaria:

http {… error_log /var/log/nginx/error.log;… server { server_name domain.com error_log /var/log/nginx/domain.error.log warn;… } }

Sempre que você modifica o arquivo de configuração, é necessário reiniciar o serviço Nginx para que as alterações tenham efeito.

Local dos arquivos de log

Por padrão, na maioria das distribuições Linux, como Ubuntu, CentOS e Debian, os logs de acesso e erro estão localizados no diretório /var/log/nginx .

Lendo e compreendendo os arquivos de log do Nginx

Você pode abrir e analisar os arquivos de log usando comandos padrão como cat , less , grep , cut , awk e assim por diante.

Aqui está um exemplo de registro do arquivo de log de acesso que usa o formato de log Nginx combinado padrão:

192.168.33.1 - - "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

Vamos detalhar o que cada campo do registro significa:

  • $remote_addr - 192.168.33.1 - O endereço IP do cliente que está fazendo a solicitação. $remote_user - - - Usuário autenticado HTTP. Quando o nome do usuário não está definido, este campo mostra - . - - Hora do servidor local. "$request" - "GET / - O tipo, caminho e protocolo da solicitação. $status - 200 - O código de resposta do servidor. $body_bytes_sent - 396 - O tamanho da resposta do servidor em bytes. "$http_referer" - "-" - O URL da referência. "$http_user_agent" - Mozilla/5.0… - O agente do usuário do cliente (navegador da web).

Use o comando tail para assistir o arquivo de log em tempo real:

tail -f access.log

Conclusão

Os arquivos de log fornecem informações úteis sobre problemas do servidor e como os visitantes interagem com seu site.

O Nginx permite configurar os registros de acesso e erro de acordo com suas necessidades.

nginx