fbpx
Enterprise Application Log + Access Log NGINX
Publicado em: segunda-feira, 3 de ago de 2020

Embora esse tutorial trate detalhadamente de configurações do NGINX e LogStash, no lugar do NGINX você pode usar qualquer aplicação que produza log em textos e que seja possível manipular o formato dos logs.

Passo 1 – Escrever o log em formato JSON

Nesse passo vamos editar o arquivo de configuração para editar o formato do output do NGINX.

...

http {
   
    ...


    log_format  main  escape=json '{'
        ' "time": "$time_local",'
        ' "status": "$status",'                
        ' "http_x_real_ip": "$http_x_real_ip",'
        ' "realip_remote_addr": "$http_cf_connecting_ip",'
        ' "proxy_add_x_forwarded_for": "$proxy_add_x_forwarded_for",'
        ' "http_x_forwarded_for": "$http_x_forwarded_for",'        
        ' "remote_addr": "$remote_addr",'        
        ' "remote_user": "$remote_user",'
        ' "host": "$host",'
        ' "http_name":"$http_name",'
        ' "cookie_name":"$cookie_name",'
        ' "query_string":"$query_string",'
        ' "tcpinfo_rtt":"$tcpinfo_rtt",'
        ' "bytes_sent": $bytes_sent,'
        ' "body_bytes_sent": $body_bytes_sent,'
        ' "request_length": $request_length,'

        ' "http_x_assets_host": "$http_x_assets_host",'
        ' "request_body": "$request_body",'

        ' "request_time": $request_time,'
        ' "request": "$request", '        
        ' "http_header":"$http_header",'
        ' "http_referer": "$http_referer",'
        ' "http_user_agent": "$http_user_agent",'
        ' "remote_user": "$remote_user",'
        ' "server_name": "$server_name",'
        ' "http_range":"$http_range",'
        ' "connection":"$connection",'
        ' "connection_requests":"$connection_requests",'
        ' "upstream_addr":          "$upstream_addr",'
        ' "upstream_status":        "$upstream_status",'
        ' "upstream_header_time":   "$upstream_header_time",'
        ' "upstream_cache_status":  "$upstream_cache_status",'
        ' "upstream_connect_time":  "$upstream_connect_time",'
        ' "upstream_cookie_name":   "$upstream_cookie_name",'
        ' "upstream_response_time": "$upstream_response_time",'
        ' "msec": $msec'
        ' } ';

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

Atenção para o escape=json.

Passo 2 – Produzindo Log de acessos

Assegure-se de que o access log está sendo gravado e que essa linha não está comentada.

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

Passo 3 – Mapeando logs do container em um path do host

Seja pelo -v em um docker run, ou usando volumes no yaml do docker compose, uma vez que você sabe onde, no container seu log está sendo gravado, é hora de mapear um path no host para que seu container produza um log no host.

Passo 4 – Reconstruir os paths de log no LogStash

Um container não tem acesso irrestrito ao host, mas 2 containers podem compartilhar um espaço de disco e é isso que fazemos. Enquanto o container do NGINX produzirá um arquivo em um path do container, mapeado para um path no linux, do outro lado outro container, uma instância do LogStash fará o inverso para ler esse arquivo.

Dessa vez eu não fui criativo, eu usei os mesmos nomes para evitar confusão.

Passo 5 – Configurar o LogStash para ler o novo arquivo mapeado


input {
  rabbitmq {    
     ...
  } 
  file {   
    path => "/docker/EntryPoint/logs/*.log"
    codec =>"json"
  }

}

Isso é suficiente para começar a enviar esses logs para o elastic.

Conclusão

Esse tutorial apresenta 5 steps super simples de serem executados. Se você já tem o Enterprise Application Log e NGINX, unir os 2 é uma tarefa trivial.

Na medida que você conhece melhor Docker, e cada elemento do stack que está usando, é possível oferecer melhor monitoramento.

Abaixo tenho uma demonstração do que dá para fazer, é um dashboard do Kibana que uso para monitorar meu site.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

[docker de a a z]

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.