1.10.2025 г.
Cloudflare Tail Worker

С Cloudflare Tail Worker насочвате логването на едно място - всичко е в екосистемата и в реално време. До скоро ползвах само външни инструменти като Sentry, LogRocket или Loki с Grafana, но подкарването им изисква да познаваш процесинга и отнема време.
Много често, когато ползвате SaaS (Software as a Service) услуги нямате достъп до логовете - или ако имате, логовете са силно орязани. Тогава си конфигурирате средата за разработка максимално близка до продукционната и се опитвате да симулирате грешките или създавате процес, на който пращате грешките и от там ги засилвате към външен инструмент.
Всеки Worker в Cloudflare има собствени логове, но нямате особен контрол върху тях. А, когато се налага да
следите повече от един Worker, спрямо време, в което са се случило някакво събитие във всички тези Workers,
нещата загрубяват. Затова си създавате, отделно, един нормален Worker, но async fetch(request, env, ctx)
функцията я кръщавате async tail(events, env, ctx)
и вече имате дефиниран Tail Worker.
// src/index.ts
export default {
async tail(events: TraceItem[], _env: unknown, _ctx: unknown) {
if (!events || events.length === 0) {
return;
}
console.log(`[TAIL] Получени ${events.length} събития`);
for (const trace of events) {
try {
handleTraceItem(trace); // Вашата функция за обработка на събитията
} catch (error) {
console.error(`[TAIL_ERROR] Грешка при обработка на събитие: ${error instanceof Error ? error.message : String(error)}`);
}
}
console.log(`[TAIL] Завършена обработка на ${events.length} събития`);
}
} satisfies ExportedHandler;
Кръщавате Вашия Worker - например: tail-for-me-all-the-app-events
. Добавяте във wrangler.jsonc
ред
{
// ...
"observability": {
"enabled": true
}
}
и го качвате на Cloudflare. Готово - имате активен Tail Worker.
От тук нататък, във всеки един Producer Worker, на който искате да следите логовете, добавяте в неговия wrangler.jsonc
:
{
// ...
"tail_consumers": [
{
"service": "tail-for-me-all-the-app-events"
}
]
}
За момента няма ограничение на броя Producer Workers, които могат да пращат логовете си към даден Tail Worker. Трябва да знаете, че над определено време на ползване на CPU, Cloudflare ще Ви таксува допълнително.
Основно следвам 2 правила
- Ако два или повече Producer Workers споделят поне една база - ползват общ Tail Worker.
- Един Producer Worker ползва повече от един Tail Worker, само ако има дефинирани правила за достъп.
handleTraceItem
функцията.