Módulo 11 · Engenharia de Software · Aula 15

Métricas e Telemetria
em ETLs

Instrumentar o pipeline para que o defeito seja descoberto pela equipe de dados antes de ser descoberto pelo negócio, com indicadores, objetivos declarados e detecção de anomalia sobre a própria série de execuções.

Atualidade Volume SLI e SLO Anomalia

Computação 1 · Prof. Afonso Brandão · 21/09/2026

ExecuçãoDuração, volume, status, erro
evento
IndicadorAtualidade, completude, qualidade, custo
medida
ObjetivoLimite declarado e orçamento de erro
contrato
AlertaSintoma percebido pelo consumidor
ação

Continuidade · das Aulas 12 e 13 para a Aula 15

O pipeline funciona, e agora precisa dizer quando parou de funcionar

A extração e a transformação foram construídas com testes e replay. Esta aula trata de como a equipe descobre o defeito antes que o número errado chegue à reunião de fechamento.

Aula 10Armazenamento
Aula 12Coleta e extração
Aula 13Transformação e carga
Aula 15Métricas e telemetria
Aula 16Interface analítica
O pipeline que falha de forma visível é operacionalmente melhor que o pipeline que entrega número incorreto em silêncio. A falha ruidosa interrompe a carga; a incorreta silenciosa alimenta a decisão.

Roteiro · 120 minutos · uma hora de exposição, uma hora de prática

A primeira hora estabelece o critério, e a segunda instrumenta o pipeline em sala

A segunda hora é atividade em grupo: transformar a tabela de controle em painel de telemetria, declarar objetivos e detectar uma anomalia injetada.

1ª hora · Bloco 01
20 min

O que medir

As quatro dimensões do pipeline e a diferença entre métrica técnica e de negócio.

1ª hora · Bloco 02
22 min

Instrumentação

Métrica, log e linhagem; indicador, objetivo e orçamento de erro.

1ª hora · Bloco 03
18 min

Alerta e diagnóstico

Alertar por sintoma, detectar anomalia e conduzir o diagnóstico pelo grafo.

2ª hora · Atividade
60 min

Card de trabalho

Painel de telemetria e detecção de uma anomalia injetada pelo professor.

Objetivo: definir indicadores e objetivos de nível de serviço para um pipeline, e provar a escolha detectando uma falha silenciosa antes que ela altere o relatório.

Bloco 1 · O que medir

Quatro dimensões respondem se o dado publicado merece confiança

A execução bem-sucedida informa apenas que o processo terminou. As quatro dimensões informam se o resultado é utilizável.

Atualidade 2,4 h

Distância entre o instante do fato na origem e o instante em que ele fica consultável no destino.

Completude 99,7 %

Proporção do que a origem tem e o destino recebeu, medida por reconciliação de contagem e de soma.

Qualidade 0,08 %

Taxa de registros rejeitados pelos testes, com o motivo classificado e a série acompanhada ao longo do tempo.

Custo R$ 41 /carga

Bytes varridos e tempo de processamento por execução, atribuídos ao domínio responsável.

A dimensão que costuma faltar: a atualidade. O painel que mostra o número correto de ontem, sem indicar que ele é de ontem, produz decisão errada com dado tecnicamente íntegro.
Monitorar apenas a conclusão da tarefa. A execução termina com status de sucesso quando processa um arquivo vazio, e o painel passa a exibir zero como se fosse o resultado do dia.

Bloco 1 · Dois públicos

A métrica técnica indica a causa, e a métrica de negócio indica a gravidade

As duas são necessárias, e servem a decisões distintas. Confundi-las produz alerta que ninguém sabe priorizar.

PerguntaMétrica técnicaMétrica de negócioQuem age
O dado está atual?Atraso da marca d'água em horasData do último pedido visível no painelEngenharia decide reprocessar
Está completo?Linhas carregadas por execuçãoReceita do dia contra a média das quatro semanasNegócio decide se apresenta
Está correto?Registros rejeitados por motivoPedidos sem categoria atribuídaGovernança decide a regra
Está caro?Bytes varridos por execuçãoCusto por relatório publicadoProduto decide a frequência
O alerta que chega ao negócio precisa ser formulado na coluna do negócio. A queda de 30% na receita do dia mobiliza; a variação do volume de linhas em uma tarefa, isoladamente, não é acionável por quem decide.

Bloco 2 · Instrumentação

