← Cloudflare Workers / workers / observability / logs
Tail Workers
Tail Worker přijímá informace o běhu jiných Workerů (takzvaných produkujících Workerů), například stavové kódy HTTP, data předaná do console.log() nebo nezachycené výjimky. Tail Workers mohou zpracovávat logy pro upozornění, ladění nebo analytiku.
Tail Workers jsou dostupné všem zákazníkům na úrovních Workers Paid a Enterprise. Tail Workers se účtují podle Čas CPU, nikoli podle počtu požadavků.
Tail Worker se automaticky spustí po vyvolání produkujícího Workeru (Workeru, který Tail Worker sleduje) obsahujícího logiku aplikace. Zachycuje události až po dokončení běhu produkujícího Workeru. Události v celém životním cyklu požadavku, včetně případných dílčích požadavků přes Service Bindings a Dynamic Dispatch, budou zahrnuty. Data můžete filtrovat, měnit jejich formát a odesílat události na libovolný HTTP endpoint. Pro rychlé ladění lze pomocí Tail Workers odesílat protokoly do KV nebo jakoukoli databázi.
Nakonfigurujte Tail Workers
Chcete-li nakonfigurovat Tail Worker:
- Vytvořte Worker jako Tail Worker.
- Přidejte
tail()handler do svého Workeru.tail()handler se vyvolá pokaždé, když je vyvolán producer Worker, k němuž je připojen Tail Worker. Následující kód Workeru představuje Tail Worker, který odesílá svá data na HTTP endpoint:
export default {
async tail(events) {
fetch("https://example.com/endpoint", {
method: "POST",
body: JSON.stringify(events),
});
},
};Následující kód Workeru je příkladem toho, co events objekt může vypadat takto:
[
{
"scriptName": "Example script",
"outcome": "exception",
"eventTimestamp": 1587058642005,
"event": {
"request": {
"url": "https://example.com/some/requested/url",
"method": "GET",
"headers": {
"cf-ray": "57d55f210d7b95f3",
"x-custom-header-name": "my-header-value"
},
"cf": {
"colo": "SJC"
}
}
},
"logs": [
{
"message": ["string passed to console.log()"],
"level": "log",
"timestamp": 1587058642005
}
],
"exceptions": [
{
"name": "Error",
"message": "Threw a sample exception",
"timestamp": 1587058642005
}
],
"diagnosticsChannelEvents": [
{
"channel": "foo",
"message": "The diagnostic channel message",
"timestamp": 1587058642005
}
]
}
]- Přidejte následující do souboru Wrangler Workeru producenta:
{
"tail_consumers": [
{
"service": "<TAIL_WORKER_NAME>"
}
]
}[[tail_consumers]]
service = "<TAIL_WORKER_NAME>"Použijte Analytics Engine pro agregované metriky
Pokud potřebujete agregovanou analytiku místo jednotlivých log eventů, zvažte zápis do Workers Analytics Engine z vašeho Tail Workeru. Analytics Engine je optimalizovaný pro časové řady dat s vysokou kardinalitou, které můžete dotazovat pomocí SQL.
Pomocí Tail Workeru můžete například počítat chyby podle endpointu, sledovat dobu odezvy podle zákazníka nebo vytvářet metriky využití a tyto agregované hodnoty pak zapisovat do Analytics Engine pro dotazování a vizualizaci.
export default {
async tail(events, env) {
for (const event of events) {
env.ANALYTICS.writeDataPoint({
blobs: [event.scriptName, event.outcome],
doubles: [1],
indexes: [event.event?.request?.cf?.colo ?? "unknown"],
});
}
},
};Viz Dokumentace Analytics Engine další podrobnosti o zápisu a dotazování dat.
Související zdroje
tail()Dokumentace API Handler, přečtěte si, jak nastavittail()handler ve vašem Workeru.- Analytics Engine - Zapisujte vlastní analytická data z vašeho Workeru pro dotazy s vysokou kardinalitou v časových řadách.
- Chyby a výjimky - Projděte si běžné chyby Workers.
- Lokální vývoj - Vyvíjejte a testujte své Workers lokálně.
- Zdrojové mapy a stack trace - Zjistěte, jak povolit source maps a generovat stack traces pro Workers.