nextcloud-activity-report/README.md

142 lines
5.6 KiB
Markdown

# Suíte de Análise de Logs para Zabbix e NGINX
Este repositório contém uma suíte de scripts Python para análise avançada de logs de aplicações web. As ferramentas extraem dados de fontes como Zabbix e arquivos CSV do NGINX para gerar relatórios interativos em HTML, oferecendo insights sobre performance do sistema, auditoria de acesso de usuários e categorização de atividades.
---
## As Ferramentas
A suíte é composta por três scripts principais, cada um com um objetivo específico:
### 1. `performance-insights.py` (O Analista de Performance)
Este script conecta-se à API do Zabbix para analisar a saúde técnica e a performance do sistema.
* **O que faz?** Mede a velocidade das respostas do servidor e identifica a frequência e o tipo de erros HTTP.
* **Responde a perguntas como:**
* "Qual o tempo médio de resposta do sistema?"
* "Quantas requisições foram rápidas, aceitáveis ou lentas?"
* "Quais páginas ou arquivos estão gerando mais erros 404 (Não Encontrado)?"
* **Resultado:** Gera um relatório chamado `relatorio_insights_AAAA-MM-DD.html` com gráficos de pizza sobre a velocidade e status das requisições, além de tabelas com os principais erros.
### 2. `audit-logins.py` (O Auditor de Acesso)
Este script também utiliza a API do Zabbix, mas com foco em auditar o comportamento e o tempo de atividade dos usuários.
* **O que faz?** Identifica sessões de trabalho, calculando o início, o fim e a duração total da atividade de cada usuário em um dia.
* **Responde a perguntas como:**
* "Quais usuários acessaram o sistema hoje?"
* "A que horas cada pessoa começou e terminou de trabalhar?"
* "Quanto tempo cada um ficou efetivamente online?"
* **Resultado:** Gera um relatório chamado `relatorio_acesso_AAAA-MM-DD.html` com uma linha do tempo interativa (gráfico de Gantt) e uma tabela que resume o tempo de serviço de cada colaborador.
### 3. `relatorio-de-atividade.py` (O Categorizador de Ações)
Diferente dos outros, este script analisa um **arquivo de log NGINX em formato CSV** para classificar os *tipos* de interação do usuário com o sistema.
* **O que faz?** Categoriza cada ação do usuário como "Ativa" (edição, upload), "Online" (navegação) ou "Outras" (sincronização em segundo plano).
* **Responde a perguntas como:**
* "Qual o perfil de uso de cada colaborador? Ele passa mais tempo editando arquivos ou apenas navegando?"
* "Quais os horários de pico para atividades produtivas (uploads, edições)?"
* **Resultado:** Gera um relatório único chamado `painel_de_atividade_final.html` com heatmaps de atividade, nuvens de ações e timelines detalhadas por tipo de ação.
---
## Pré-requisitos
* **Python 3.8+**
* **Fonte de Logs:**
* Para os scripts `performance-insights.py` e `audit-logins.py`: Acesso à API do Zabbix com um item que colete os logs da aplicação em formato JSON.
* Para o script `relatorio-de-atividade.py`: Um arquivo de log `access.log` do NGINX exportado em formato CSV, conforme o `log_format` abaixo.
* **Dependências Python:** Todas as bibliotecas necessárias estão no arquivo `requirements.txt`.
#### Exemplo de `log_format` para `relatorio-de-atividade.py`
Adicione este formato à sua configuração do NGINX (`nginx.conf`):
```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;
```
---
## Instalação
1. **Clone o Repositório**
```bash
git clone [URL_DO_SEU_REPO_GITEA]
cd [NOME_DO_REPOSITORIO]
```
2. **Crie e Ative um Ambiente Virtual (Recomendado)**
```bash
python3 -m venv venv
source venv/bin/activate
```
3. **Instale as Dependências**
Crie um arquivo `requirements.txt` com o seguinte conteúdo e depois execute o comando `pip install`.
**`requirements.txt`:**
```
pandas
plotly
py-zabbix
matplotlib
seaborn
numpy
scipy
```
**Comando de instalação:**
```bash
pip install -r requirements.txt
```
---
## Como Utilizar
A execução varia dependendo do script que você deseja usar.
#### Para os Scripts de Zabbix (`performance-insights.py` e `audit-logins.py`)
Ambos os scripts compartilham os mesmos parâmetros de linha de comando para se conectar ao Zabbix.
**Argumentos:**
* `--server`: URL completa do seu servidor Zabbix.
* `--token`: Token da API do Zabbix para autenticação.
* `--host`: Nome do host no Zabbix (o nome técnico, não o visível).
* `--item`: Nome do item que contém os logs.
* `--dias`: (Opcional) Número de dias para analisar (padrão: 1, ou seja, o dia anterior).
**Exemplo de execução para Performance:**
```bash
python src/performance-insights.py --server "[https://zabbix.suaempresa.com.br/](https://zabbix.suaempresa.com.br/)" --token "seu_token_aqui" --host "nome_do_host" --item "nome_do_item_de_log" --dias 7
```
**Exemplo de execução para Auditoria de Acesso:**
```bash
python src/audit-logins.py --server "[https://zabbix.suaempresa.com.br/](https://zabbix.suaempresa.com.br/)" --token "seu_token_aqui" --host "nome_do_host" --item "nome_do_item_de_log"
```
#### Para o Script de Análise NGINX (`relatorio-de-atividade.py`)
Este script requer apenas o caminho para o arquivo de log em formato CSV.
**Exemplo de execução:**
```bash
python src/relatorio-de-atividade.py /caminho/para/seu/nginx_logs.csv
```
---
## Licença
Este projeto está licenciado sob a Licença MIT. Veja o arquivo `LICENSE` para mais detalhes.