|
|
||
|---|---|---|
| src | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
| requirements.txt | ||
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.
(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
HTMLcom 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:
- 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-Agente a requisição HTTP. - Classificação de Ações: A função
get_action_detailsatua 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. - Visualização de Dados: Utilizando as bibliotecas
pandaspara manipulação de dados ematplotlib/seabornpara a geração de gráficos, o script cria as visualizações. Cada gráfico é salvo em memória como uma imagem. - 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.htmltotalmente 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_formatpara 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
-
Clone o Repositório
git clone [URL_DO_SEU_REPO_GITEA] cd relatorio-atividade-nginx -
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 -
Instale as Dependências
pip install -r requirements.txt -
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.csvSubstitua
/caminho/para/seu/nginx_logs.csvpelo caminho real do seu arquivo. -
Abra o Relatório Após a execução, um arquivo chamado
painel_de_atividade_final.htmlserá 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_CATEGORIESno início do scriptsrc/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_detailspode 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.