Três sinais respondem a perguntas diferentes sobre a mesma execução

Coletar os três custa espaço e disciplina. Coletar apenas um deles reduz o diagnóstico a suposição.

Métrica

quanto, e como variou

Valor numérico agregado por janela: duração, linhas, bytes, rejeitados. Barata de guardar e adequada para série histórica, alerta e comparação com o comportamento habitual.

Limite: não explica por que o valor mudou.

Registro de execução

o que aconteceu, em que ordem

Evento datado com contexto: lote, parâmetros, erro, quantidade rejeitada e onde os rejeitados foram gravados. É a tabela de controle da Aula 12, agora consultada como série.

Limite: cresce rápido e exige política de retenção.

Linhagem

o que mais foi afetado

Grafo de dependência entre tabelas e cargas. Responde quais painéis consomem a tabela defeituosa e quais precisam ser reprocessados depois da correção.

Limite: só é confiável quando gerada, e não mantida à mão.

A métrica dispara o alerta, o registro de execução localiza a causa e a linhagem determina o alcance. O incidente sem linhagem termina com a pergunta que ninguém sabe responder: quais relatórios usaram esse dado?

Bloco 2 · Objetivo declarado

O indicador vira compromisso quando ganha um limite e uma consequência

Sem limite declarado, toda variação é discutível e nenhuma é acionável.

Indicador · SLI

O que se mede

Proporção de cargas diárias concluídas com atraso da marca d'água inferior a três horas, medida sobre a tabela de execuções.

Objetivo · SLO

O limite aceito

Ao menos 98% das cargas do mês dentro do limite. O número é acordado com quem consome, e não definido apenas pela engenharia.

Orçamento de erro

A consequência

Os 2% restantes são a margem disponível. Consumida a margem, a prioridade passa da entrega de novas fontes para a estabilização do que existe.

O objetivo bem escolhido tem um número que alguém sente falta quando não é cumprido. Se ninguém reclama ao ser descumprido, o indicador não mede o que importa.
Objetivo de 100% é declaração de que nenhuma falha é aceitável, e o custo de sustentá-lo cresce sem limite. O orçamento de erro existe para tornar essa escolha explícita.

Bloco 2 · Custo da própria telemetria

A telemetria é um pipeline, e está sujeita às mesmas restrições

Retomada da cardinalidade discutida na Aula 10, agora aplicada aos rótulos das métricas.

-- rótulo de cardinalidade controlada: agregável metrica: linhas_carregadas rotulos: {tabela, camada, status} -- dezenas de séries distintas -- rótulo de alta cardinalidade: uma série por execução metrica: linhas_carregadas rotulos: {tabela, camada, status, batch_id, order_id} -- milhões de séries, e nenhuma delas comparável
Regra

O rótulo serve para agrupar, e o registro para identificar

Identificador único pertence ao registro de execução, e não ao rótulo da métrica. A métrica existe para comparar séries ao longo do tempo, o que exige que o mesmo rótulo se repita entre execuções.

Retenção

Granularidade decrescente com a idade

Detalhe por execução nos últimos dias, agregação horária nas semanas seguintes e diária no histórico longo. É a política de ciclo de vida da Aula 10 aplicada à própria observabilidade.

Instrumentar sem política de retenção. O acervo de telemetria supera o do dado analisado, e o custo de observar passa a competir com o custo de produzir.

Bloco 3 · Anomalia

A comparação com o comportamento habitual detecta o que o limite fixo não alcança

O volume diário varia por sazonalidade. O limite fixo produz alerta falso na segunda-feira e silêncio no dia em que metade dos registros não chega.

duas semanas de cargas diárias · linhas carregadascinza: fim de semana · vermelho: anomalia detectada
Referência móvel

Compare com o mesmo dia da semana

A média das últimas quatro ocorrências do mesmo dia da semana absorve a sazonalidade semanal. O desvio relevante é o que ultrapassa a variação habitual dessa série, e não um percentual fixo.

Assimetria

Queda e alta têm gravidades distintas

A queda de volume costuma indicar carga incompleta, e a alta costuma indicar duplicação. As duas merecem alerta, com limites e destinatários próprios.

Alertar por variação percentual fixa sobre o dia anterior. A segunda-feira dispara alerta toda semana, o time aprende a ignorá-lo e o alerta real chega junto com os falsos.

Bloco 3 · Alerta

