5.6 KiB
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.htmlcom 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.htmlcom 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.htmlcom 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.pyeaudit-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 logaccess.logdo NGINX exportado em formato CSV, conforme olog_formatabaixo.
- Para os scripts
- 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):
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
-
Clone o Repositório
git clone [URL_DO_SEU_REPO_GITEA] cd [NOME_DO_REPOSITORIO] -
Crie e Ative um Ambiente Virtual (Recomendado)
python3 -m venv venv source venv/bin/activate -
Instale as Dependências Crie um arquivo
requirements.txtcom o seguinte conteúdo e depois execute o comandopip install.requirements.txt:pandas plotly py-zabbix matplotlib seaborn numpy scipyComando de instalação:
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:
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:
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:
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.