Analisador de logs NGINX que transforma dados de acesso em um painel de atividade visual e interativo.
Go to file
João Pedro Toledo Goncalves d01ae7ec46 Initial commit: project structure and script setup 2025-10-17 22:33:20 -03:00
src Initial commit: project structure and script setup 2025-10-17 22:33:20 -03:00
.gitignore Initial commit: project structure and script setup 2025-10-17 22:33:20 -03:00
LICENSE Initial commit: project structure and script setup 2025-10-17 22:33:20 -03:00
README.md Initial commit: project structure and script setup 2025-10-17 22:33:20 -03:00
requirements.txt Initial commit: project structure and script setup 2025-10-17 22:33:20 -03:00

README.md

Painel de Atividade de Usuários NGINX

Este projeto contém um script Python avançado para processar logs de acesso do NGINX (em formato CSV), analisar a atividade de usuários autenticados e gerar um painel de visualização interativo em um único arquivo HTML.

A ferramenta foi projetada para extrair insights sobre como e quando os usuários interagem com um sistema web (como o Nextcloud), categorizando suas ações e apresentando os dados em gráficos claros e detalhados.

Placeholder para a imagem do relatório (Recomendação: Substitua esta imagem por um screenshot do relatório painel_de_atividade_final.html)


Funcionalidades Principais

  • Processamento de Logs: Lê arquivos de log NGINX em formato CSV, otimizado para lidar com grandes volumes de dados.
  • Inferência de Ações: Analisa User-Agent, método HTTP (GET, POST, PUT, etc.) e URI para categorizar a atividade do usuário em três níveis:
    • Ativo: Ações diretas com arquivos (edição, upload, download, exclusão).
    • Online: Atividade geral de navegação e checagens em segundo plano.
    • Outros: Sincronizações, interações com formulários e requisições não classificadas.
  • Visualizações Detalhadas: Gera múltiplos gráficos para análise:
    • Nuvem de Atividade: Um gráfico de dispersão que mostra a intensidade das atividades ao longo do tempo.
    • Heatmap Agregado: Mostra os padrões de atividade de todos os usuários por dia da semana e hora.
    • Heatmap por Colaborador: Gera um mapa de calor individual para cada usuário.
    • Timeline Diária: Gráficos de linha suavizados que detalham a intensidade de cada categoria de ação por hora para um usuário e dia específicos.
  • Painel Interativo: Produz um único arquivo HTML com filtros que permitem selecionar um colaborador específico e navegar entre sua visão agregada e a análise diária.

Como Funciona

O script opera em quatro etapas principais:

  1. Leitura e Parsing: Cada linha do arquivo de log CSV é lida. Uma função de parsing extrai informações cruciais como timestamp, username (extraído de cookies como nc_username), User-Agent e a requisição HTTP.
  2. Classificação de Ações: A função get_action_details atua como o cérebro da análise. Ela usa uma série de regras para determinar a ação do usuário e o tipo de cliente (Web ou App de sincronização) com base nos dados extraídos.
  3. Visualização de Dados: Utilizando as bibliotecas pandas para manipulação de dados e matplotlib/seaborn para a geração de gráficos, o script cria as visualizações. Cada gráfico é salvo em memória como uma imagem.
  4. Geração do Relatório: As imagens dos gráficos são codificadas em Base64 e embutidas diretamente em um template HTML. Este template também inclui JavaScript para criar os menus de filtro interativos, resultando em um arquivo painel_de_atividade_final.html totalmente funcional e portátil.

Pré-requisitos

  • Python 3.8+

  • Logs do NGINX em formato CSV: O script espera um formato específico. Veja um exemplo de diretiva log_format para NGINX que gera a saída compatível:

    log_format custom_csv escape=json
        '$time_iso8601,'
        '$remote_addr,'
        '"$http_user_agent",'
        '"$http_cookie",'
        '$status,'
        '$body_bytes_sent,'
        '$remote_user,'
        '$request_time,'
        '$upstream_response_time,'
        '"$request"';
    
    access_log /var/log/nginx/seu-site.access.log custom_csv;
    

Como Utilizar

  1. Clone o Repositório

    git clone [URL_DO_SEU_REPO_GITEA]
    cd relatorio-atividade-nginx
    
  2. Crie e Ative um Ambiente Virtual (Recomendado)

    # Para Linux/macOS
    python3 -m venv venv
    source venv/bin/activate
    
    # Para Windows
    python -m venv venv
    .\venv\Scripts\activate
    
  3. Instale as Dependências

    pip install -r requirements.txt
    
  4. Execute o Script O script precisa do caminho para o seu arquivo de log como argumento.

    python src/process_log.py /caminho/para/seu/nginx_logs.csv
    

    Substitua /caminho/para/seu/nginx_logs.csv pelo caminho real do seu arquivo.

  5. Abra o Relatório Após a execução, um arquivo chamado painel_de_atividade_final.html será criado no diretório raiz do projeto. Abra-o em qualquer navegador web para explorar o painel.


Customização

  • Categorias de Ação: Para ajustar as categorias ou adicionar novas, modifique o dicionário ACTION_CATEGORIES no início do script src/process_log.py.
  • Cores dos Gráficos: As cores para cada categoria podem ser alteradas no dicionário CATEGORY_COLORS.
  • Lógica de Inferência: A função get_action_details pode ser expandida com mais regras para identificar atividades específicas do seu sistema.

Licença

Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.