O alerta se justifica pelo sintoma que alguém percebe, e não pela causa técnica

Alertar por causa produz um alerta por modo de falha conhecido, e nenhum para o modo ainda desconhecido.

Alerta por causaAlerta por sintomaPor que o segundo é preferível
A tarefa de extração falhouOs pedidos estão desatualizados há mais de três horasCobre também a tarefa que concluiu com sucesso sem trazer dado
A conexão com a origem expirouA completude do dia está abaixo de 99%Cobre perda parcial, que a falha de conexão não produz
O teste de unicidade reprovouA receita do dia diverge da origem acima da tolerânciaTraduz o defeito técnico no efeito que o negócio observa
Todo alerta precisa de um procedimento correspondente: o que verificar, como corrigir e quem decide comunicar ao consumidor. Alerta sem procedimento vira ruído em duas semanas.
Alerta que não exige ação humana deve ser removido ou automatizado. O volume de alertas ignorados é, ele próprio, um indicador da saúde da operação.

Segunda hora · Card de trabalho em sala

Três perguntas sobre um pipeline que falha em sala

Em grupo, sobre a tabela de execuções das Aulas 12 e 13: instrumentar, declarar objetivos e detectar a anomalia.

1

Quais são os quatro indicadores do pipeline?

Calcule atualidade, completude, qualidade e custo sobre a série, com uma consulta por indicador.

2

Qual limite o grupo declara, e por quê?

Defina um objetivo por indicador e justifique o número pelo efeito no consumidor.

3

Em quantas execuções a anomalia foi detectada?

O professor injeta uma falha silenciosa. Meça quantas cargas passaram até o alerta disparar.

10minSérie de execuções
15minQuatro indicadores
10minObjetivos
15minAnomalia injetada
10minAlerta e conclusão

Segunda hora · Preparação · 10 minutos

A tabela de controle vira série histórica de execuções

O laboratório reaproveita a tabela criada na Aula 12, agora com trinta dias de execuções simuladas para haver série sobre a qual medir.

-- gera 30 dias de execuções com variação semanal realista CREATE OR REPLACE TABLE ctl.execucao AS SELECT uuid() AS batch_id, 'pedido' AS tabela, d AS dia, d + INTERVAL 2 HOUR AS concluido_em, -- fim de semana carrega menos, e o resto varia em torno da base CASE WHEN dayofweek(d) IN (0,6) THEN 1200 ELSE 3000 END + CAST(random() * 300 AS INT) AS linhas_carregadas, CAST(random() * 4 AS INT) AS rejeitadas, 'concluido' AS status FROM generate_series(DATE '2026-08-22', DATE '2026-09-20', INTERVAL 1 DAY) t(d);
Verificação de partida: trinta linhas, com o volume dos sábados e domingos visivelmente abaixo dos dias úteis. A sazonalidade semanal precisa estar presente, porque é ela que torna o limite fixo inadequado.

Segunda hora · Indicadores · 15 minutos

Uma consulta por indicador, sobre a mesma série

Cada grupo escreve as quatro e registra o valor obtido, que servirá de base para os objetivos do passo seguinte.

-- 1. atualidade: atraso entre o fim da janela e a conclusão da carga SELECT dia, date_diff('minute', dia, concluido_em) / 60.0 AS atraso_h FROM ctl.execucao ORDER BY dia DESC; -- 2. completude: carregado contra a referência do mesmo dia da semana SELECT dia, linhas_carregadas, avg(linhas_carregadas) OVER (PARTITION BY dayofweek(dia) ORDER BY dia ROWS BETWEEN 4 PRECEDING AND 1 PRECEDING) AS referencia FROM ctl.execucao; -- 3. qualidade: taxa de rejeição por execução SELECT dia, 100.0 * rejeitadas / nullif(linhas_carregadas, 0) AS pct_rejeicao FROM ctl.execucao; -- 4. custo: bytes varridos por carga, do metadado do Parquet SELECT sum(total_compressed_size) AS bytes FROM parquet_metadata('s3://lakehouse/gold/fato_item_venda/**/*.parquet');
Atenção ao segundo: a referência exclui o dia corrente e usa apenas ocorrências anteriores do mesmo dia da semana. Incluir o próprio dia na média o torna incapaz de detectar a anomalia daquele dia.

Segunda hora · Objetivos · 10 minutos

Cada grupo declara quatro limites e justifica cada número

