# 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](https://via.placeholder.com/800x450.png?text=Insira+um+screenshot+do+relatório+aqui) *(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: ```nginx 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** ```bash git clone [URL_DO_SEU_REPO_GITEA] cd relatorio-atividade-nginx ``` 2. **Crie e Ative um Ambiente Virtual (Recomendado)** ```bash # 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** ```bash pip install -r requirements.txt ``` 4. **Execute o Script** O script precisa do caminho para o seu arquivo de log como argumento. ```bash 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](LICENSE) para mais detalhes.