WikiPlus

Analisar logs de servidor com regex — filtros e extração de dados

Logs de servidor são uma fonte valiosa de informações para diagnóstico de problemas, análise de desempenho e detecção de anomalias. Um servidor web de médio porte pode gerar gigabytes de logs por dia, tornando impossível a análise manual. Expressões regulares são a ferramenta fundamental para filtrar, extrair e transformar essa massa de dados em informações acionáveis. O Testador de Regex da WikiPlus, com seu processamento 100% local no navegador, permite desenvolver e refinar padrões de análise de logs sem expor dados sensíveis de infraestrutura a serviços externos.

Estrutura dos logs Apache e Nginx

O formato de log Combined do Apache (também usado pelo Nginx) segue o padrão: IP - usuário [data/hora] "método URL protocolo" status tamanho "referrer" "user-agent". Um exemplo real: 192.168.1.1 - - [12/May/2026:10:23:45 +0000] "GET /api/users HTTP/1.1" 200 1234 "https://site.com" "Mozilla/5.0...". Para fazer o parse completo desta linha, uma regex com grupos nomeados é ideal: ^(?<ip>\d+\.\d+\.\d+\.\d+) - (?<user>\S+) \[(?<datetime>[^\]]+)\] "(?<method>\w+) (?<url>\S+) (?<protocol>[^"]+)" (?<status>\d+) (?<size>\d+). Cole uma amostra dos seus logs no Testador de Regex da WikiPlus e refine o padrão até capturar corretamente todos os campos.

Filtrando erros e códigos de status HTTP

A análise mais comum em logs é filtrar por código de status HTTP para identificar erros. Para encontrar todas as linhas com erro 500 (Internal Server Error): .+" 500 .+. Para capturar todos os erros 4xx e 5xx: .+" [45]\d{2} .+. Para encontrar apenas erros 404 em URLs de API: .+"(GET|POST) /api/[^"]+" 404.+. Para calcular a frequência de cada código de status, você precisa extrair apenas o código: (?<=")(\d{3})(?= \d+"). O processamento de logs em lote geralmente usa ferramentas de linha de comando: grep -P '.+ 500 .+' access.log para filtrar, e awk ou Python para agregar e contar. Desenvolva os padrões no Testador de Regex com amostras representativas dos seus logs antes de aplicar em produção.

Detectando ataques e comportamentos suspeitos

Logs de servidor também são essenciais para segurança. Padrões comuns de ataques detectáveis por regex: Tentativas de SQL injection nas URLs: .+\?.*('|--|;|UNION|SELECT|DROP|INSERT).+" (note: analise com cuidado para evitar falsos positivos). Tentativas de path traversal: .+(\.\./){2,}.+". Scanning de diretórios (muitos 404s do mesmo IP): detectar via agregação — extraia IPs de todas as linhas 404 e conte frequência. Força bruta em login (muitas requisições POST para /login do mesmo IP): (\d+\.\d+\.\d+\.\d+).+POST /login.+. Bots não identificados: .+"-" "-"$ para requisições sem referrer e sem user-agent. Para análise de segurança, combine regex com ferramentas como fail2ban que aplicam regex para banir IPs automaticamente.

Scripts Python para análise automatizada de logs

Para análise sistemática de logs, scripts Python combinando regex com agregação são muito eficientes. Exemplo de script para contar acessos por código de status: import re, collections; padrao = re.compile(r'" (\d{3}) '); contagem = collections.Counter(padrao.search(linha).group(1) for linha in open('access.log') if padrao.search(linha)). Para identificar as 10 URLs mais acessadas: padrao_url = re.compile(r'"\w+ (\S+) HTTP'); urls = (padrao_url.search(l).group(1) for l in open('access.log') if padrao_url.search(l)); print(collections.Counter(urls).most_common(10)). Para análise de logs de múltiplos servidores, use a mesma regex em todos os arquivos iterando com glob.glob('logs/*.log'). Valide sempre seus padrões regex no Testador de Regex da WikiPlus com amostras de cada servidor antes de rodar em produção.

Perguntas frequentes

Como analisar logs muito grandes (vários GB) com regex de forma eficiente?
Para logs grandes, processe linha a linha sem carregar o arquivo inteiro na memória. Em Python: use 'for linha in open(arquivo)' que lê uma linha por vez. Compile as regex antes do loop (re.compile) para evitar recompilação a cada linha. Para análise em tempo real, ferramentas como Logstash ou Fluentd aplicam regex continuamente em streams de log.
O Testador de Regex da WikiPlus pode processar amostras de logs com dados sensíveis?
Sim, com segurança. Todo o processamento ocorre localmente no seu navegador — nenhum dado é enviado para servidores externos. Isso o torna ideal para desenvolver regex com amostras reais de logs que podem conter IPs internos, URLs de API privadas ou outros dados sensíveis de infraestrutura.
Como usar regex para analisar logs de aplicações Node.js ou Python (não Apache)?
Aplicações modernas geralmente usam logs JSON estruturados (via winston, pino, logging). Para esses casos, regex pode ser usada para extrair campos específicos ou filtrar por padrões dentro dos valores JSON, mas o parsing completo é melhor feito com JSON.parse() ou json.loads() e depois filtrar os campos programaticamente.