A justificativa é a parte avaliada. O número sem justificativa não é objetivo de serviço, e sim palpite registrado.

IndicadorObjetivo propostoJustificativa exigidaConsequência do descumprimento
Atualidade98% abaixo de 3 hA que horas o consumidor abre o painel, e o que ele decide com eleAviso de defasagem exibido no painel
CompletudeDesvio até 5% da referênciaQual variação já ocorreu por causa legítima nos últimos 30 diasPublicação suspensa até a conferência
QualidadeRejeição até 0,1%Quantos registros o negócio aceita perder sem alterar a decisãoRevisão da regra com a governança
CustoDentro do orçamento do domínioQual é o orçamento mensal e quantas cargas cabem neleRedução da frequência de carga
O teste da justificativa: se ninguém reclamaria ao ver o objetivo descumprido, o indicador não mede o que importa e precisa ser substituído.

Segunda hora · Anomalia · 15 minutos

A falha injetada não produz erro, e a carga conclui com sucesso

Execute o bloco abaixo e observe quantas execuções passam até o alerta do grupo disparar.

-- a origem passa a entregar 40% a menos, sem erro algum INSERT INTO ctl.execucao VALUES (uuid(), 'pedido', DATE '2026-09-21', TIMESTAMP '2026-09-21 02:00', 1780, 2, 'concluido'); -- a consulta de alerta do grupo precisa marcar esta linha WITH base AS ( SELECT dia, linhas_carregadas, avg(linhas_carregadas) OVER (PARTITION BY dayofweek(dia) ORDER BY dia ROWS BETWEEN 4 PRECEDING AND 1 PRECEDING) AS ref FROM ctl.execucao) SELECT dia, linhas_carregadas, CAST(ref AS INT) AS esperado, round(100.0 * (linhas_carregadas - ref) / ref, 1) AS desvio_pct FROM base WHERE abs(linhas_carregadas - ref) > 0.15 * ref;
O que observar

O status permanece concluído

Nenhum teste técnico reprova: a chave é única, os tipos estão corretos e não há nulo indevido. O único sinal disponível é a comparação com o comportamento habitual daquele dia da semana.

A medida do encontro

Desvio próximo de 40% abaixo da referência

Um limite de 15% detecta na primeira execução. Um limite de 50% deixa passar, e a divergência entra no relatório do dia sem nenhum registro de que algo ocorreu.

Registre também o caso oposto: com limite de 5%, quantos alertas falsos as trinta execuções anteriores teriam gerado? A resposta é o custo de sensibilidade excessiva.

Segunda hora · Conferência

Os valores de referência para conferir a telemetria

Números esperados em cada etapa, sobre a série de trinta execuções gerada no início do laboratório.

EtapaO que verificarReferência
Série geradaContagem e variação semanal30 execuções, com fins de semana perto de 1 200 linhas
AtualidadeAtraso mediano da cargaAproximadamente 2 horas em toda a série
Referência móvelMédia das quatro ocorrências anterioresPróxima de 3 150 em dia útil e de 1 350 no fim de semana
AnomaliaDesvio da execução injetadaCerca de 40% abaixo da referência do mesmo dia da semana
Limite de 15%Execuções marcadas na série inteiraSomente a injetada, sem alertas falsos
Limite de 5%Execuções marcadas na série inteiraVárias, o que demonstra o custo da sensibilidade excessiva
Os valores variam entre grupos porque a série é gerada com componente aleatório. O que se confere é a ordem de grandeza e a relação entre os limites, e não a igualdade dos números.

Segunda hora · Uso de IA · em paralelo

A IA escreve a consulta de alerta, e o grupo responde pelo limite

A escolha do limite é decisão de produto, e o assistente não dispõe do contexto de consumo necessário para tomá-la.

Prompt 1 · Indicadores

Traduzir dimensão em consulta

"A partir deste schema da tabela de execuções, escreva uma consulta por dimensão: atualidade, completude, qualidade e custo, cada uma devolvendo série diária."

Prompt 2 · Referência

Absorver a sazonalidade

"Escreva a referência móvel por dia da semana, excluindo o dia corrente da média, e explique por que a inclusão do próprio dia impediria a detecção."

Prompt 3 · Crítica

Procurar o alerta que não dispara

"Aponte quais modos de falha desta carga não seriam detectados por nenhum destes alertas, e o que precisaria ser medido para cobri-los."

