Workers Observability
Worker loglarını, request trace’lerini ve error rate’i harici araç kurmadan gösterir.
- DurumGenel kullanımda
- FiyatLog hacmi üzerinden; ücretsiz planda sınırlı saklama
- Ücretsiz katmanvar
- Doğrulama
Workers Observability nedir?
Bir Worker yayına girdikten sonra ne olduğunu görmek gerekir: hangi istekler hata veriyor, CPU nerede harcanıyor, hangi kullanıcı hangi kod yolundan geçti.
Klasik çözüm harici bir APM aracı kurmaktır — SDK entegre et, agent yükle, ayrı bir abonelik öde. Workers Observability bunu Cloudflare’in içine taşır: tek satır yapılandırmayla loglar ve metrikler panelde birikmeye başlar.
{ "observability": { "enabled": true } }
Nasıl çalışır?
Üç katman
| Katman | Ne verir | Ne zaman kullanılır |
|---|---|---|
wrangler tail | Canlı log akışı | Geliştirme, acil hata ayıklama |
| Workers Logs | Saklanan, aranabilir kayıtlar | Geçmişe dönük inceleme |
| Logpush | Harici hedefe aktarım (R2, S3, SIEM) | Uzun süreli saklama, uyarı kurma |
Yapılandırılmış log
Bu, gözlemlenebilirlikten gerçekten fayda görmenin ön koşuludur.
// Zayıf — aranabilir ama gruplanamaz
console.log("kullanıcı bulunamadı");
// İyi — alan bazında filtrelenebilir ve gruplanabilir
console.log(JSON.stringify({
olay: "kullanici_bulunamadi",
kullaniciId,
istekId: request.headers.get("cf-ray"),
yol: new URL(request.url).pathname,
}));
cf-ray başlığı her isteğe Cloudflare tarafından verilen benzersiz kimliktir; loglarında bunu
taşımak bir isteğin tüm izini birleştirmeni sağlar.
Ne zaman kullanılır, ne zaman kullanılmaz
Uygun olduğu işler
- Worker’larının hata oranını ve CPU dağılımını izlemek
- Üretimde bir hatanın hangi istekte oluştuğunu bulmak
- Workers for Platforms’ta müşteri Worker’larını tek yerden izlemek
- Logları bir SIEM veya APM aracına aktarmak
Uygun olmadığı işler
- Pages projeleri. Workers Logs, Logpush, Tail Workers ve Source Maps Pages’te desteklenmiyor.
- Log koşullarına dayalı uyarı. Böyle bir özellik bulunamadı; Logpush ile dışa aktarıp uyarıyı orada kur.
- Uzun süreli saklama. Saklama süresi kısadır; arşiv için Logpush gerekir.
- Dağıtık trace (birden çok servis arası). Bu ürün Worker’a odaklıdır; uçtan uca dağıtık izleme için harici bir araç gerekir.
Somut örnekler
1. Seviye bazlı loglama
const SEVIYE = { hata: 0, uyari: 1, bilgi: 2, ayiklama: 3 };
const AKTIF = SEVIYE.bilgi; // üretimde ayiklama'yı kapat
function log(seviye, olay, alanlar = {}) {
if (SEVIYE[seviye] > AKTIF) return; // CPU harcamadan çık
console.log(JSON.stringify({ seviye, olay, ...alanlar, ts: Date.now() }));
}
export default {
async fetch(request, env) {
const istekId = request.headers.get("cf-ray");
try {
const yanit = await isle(request, env);
log("bilgi", "istek_tamam", { istekId, durum: yanit.status });
return yanit;
} catch (h) {
log("hata", "istek_hata", { istekId, mesaj: h.message, yigin: h.stack });
return new Response("Sunucu hatası", { status: 500 });
}
},
};
2. Örnekleme ile log hacmini kontrol etme
Yüksek trafikte her isteği loglamak hem pahalı hem gereksizdir.
export default {
async fetch(request, env) {
const istekId = request.headers.get("cf-ray");
// Başarılı isteklerin yalnızca %1'ini logla
const orneklendi = Math.random() < 0.01;
try {
const yanit = await isle(request, env);
if (orneklendi) {
console.log(JSON.stringify({ olay: "ornek", istekId, durum: yanit.status }));
}
return yanit;
} catch (h) {
// Hatalar HER ZAMAN loglanır — örneklemeye tabi değil
console.log(JSON.stringify({ olay: "hata", istekId, mesaj: h.message }));
throw h;
}
},
};
3. Bir isteğin tüm izini birleştirme
export default {
async fetch(request, env) {
const istekId = request.headers.get("cf-ray");
// Alt servislere aynı kimliği taşı
const yanit = await fetch("https://ic-api.sirket.com/veri", {
headers: { "x-istek-id": istekId },
});
console.log(JSON.stringify({
olay: "alt_istek",
istekId,
hedef: "ic-api",
durum: yanit.status,
sure: Date.now() - baslangic,
}));
return yanit;
},
};
4. Büyük nesneleri loglamamak
// YANLIŞ — 256 KB bayt bütçesini hızla doldurur
console.log(JSON.stringify({ olay: "veri", tumKayitlar }));
// DOĞRU — özet logla, ayrıntıyı sakla
console.log(JSON.stringify({
olay: "veri",
kayitSayisi: tumKayitlar.length,
ilkAnahtar: tumKayitlar[0]?.id,
boyutKb: Math.round(JSON.stringify(tumKayitlar).length / 1024),
}));
Demo 1: Observability açma ve hata ayıklama
Adım 1 — Tek satırla aç
{
"name": "uygulamam",
"main": "src/index.ts",
"compatibility_date": "2026-08-31",
"observability": { "enabled": true }
}
Adım 2 — Yapılandırılmış log yaz ve panelde gör
Adım 3 — Kasten hata üret ve izini sür
Adım 4 — Metrikleri incele
Adım 5 — wrangler tail ile canlı izle
npx wrangler tail --format pretty
Demo 2: Log hacmi ve dışa aktarım
Adım 1 — Her isteği loglayan sürümü çalıştır
Adım 2 — %1 örneklemeye geç
Adım 3 — 256 KB bütçesini test et
Büyük bir nesneyi olduğu gibi loglamayı dene.
Adım 4 — Logpush ile dışa aktar
Ölçüm
| Ölçüt | Örneklemesiz | %1 örnekleme |
|---|---|---|
| Saatlik log kaydı sayısı | — | — |
| Log CPU maliyeti | — | — |
| Hata kaydı kaybı | — | 0 (hatalar her zaman loglanır) |
| Saklama süresi | — | — |
Fiyatlandırma
Workers Logs, Workers planına dahildir ve log hacmi üzerinden ücretlendirilir. Saklama süresi plana bağlıdır ve ücretsiz planda kısadır — container logları için resmî rakamlar ücretsizde 3 gün, ücretlide 7 gün.
Logpush ile dışa aktarım ayrı bir kalemdir: cloudflare.com/plans sayfasında milyon istek
başına 0,05 USD olarak görünüyor.
Lisanslama ve hukuki çerçeve
Workers Observability tescilli bir hizmettir; Cloudflare Hizmet Şartları kapsamındadır.
Loglarda kişisel veri. Bu, en sık gözden kaçan risktir. Loglara yazdığın her şey Cloudflare’de saklanır. IP adresi, e-posta, kullanıcı kimliği, istek gövdesi — bunlar kişisel veri olabilir ve loglama yoluyla farkında olmadan işlenmiş olur.
Pratik öneriler:
- Kullanıcı tanımlayıcılarını hash’leyerek logla
- İstek gövdesini asla olduğu gibi loglama
- Saklama süresini ihtiyacın kadar tut
- KVKK açısından log kayıtlarını da veri envanterine dahil et
Sık yapılan hatalar
Düz metin loglamak. Yapılandırılmış JSON yazmadan alan bazında filtreleme yapamazsın.
Her isteği ayrıntılı loglamak. Hem fatura hem CPU şişer. Örnekleme kullan, hataları örneklemenin dışında tut.
Büyük nesneleri olduğu gibi loglamak. 256 KB bayt bütçesini doldurur.
İstek kimliği taşımamak. cf-ray başlığını loglarına ve alt isteklerine taşımazsan bir
isteğin izini birleştiremezsin.
Loglara kişisel veri yazmak. IP, e-posta ve istek gövdesi kişisel veri olabilir.
Source map yüklememek. TypeScript kullanıyorsan hata yığınları minified kod satırları gösterir.
Uyarı özelliği olduğunu varsaymak. Log koşullarına dayalı uyarı bulunamadı; Logpush ile dışa aktarıp uyarıyı orada kur.
Pages projesinde beklemek. Workers Logs, Logpush, Tail Workers ve Source Maps Pages’te yok.
Sıkça sorulan sorular
- Nasıl açılır?
- Tek satır.
wrangler.jsonciçine"observability": { "enabled": true }ekleyip deploy etmek yeterli. Ayrı bir servis kurmak, agent yüklemek veya SDK entegre etmek gerekmez — bu ürünün en güçlü yanı budur. - Harici APM araçlarının yerine geçiyor mu?
- Hayır, ve bunu doğru anlatmak önemli. Cloudflare bu ürünü bir yerine geçen olarak konumlandırmıyor; dokümantasyonda Datadog, New Relic ve Sentry'ye dışa aktarım anlatılıyor. Doğru çerçeve şu: birinci taraf bir alternatif ve aynı zamanda bir dışa aktarım kaynağı. Kurumsal bir APM yığının varsa onu değiştirmene gerek yok.
- Loglar ne kadar saklanıyor?
- Saklama süresi plana bağlıdır ve ücretsiz planda kısadır. Container logları için resmî rakam: ücretsizde 3 gün, ücretlide 7 gün. Uzun süreli saklama gerekiyorsa Logpush ile kendi depona (R2, S3, SIEM) aktarman gerekir.
- console.log yeterli mi, yapılandırılmış log mu yazmalıyım?
- Yapılandırılmış log yaz.
console.log("kullanıcı bulunamadı")yerineconsole.log(JSON.stringify({ olay: "kullanici_bulunamadi", kullaniciId, istekId }))yazarsan panelde alan bazında filtreleyip arayabilirsin. Düz metin loglar aranabilir ama gruplanamaz. - Log yazmanın bir maliyeti var mı?
- Evet — hem fatura hem CPU açısından. Her istekte ayrıntılı log yazmak log hacmini ve dolayısıyla maliyeti artırır. Ayrıca
JSON.stringifyCPU süresi tüketir. Üretimde seviye bazlı loglama yapmak (hata her zaman, bilgi seyrek, hata ayıklama kapalı) hem faturayı hem CPU'yu korur. - Bir istek başına kaç log kaydı yazabilirim?
- Yayımlanmış bir kayıt sayısı sınırı bulunamadı; belgelenen sınır 256 KB'lık bayt bütçesi. Yani çok sayıda küçük kayıt yerine bu bütçeyi aşmamaya dikkat et. Büyük nesneleri olduğu gibi loglamak bu bütçeyi hızla doldurur.
- Workers for Platforms kullanıyorum, müşteri Worker'larının loglarını görebilir miyim?
- Evet, ve otomatik. Resmî ifade: “Enabling logging on your dispatch Worker collects logs for both the dispatch Worker and for any user Workers in the dispatch namespace.” GraphQL analitiğinde
workersInvocationsAdaptiveüzerindedispatchNamespaceNameboyutuyla filtreleyebilirsin. - wrangler tail ile Workers Logs arasındaki fark ne?
wrangler tailcanlı akıştır — o an ne olduğunu görmek için, geliştirme ve acil hata ayıklama sırasında kullanılır. Terminali kapatınca kayıt kalmaz. Workers Logs ise saklanan ve aranabilen kayıtlardır — geçmişe dönük inceleme için. İkisi birbirini tamamlar.- Uyarı (alert) kurabilir miyim?
- Workers Logs koşullarına dayalı bir uyarı özelliği bulunamadı. Bu portalda olmayan özelliği varmış gibi anlatmıyoruz. Uyarı ihtiyacın varsa logları Logpush ile bir SIEM veya APM aracına aktarıp uyarıyı orada kurman gerekir.
- Pages projelerinde de çalışıyor mu?
- Hayır. Workers Logs, Logpush, Tail Workers ve Source Maps — dördü de Pages'te desteklenmiyor. Bu, Cloudflare'in yeni projeler için Workers önermesinin somut gerekçelerinden biridir. Gözlemlenebilirlik istiyorsan Workers Static Assets kullan.
- Source map desteği var mı?
- Workers tarafında var, Pages'te yok. TypeScript veya bundler kullanıyorsan source map yüklemek hata yığınlarını okunabilir hâle getirir — aksi hâlde minified kod satır numaraları görürsün.
- Hangi özellikler beta?
- Query Builder ve Workers Metrics Dashboard Nisan 2025'te beta olarak duyuruldu; o tarihten sonra bir GA duyurusu bulunamadı ve mevcut dokümantasyonda durum etiketi yok. Workers Logpush'un GA tarihi de doğrulanamadı. Rozet olmamasından GA çıkarımı yapma.
İlgili servisler
- WorkersJavaScript/TypeScript/Python kodunu Cloudflare’in 330+ şehirdeki sunucularında, sunucu yönetmeden çalıştırır.
- Workers for PlatformsKendi müşterilerinin yazdığı kodu izole biçimde çalıştırmanı sağlar; SaaS platformları için.
- Durable ObjectsHer nesnenin tek bir instance’ı olan, state tutan compute; sohbet odası, oyun oturumu, sayaç gibi işler için.
- WorkflowsSaatler veya günler süren çok adımlı işleri, adım bazında kalıcı state ve otomatik retry ile yürütür.
- Log ExplorerHam request loglarını Cloudflare içinde saklayıp SQL benzeri sorgularla inceler.
Bu sayfadaki fiyat ve özellik bilgileri 31 Ağustos 2026 tarihinde Cloudflare’in resmî kaynaklarından doğrulanmıştır. Cloudflare fiyatlandırmasını önceden haber vermeden değiştirebilir; bağlayıcı bilgi içinresmî sayfaya bakın.