gg.GIUSEPPE
GAMBINO
Approfondimenti

Logpush Transformers: filtrare e ridurre i log prima di esportarli

Cloudflare rende disponibili i Logpush Transformers, un motore SQL integrato che permette di filtrare, mascherare e ristrutturare i log prima dell’esportazione, riducendo i costi di ingestione e la complessità dei SIEM.

Logpush Transformers: materiale tecnico ufficiale Cloudflare
Illustrazione ufficiale Cloudflare di Logpush Transformers: trasformazione dei log prima dell’esportazione.Cloudflare · immagine ufficialeFonte dell’immagine

Il problema del volume e della sicurezza dei dati

Le organizzazioni che esportano log verso sistemi di gestione degli eventi e delle informazioni di sicurezza (SIEM), piattaforme di analisi o storage a oggetti si trovano spesso a gestire un volume di dati sproporzionato rispetto all'utilità effettiva delle informazioni. Molti log contengono record ridondanti, come i controlli di integrità (health checks) o traffico interno, che non aggiungono valore all'analisi di sicurezza ma occupano spazio e risorse. Attualmente, per rimuovere questi elementi o per omettere campi sensibili, i team devono implementare, scalare e monitorare un servizio di elaborazione separato tra l'esportazione di Cloudflare e la destinazione finale. [1]

Questa architettura non solo aumenta la complessità operativa, ma incide direttamente sui costi. Poiché i team pagano per l'esportazione, l'ingestione e l'archiviazione di ogni record, trasferire dati che verranno scartati immediatamente dopo l'arrivo a destinazione rappresenta un'inefficienza economica. Spostare la logica di filtraggio a monte, direttamente nel flusso di esportazione, permette di ridurre il volume di dati a valle, abbattendo i costi di storage e l'onere di gestione dei dati non necessari. [1]

Logpush Transformers: materiale tecnico ufficiale Cloudflare
Illustrazione ufficiale Cloudflare di Logpush Transformers: trasformazione dei log prima dell’esportazione. Fonte: Cloudflare

Architettura tecnica: l'integrazione di DataFusion e Arrow

Per eliminare la necessità di servizi esterni, Cloudflare ha integrato un motore di trasformazione SQL direttamente all'interno di Bufstream, il servizio di consegna di Logpush che gestisce oltre 110 milioni di record al secondo. Inizialmente è stato valutato l'uso di WebAssembly tramite Cloudflare Workers, ma l'introduzione di una chiamata di rete avrebbe causato timeout transitori e latenze elevate, riducendo il throughput complessivo. La scelta è quindi ricaduta su Apache DataFusion, un motore di query scritto in Rust basato su Apache Arrow, che permette l'esecuzione in-process senza hop di rete. [1]

Il cuore tecnico del sistema risiede nella gestione del passaggio di dati tra il runtime Go di Bufstream e il motore Rust di DataFusion. Per evitare il costoso parsing riga per riga di formati come il JSON, viene utilizzato Arrow IPC (Inter-Process Communication), che permette di scambiare batch di dati in un formato colonnare tipizzato attraverso l'interfaccia FFI (Foreign Function Interface) e cgo. Questo approccio garantisce che DataFusion riceva i dati nel suo modello nativo, ottimizzando l'uso della CPU e mantenendo prestazioni prevedibili anche per i job ad alto volume. [1]

Nel benchmark sintetico riportato da Cloudflare, su batch di 5.000 righe risulta che l'esecuzione di un Transformer da una singola goroutine richiede circa 3 ms, il che equivale a una capacità di elaborazione di circa 1,6 milioni di righe al secondo. Per gestire i job di dimensioni massicce, Bufstream implementa un parallelismo per job, consentendo l'esecuzione concorrente dei batch di trasformazione per distribuire il lavoro di trasformazione. [1]

I due numeri descrivono livelli diversi: i record al secondo dell’intero servizio Bufstream non sono il risultato del singolo Transformer nel benchmark citato. Non vanno sommati o usati come promessa di capacità per un proprio job. Una query, il contenuto delle righe e la dimensione dei batch cambiano il lavoro necessario; la misura utile per chi adotta la funzione sarà quella del proprio flusso.

La novità, in tre punti
Infografica · La novità, in tre punti. Fonti: [1] [2]
Leggi il contenuto dello schema

Sintesi dei fatti documentati nell’articolo. I riferimenti sono riportati sotto lo schema.

  • Punto 1 · Il problema del volume e della sicurezza dei dati: Le organizzazioni che esportano log verso sistemi di gestione degli eventi e delle informazioni di sicurezza (SIEM), piattaforme di analisi o storage a oggetti si trovano spesso a gestire un volume di dati sproporzionato rispetto…
  • Punto 2 · Architettura tecnica: l'integrazione di DataFusion e Arrow: Per eliminare la necessità di servizi esterni, Cloudflare ha integrato un motore di trasformazione SQL direttamente all'interno di Bufstream, il servizio di consegna di Logpush che gestisce oltre 110 milioni di record al secondo.
  • Punto 3 · Capacità SQL e manipolazione dei record: I Transformers operano tramite una singola query SQL applicata a ogni batch di record prima della consegna.

Capacità SQL e manipolazione dei record

I Transformers operano tramite una singola query SQL applicata a ogni batch di record prima della consegna. La clausola FROM deve corrispondere esattamente al dataset del job Logpush (ad esempio http_requests o audit_logs_v2), mentre la clausola WHERE definisce quali record devono essere mantenuti; i record che non soddisfano il predicato vengono scartati. L'output della SELECT diventa il nuovo record esportato in formato NDJSON. [2][1]

Il dialetto SQL supportato permette operazioni avanzate di rimodellamento. È possibile utilizzare la proiezione per rinominare campi tramite AS, creare nuovi campi calcolati, espandere array tramite UNNEST e accedere a oggetti JSON tramite l'operatore ->> (per stringhe) o -> (per oggetti). Per la creazione di strutture complesse, la funzione named_struct permette di costruire oggetti JSON annidati, mentre l'uso di parentesi quadre [value1, value2] genera array JSON. [2]

Sono inoltre disponibili funzioni scalari standard come UPPER, LOWER, COALESCE e CAST, oltre a funzioni temporali come to_timestamp ed extract per convertire i timestamp RFC3339 in formati Unix epoch. Tuttavia, sono esclusi i join, le subquery, le funzioni di aggregazione (GROUP BY, SUM, COUNT), le window functions e l'ordinamento (ORDER BY). [2]

Esempio illustrativo di implementazione

Per illustrare l'utilità pratica, consideriamo un caso in cui un'azienda voglia normalizzare i log HTTP per un'analisi multi-CDN, eliminando il rumore e proteggendo la privacy. L'obiettivo è scartare le richieste verso host interni (es. internal.example.com) e percorsi di monitoraggio (es. /healthz, /metrics), riducendo così il volume di dati inviati al SIEM. [1][2]

A livello di SELECT, la query potrebbe utilizzare regexp_replace per mascherare l'indirizzo IP del client (trasformando 203.0.113.42 in 203.0.XXX.XXX), aggiungere un campo statico 'provider' con valore 'cloudflare' e raggruppare host e path in un oggetto annidato chiamato 'request' tramite named_struct. Questo processo trasforma un record grezzo e potenzialmente sensibile in un dato normalizzato e sicuro, pronto per l'analisi senza richiedere ulteriori passaggi di pulizia a valle. [1]

Logpush Transformers: materiale tecnico ufficiale Cloudflare
Illustrazione ufficiale Cloudflare di Logpush Transformers: trasformazione dei log prima dell’esportazione. Fonte: Cloudflare

Configurazione, costi e compatibilità

I Transformers sono disponibili per tutti i piani: Free, Pro, Business ed Enterprise. Un requisito fondamentale è che il job Logpush utilizzi il formato di output NDJSON; i job in formato CSV non sono compatibili e non appaiono come target per l'associazione di un transformer. La gestione può avvenire tramite il Transformer Studio nel dashboard di Cloudflare o via API utilizzando un token con permessi Logs Write. [1][2]

Dal punto di vista economico, ogni account include una quota di 1 GB di input di trasformazione al mese; l'input eccedente viene fatturato a 0,04 USD per GB. È importante notare che un job Logpush non può avere contemporaneamente sia un transformer che dei filtri classici. Se si associa un transformer a un job già filtrato, il Transformer Studio può convertire il filtro esistente in un predicato SQL da inserire nella clausola WHERE, ma l'operazione via API richiede la rimozione manuale del filtro nello stesso request di aggiornamento per evitare l'errore 400. [2]

Limiti operativi e gestione degli errori

Esistono limiti tecnici rigorosi per prevenire l'instabilità del sistema: la dimensione della query SQL non può superare i 250 KB, il nome del transformer è limitato a 255 byte e la descrizione a 4.096 byte. Inoltre, non è consentito alcun tipo di accesso al filesystem o alla rete dall'interno delle query. Ogni query viene validata contro lo schema del dataset di riferimento prima del salvataggio; errori di sintassi o riferimenti a campi inesistenti vengono rifiutati immediatamente. [2]

In caso di errore durante l'esecuzione di un batch, il sistema adotta una politica di 'fail closed': il batch non viene consegnato per evitare che dati non filtrati o non mascherati raggiungano la destinazione, violando potenzialmente le policy di sicurezza. Bufstream tenta di rieseguire il batch con ritardi progressivi; se il fallimento persiste, i record vengono eventualmente scartati e non possono essere recuperati. Gli utenti possono monitorare lo stato delle trasformazioni e i volumi di dati nella vista Transformer Health o controllare il campo last_error del job. [1][2]

Dalla lettura all'azione

Da mettere in pratica

  • Assicurarsi che il job Logpush sia configurato in formato NDJSON, poiché i Transformers non supportano il formato CSV.
  • Convertire i filtri Logpush esistenti in clausole WHERE SQL per evitare la perdita di logica di filtraggio durante l'attivazione del Transformer.
  • Verificare che la clausola FROM della query SQL corrisponda esattamente al dataset associato al job Logpush.
  • Testare la query nel Transformer Studio utilizzando il tasto Run per validare l'output su record di esempio prima della produzione.
  • Monitorare il volume di input mensile per gestire i costi oltre il primo GB gratuito incluso.
  • Controllare regolarmente la sezione Transformer Health per identificare batch falliti e analizzare il campo last_error.

Fonti e riferimenti

  1. Logpush Transformers: annuncio e architetturaCloudflare · consultata il 12 ottobre 2026
  2. Logpush Transformers: configurazione e limitiCloudflare · consultata il 12 ottobre 2026
Hai trovato un'informazione da correggere? Segnala una correzione →

Ti è stato utile?

Valutazioni in caricamento…

Valuta questo articolo da 1 a 5 stelle

Valutazioni degli ultimi 180 giorni. Un voto per lettore e rete.

Parliamone

Hai un’esperienza da condividere o una domanda? Scrivi un commento pertinente, senza pubblicità o link.

Lascia un commento

Nome e messaggio saranno pubblici. Evita dati personali. Privacy dei commenti.