✓

Confirme que a janela da média exclui a execução em avaliação.

✓

Execute o alerta contra a série inteira e conte os falsos positivos antes de adotá-lo.

✓

Registre o prompt junto da consulta, uma vez que ele integra o registro da decisão.

Ponte com a Aula 1 · Spec-Driven Development

Do tema à especificação executável

A decisão de observabilidade entra no projeto como requisito, decisão registrada e critério verificável.

RF-008

Requisito funcional

Registrar, para cada carga, atualidade, volume, taxa de rejeição e custo, com série consultável de noventa dias.

RNF-008

Requisito não funcional

98% das cargas diárias com atraso inferior a 3 h; desvio de volume acima de 15% da referência detectado na primeira execução; telemetria com retenção decrescente por idade.

ADR-OBS-01

Decisão de arquitetura

Alerta por sintoma observável pelo consumidor, em vez de alerta por falha de tarefa. Contexto: a carga que conclui sem trazer dado não gera falha. Consequência: exige referência histórica por dia da semana.

Cenário de aceite

Critério verificável

Dada uma carga que conclui com 40% menos linhas que a referência do mesmo dia da semana, quando a verificação de anomalia executa, então o alerta dispara e a publicação fica suspensa.

O objetivo de nível de serviço é acordo com quem consome, e não meta interna da engenharia. Sem essa negociação, o limite é escolhido pela facilidade de cumpri-lo.

Entrega do card de trabalho

Os quatro indicadores, os limites justificados e a anomalia detectada

O que o grupo entrega ao final da segunda hora, e o que será conferido.

Artefato

Painel de telemetria e o registro da detecção

As quatro consultas de indicador, a consulta de anomalia com o limite adotado, a justificativa de cada limite pelo efeito no consumidor e o número de alertas falsos que o limite produziria na série de trinta dias.

1

Os quatro indicadores estão calculados sobre a série, com valor medido.

2

A referência móvel exclui o dia em avaliação e respeita o dia da semana.

3

Cada limite é justificado pelo efeito no consumidor, e não pela facilidade.

4

A anomalia injetada foi detectada, com o desvio medido em percentual.

5

O número de alertas falsos do limite adotado está contado na série inteira.

6

Cada alerta tem procedimento correspondente e destinatário declarado.

Aula 15 · Síntese

A telemetria determina quanto tempo o número incorreto permanece publicado, e o limite declarado determina quem é avisado quando isso ocorre.

Google SRE — Service Level Objectives OpenTelemetry — Signals DuckDB — Window functions
Pergunta final: no pipeline do parceiro, quem seria avisado hoje se a carga de amanhã trouxesse metade dos registros?

Sobre este encontro

Métricas e Telemetria em ETLs · 21/09/2026 · Prof. Afonso

Objetivo de aprendizagem

Ao final do encontro, o estudante deve ser capaz de definir indicadores de atualidade, completude, qualidade e custo para um pipeline, declarar objetivos de nível de serviço justificados pelo efeito no consumidor e construir uma verificação de anomalia capaz de detectar carga incompleta que conclui sem erro.

Estratégia do encontro

Primeira hora de exposição dialogada em três blocos, cada um encerrado por checklist de aplicação e erro comum. Segunda hora de atividade em grupo: os estudantes convertem a tabela de controle das Aulas 12 e 13 em série de execuções, calculam os quatro indicadores, declaram um objetivo por indicador com justificativa e detectam uma anomalia injetada pelo professor, medindo também quantos alertas falsos o limite escolhido produziria.

Estrutura do encontro

  1. 1ª hora · Bloco 1 (20 min) — O que medir: atualidade, completude, qualidade e custo, e a distinção entre métrica técnica e métrica de negócio.
  2. 1ª hora · Bloco 2 (22 min) — Instrumentação: métrica, registro de execução e linhagem; indicador, objetivo e orçamento de erro; cardinalidade e retenção da própria telemetria.
  3. 1ª hora · Bloco 3 (18 min) — Alerta e diagnóstico: detecção de anomalia por referência móvel, alerta por sintoma em vez de causa e procedimento associado a cada alerta.
  4. 2ª hora · Card de trabalho (60 min) — Em grupo: série de execuções (10 min), quatro indicadores (15 min), objetivos declarados e justificados (10 min), anomalia injetada e detecção (15 min), alerta e conclusão escrita (10 min).