
Cloudflare, Logpush dışa aktarma hattına SQL Transformers ekledi
Cloudflare'in Logpush'ı, dışa aktarmadan önce logları SQL Transformers ile filtreler, hassas verileri gizler ve alanları değiştirir. Ekipler veri kümeleri için sorgular yazar ve saklı sürüme karşılık gelen NDJSON Logpush görevini bağlar.
Transformers ne yapar
Cloudflare, Logpush'i tüm planlarda kullanılabilir hale getirdi ve aynı dışa aktarma iş akışı için Transformers'ı genel olarak yayınladı. Gözlemlenebilirlik ekipleri artık logların SIEM'ler, analitik platformlar veya nesne depolaması için Logpush'tan çıkmadan önce kayıtları filtreleyebilir, hassas değerleri gizleyebilir ve alanları dönüştürebilir. Teslimattan önce filtreleme, sonraki veri hacmini ve maliyetleri azaltabilir çünkü ekiplerin düşürüldükten sonra silinecek kayıtları dışa aktarması, alması ve saklaması gerekmez.
Transformer, tek bir Logpush veri kümesi için yazılan bir SQL sorgusudur. Logpush, dışa aktarmadan önce bu sorguyu her partide çalıştırır, WHERE koşulunu karşılamayan kayıtları siler ve SELECT sonucunu dışa aktarılmış NDJSON kaydı olarak kullanır. Ekipler alan ekleyebilir, yeniden adlandırabilir, silebilir veya yerleştirebilir; arasından birden fazla CDN'den gelen kayıtları normalleştirmek için statik provider alanı ekleyebilirler.
Çalışma nasıl gerçekleşir
Kullanıcılar Transformers'ı Transformer Studio'da veya API aracılığıyla oluşturur, önizler ve yönetir, ardından saklı sürüme aynı veri kümesini kullanan uyumlu bir NDJSON Logpush görevi bağlar. Her güncelleme yeni bir sürüm oluşturur. Cloudflare SQL sorgusunu R2'de saklar, Bufstream ise çok katmanlı önbellek aracılığıyla alır, görevin zaman dilimi için yeniden kullanılabilir DataFusion mantıksal planını bir kez hazırlar ve aynı dilimin her Arrow partide yeniden kullanır.
Bufstream, Buftee'den sıkıştırılmış Cap'n Proto parçalarını alır, sıkıştırmayı açar, ilgili logları ayrıştırır ve yürütüme kadar türlendirilmiş Apache Arrow RecordBatch oluşturur. Apache DataFusion ve Arrow, DataFusion'ın zaten Cloudflare Basin'i işlediği için seçildi. Go servisi, C ABI üzerinden ortaya çıkarılan ve cgo ile çağrılan FFI sınırı üzerinden Arrow IPC arabelleklerini Rust motoruna aktarır. Go, giriş arabellek işaretçisini yalnızca cgo çağrıları için iletir, çıkış arabelleği Rust'a aittir ve Go bu sonucu Rust'un ayırmasını serbest bırakana kadar Go yönetimli belleğe kopyalar.
Teslimat, sağlık ve sorun giderme
Transformers, fail closed prensibiyle çalışacak şekilde tasarlanmıştır. Dönüştürme gerçekleşemezse, Bufstream ne görevin teslimat ofsetini ilerletir ne de dönüştürülmemiş parça gönderir, bunun yerine başarısız dönüştürmeleri yeniden dener. Yeniden denemeleri kademeli olarak geciktirir, hataları görevde kaydeder ve uzun süre başarısız durumda kalan görevleri sonlandırır. Transformer Health görünümü başarılı ve başarısız dönüştürmeleri, dönüştürme öncesi ve sonrası veri hacmini ve ayrıca dönüştürme süresini gösterir.
Yürütme sonrası Bufstream, Arrow sonucunu NDJSON'a dönüştürür, logları parçalar halinde gruplar ve gzip ile sıkıştırır, ardından yapılandırılmış hedefe yükler ve yükleme goroutine'lerini hedefin eşzamanlılık limitleri içinde düzenler. Şirket, daha geniş veri hattının saniyede bir milyardan fazla olayı işlediğini, Bufstream'in ise saniyede 110 milyondan fazla Logpush kaydı sunduğunu söyledi. Transformers, Free, Pro, Business ve Enterprise planlarında kullanılabilir.
Kaynaklar: The Cloudflare Blog
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.