Skip to content

PAV-126: [Observabilidade] Expor métricas completas do scraper, classificação e indexação - #311

Merged
Benevanio merged 2 commits into
masterfrom
develop
Oct 7, 2026
Merged

Benevanio merged 2 commits into
masterfrom
develop

Conversation

@hltav

@hltav hltav commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator

Release

Promove para produção as alterações da PAV-126 já aprovadas e mergeadas em develop.

Conteúdo

PAV-126 — Observabilidade completa do scraper, classificação e indexação.

Principais entregas:

  • observabilidade operacional completa do Jobs Processor;
  • métricas de execução, progresso e concorrência;
  • métricas de lock distribuído;
  • métricas de classificação;
  • métricas de persistência PostgreSQL;
  • métricas de indexação Valkey;
  • métricas de cache e busca;
  • endpoint administrativo de observabilidade;
  • disponibilidade parcial do snapshot operacional;
  • 14 recording rules;
  • 16 alertas;
  • normalização de labels e controle de cardinalidade;
  • melhorias nas métricas HTTP;
  • telemetria de rebuild e reconciliação;
  • documentação e configuração Prometheus atualizadas.

Validações realizadas

  • go test ./...
  • go test -race ./...
  • go vet ./...
  • 848 testes do backend aprovados
  • TypeScript validado
  • Swagger validado
  • Prometheus e regras validados com promtool
  • Docker Compose validado
  • git diff --check aprovado

Produção

Após o deploy, validar:

  • ciclo completo do scraper;
  • endpoint administrativo de observabilidade;
  • CPU e memória;
  • lock e progresso;
  • cardinalidade das métricas;
  • comportamento dos alertas;
  • latência de /jobs/search;
  • latência do endpoint administrativo;
  • integração do Alertmanager.

A meta de p95 < 500 ms deverá ser validada com carga representativa em produção/staging.

Origem

develop → master

PR de implementação:

PAV-126: [Observabilidade] Expor métricas completas do scraper, classificação e indexação (#310)

hltav and others added 2 commits October 7, 2026 15:49
…ificação e indexação (#310)

## Resumo

Implementa a PAV-126 adicionando observabilidade operacional completa
para o Jobs Processor e backend, cobrindo execução, concorrência, lock
distribuído, classificação, persistência, indexação, cache e métricas
HTTP.

A implementação preserva os contratos entregues pelas PAV-123, PAV-124 e
PAV-125 e evita duplicação de métricas já existentes.

## Principais mudanças

### Processor / Go

- adiciona métricas operacionais do pipeline;
- adiciona estado de execução e progresso;
- instrumenta concorrência global e por provider;
- instrumenta lock distribuído;
- adiciona métricas de classificação;
- adiciona métricas de persistência;
- adiciona métricas de indexação;
- adiciona métricas de rebuild e reconciliação;
- adiciona métricas de manutenção;
- normaliza labels de provider e tipos de erro;
- controla cardinalidade de métricas;
- mantém `runId`, `jobId`, títulos, URLs e outros dados de alta
cardinalidade fora das labels Prometheus;
- preserva PostgreSQL como fonte de verdade e Valkey como camada
derivada de índice/cache.

### Backend

- adiciona métricas operacionais de cache e busca;
- melhora métricas HTTP usando rotas normalizadas;
- evita labels com IDs ou caminhos dinâmicos;
- adiciona endpoint administrativo de observabilidade;
- adiciona suporte a disponibilidade parcial do snapshot operacional;
- adiciona timeout dedicado para consultas administrativas ao Processor;
- mantém o endpoint administrativo protegido pela estrutura existente de
autenticação/RBAC;
- documenta o contrato no Swagger reutilizando o schema Zod.

### Observabilidade

- adiciona 14 recording rules;
- adiciona 16 alertas;
- conecta recording rules e alert rules ao Prometheus;
- adiciona testes das regras;
- adiciona métricas e alertas para CPU, memória, lock, progresso, erros,
timeouts, persistência, indexação, reconciliação e latência;
- utiliza períodos sustentados para evitar alertas por picos curtos.

### Cache e indexação

- adiciona métricas de hit, miss, stale e error;
- instrumenta get, set e invalidation;
- diferencia corretamente resultados stale;
- registra invalidações por motivo controlado;
- mantém cache keys fora das labels Prometheus.

### Manutenção

- rebuild e reconciliação passam a gerar telemetria operacional;
- resumos de manutenção são persistidos em chaves fixas para continuarem
disponíveis após a execução do comando;
- telemetria não bloqueia persistência nem publicação do catálogo;
- nenhuma operação destrutiva global foi adicionada.

## Endpoint administrativo

Foi adicionado suporte a snapshot operacional administrativo para
consumo futuro pelo `front_admin`.

O endpoint:

- retorna estado atual da execução;
- expõe progresso;
- expõe lock;
- expõe concorrência;
- expõe recursos;
- expõe estado de indexação/manutenção;
- suporta disponibilidade parcial;
- possui timeout;
- não consulta Prometheus individualmente para montar o payload;
- não expõe secrets, tokens ou dados sensíveis.

Quando não existe execução ativa, o estado permanece compatível com
`idle`.

## Cardinalidade

A implementação evita labels com alta cardinalidade.

Não são utilizadas como labels:

- `runId`;
- `jobId`;
- URL;
- título da vaga;
- descrição;
- erro bruto;
- keyword livre;
- cache key completa;
- e-mail;
- user ID;
- company arbitrária.

São utilizados conjuntos controlados para:

- provider;
- family;
- source;
- status;
- stage;
- result;
- reason;
- error type;
- operation;
- route template.

## Validações executadas

### Go

- `go test ./...`
- `go test -race ./...`
- `go vet ./...`

### Backend

- 848 testes aprovados;
- TypeScript validado com `tsc --noEmit`;
- Swagger validado.

### Prometheus

- configuração validada com `promtool`;
- recording rules validadas;
- alert rules validadas;
- testes das regras aprovados.

### Projeto

- Docker Compose validado;
- `git diff --check` aprovado;
- working tree limpa antes do commit.

## Escopo

Alterações concentradas em:

- `scraper-go/**`
- `backend/**`
- `observability/**`
- `docker-compose*.yml`
- `.env.example`
- `SCRAPER.md`
- `BACKEND.md`
- `.gitignore`

Não houve alterações em:

- `frontend/**`
- `front_admin/**`
- `package-lock.json`

## Limitações e validação em staging/produção

Ainda é necessário validar em ambiente representativo:

- p95 de `/jobs/search`;
- p95 do endpoint administrativo;
- ciclo completo do cron;
- consumo de CPU;
- consumo de memória;
- cardinalidade total;
- custo de scrape;
- comportamento de alertas;
- entrega de notificações do Alertmanager.

A meta de p95 < 500 ms não é declarada como comprovada nesta PAV.

## Rollback

Em caso de problema:

- desabilitar recording rule ou alerta problemático;
- reverter a imagem da aplicação;
- preservar logs e séries para análise;
- evitar limpeza global de Valkey;
- remover métricas específicas apenas de forma controlada.

## Commit

`611cdd4 feat(PAV-126): adiciona observabilidade operacional completa`
@hltav
hltav requested a review from Benevanio as a code owner October 7, 2026 21:14
@Benevanio
Benevanio merged commit 2d92d8c into master Oct 7, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants