10 Setembro 2025
Frameworks orientadas por metadados no Microsoft Fabric: Logging com Eventhouse (Parte 2)
Dando continuidade ao artigo anterior sobre frameworks orientadas por metadados baseadas em YAML, vamos falar sobre o logging – a parte da framework que, muitas vezes, fica invisível até algo falhar. Na Parte 1, o YAML ajudou-nos a substituir tabelas de configuração por definições mais limpas e controladas por versão. Agora, o logging garante a visibilidade necessária para perceber o que está realmente a acontecer dentro dos pipelines do Fabric.
Porque sem registos adequados, resolver uma execução falhada é como tentar arranjar um carro às escuras – sabe-se que algo avariou, mas não há qualquer pista sobre onde está o problema.
Quando passámos a usar YAML para configurações, deixámos de armazenar metadados dos pipelines no warehouse ou em tabelas SQL para a configuração. Para o logging, optámos propositadamente pelo Eventhouse e a sua base de dados KQL.
Porquê? Porque o KQL foi feito exatamente para este tipo de trabalho:
É exatamente assim que o Azure Monitor e o Log Analytics funcionam, por isso usar KQL no Fabric para logging não é reinventar a roda – é adotar um padrão já comprovado dentro do ecossistema Fabric.
Dito isto, a abordagem com Eventhouse não é isenta de limitações. Em SKUs mais baixos do Fabric, já observámos uma limitação de desempenho sob concorrência moderada a elevada. Mecanismos de retry (como exponential backoff) ajudam, mas são apenas soluções paliativas e não uma resolução definitiva.
Embora tecnicamente os logs pudessem ser armazenados num Warehouse ou Lakehouse, na prática:
Mesmo que o volume de registos “não seja assim tão elevado”, a capacidade de gestão de concorrência do KQL e a sua API de escrita simples fazem dele a escolha mais prática.
Capturamos registos em dois níveis: execução de pipelines de ingestão e orquestração global.
Após cada pipeline de ingestão terminar, um passo genérico do pipeline chama uma atividade KQL que regista:
Um único notebook de orquestração lê/analisa o YAML, constrói o DAG e executa as tarefas.
Em vez de adicionar código de logging em cada notebook, usamos um notebook wrapper.
O wrapper escreve cada entrada de log no Eventhouse usando o Kusto Spark Connector.
Isto dá-nos registos granulares de ingestão dos pipelines e registos de tarefas consistentes e centralizados da camada de orquestração — tudo no Eventhouse, para análise e resolução de problemas.
O logging não é apenas uma funcionalidade secundária; é a espinha dorsal de pipelines fiáveis.
Ao escolhermos o Eventhouse, alinhamos com os pontos fortes do Fabric — KQL para ingestão, análise e consultas de séries temporais — mantendo o registo de pipelines e notebooks consistente.
Outros motores também podem ser considerados, dependendo das necessidades:
Para a maioria dos cenários, o Eventhouse continua a ser a escolha natural: ingestão escalável, visibilidade em tempo real e análise de séries temporais integrada — exatamente o que o registo operacional exige.
Na próxima parte deste artigo, vamos explorar como foram configurados os pipelines de DevOps para deployment do YAML no Fabric, incluindo controlo de versões, promoção de ambientes e fluxos de aprovação.