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.

Luiz Carlos Faria

Mensagem do Autor

Espero que goste desse post. Não deixe de comentar e falar o que achou. 

Se acha que esse post pode ajudar alguém que você conheça, compartilhe!

 

Eventos passados

novembro 2020
outubro 2020
setembro 2020
agosto 2020
Nenhum evento encontrado!
Carregar Mais

Publicidade

Assine

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.

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.

Agenda & Eventos

outubro

novembro 2020

dezembro
DOM
SEG
TER
QUA
QUI
SEX
SAB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
Events for 1st novembro
Sem Eventos
Events for 2nd novembro
Sem Eventos
Events for 3rd novembro
Sem Eventos
Events for 4th novembro
Sem Eventos
Events for 5th novembro
Sem Eventos
Events for 6th novembro
Sem Eventos
Events for 7th novembro
Sem Eventos
Events for 8th novembro
Sem Eventos
Events for 9th novembro
Sem Eventos
Events for 10th novembro
Sem Eventos
Events for 11th novembro
Sem Eventos
Events for 12th novembro
Events for 13th novembro
Sem Eventos
Events for 14th novembro
Sem Eventos
Events for 15th novembro
Sem Eventos
Events for 16th novembro
Sem Eventos
Events for 17th novembro
Sem Eventos
Events for 18th novembro
Sem Eventos
Events for 19th novembro
Sem Eventos
Events for 20th novembro
Sem Eventos
Events for 21st novembro
Sem Eventos
Events for 22nd novembro
Sem Eventos
Events for 23rd novembro
Sem Eventos
Events for 24th novembro
Sem Eventos
Events for 25th novembro
Sem Eventos
Events for 26th novembro
Sem Eventos
Events for 27th novembro
Sem Eventos
Events for 28th novembro
Sem Eventos
Events for 29th novembro
Sem Eventos
Events for 30th novembro
Sem Eventos
Share This