INTEGRITY Dokumentace

Workers Logs

Workers Logs vám umožňuje automaticky shromažďovat, ukládat, filtrovat a analyzovat data protokolů generovaná Cloudflare Workers. Data se zapisují do vašeho účtu Cloudflare a můžete je procházet v dashboardu u každého ze svých Workers. Všechny nově vytvořené Workers mají ve výchozím stavu zapnuté nastavení observability.

Protokoly zahrnují logy volání, vlastní protokoly, chyby a nezachycené výjimky.

Příklad zobrazující Workers Logs Dashboard

Chcete-li odesílat protokoly třetí straně, použijte Export OpenTelemetry (doporučeno), Workers Logpush, nebo Tail Workers.

Povolení Workers Logs

Aby Worker zapisoval logy do Workers Logs, musíte přidat nastavení observability. Přidejte do souboru Wrangler svého Workeru následující nastavení a Worker znovu nasaďte.

{
  "observability": {
    "enabled": true,
    "head_sampling_rate": 1 // optional. default = 1.
  }
}
[observability]
enabled = true
head_sampling_rate = 1

Head-based vzorkování umožňuje nastavit procento požadavků Workers, které se zaznamenávají do protokolu.

Povolení s prostředími

Prostředí umožňují nasadit stejnou aplikaci Worker s různými konfiguracemi. Můžete například chtít nakonfigurovat jiný head_sampling_rate do staging a produkce. Pro konfiguraci observability pro prostředí s názvem staging: 1. Přidejte následující konfiguraci pod [env.staging]

{
  "env": {
    "staging": {
      "observability": {
        "enabled": true,
        "head_sampling_rate": 1 // optional
      }
    }
  }
}
[env.staging.observability]
enabled = true
head_sampling_rate = 1
  1. Nasaďte svůj Worker pomocí npx wrangler deploy -e staging
  2. Kroky 1 a 2 zopakujte pro každé prostředí.

Zobrazit protokoly z dashboardu

Přístup k logům Workeru z Cloudflare dashboardu:

  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. V Přehled, vyberte svůj Worker.

  3. Vyberte Observabilita.

Osvědčené postupy

Protokolování strukturovaných objektů JSON

Abyste ze služby Workers Logs vytěžili maximum, doporučujeme logovat ve formátu JSON. Workers Logs automaticky extrahuje pole a inteligentně je indexuje v databázi. Výhoda této techniky strukturovaného logování spočívá v tom, že umožňuje snadno segmentovat data podle libovolné dimenze u polí s neomezenou kardinalitou. Zvažte následující scénáře:

Scénář Kód pro protokolování Protokol událostí (částečný)
1 console.log("user_id: " + 123) {message: "user_id: 123"}
2 console.log({user_id: 123}) {user_id: 123}
3 console.log({user_id: 123, user_email: "[email protected]"}) {user_id: 123, user_email: "[email protected]"}

Rozdíl mezi těmito příklady spočívá ve způsobu indexování logů pro rychlejší dotazy. Ve scénáři 1 user_id je vložen do zprávy. Chcete-li najít všechny protokoly týkající se konkrétního user_id, museli byste spustit textové porovnání. Ve scénářích 2 a 3 lze protokoly filtrovat podle klíčů user_id a user_email.

Funkce

Invocation Logs

Každé volání Workers vrátí jeden invocation log, který obsahuje podrobnosti, jako je Request, Response a související metadata. Tyto invocation logy lze identifikovat podle pole $cloudflare.$metadata.type = "cf-worker-event". Každý protokol volání je obohacen o informace, které má Cloudflare k dispozici v kontextu daného volání.

V uživatelském rozhraní Workers Logs se protokoly zobrazují s lokalizovaným časovým razítkem a zprávou. Obsah zprávy závisí na obslužné rutině vyvolání. Požadavky Fetch mají například zprávu popisující metodu a URL požadavku, zatímco události cron jsou uvedeny jako cron. Níže je uveden seznam obslužných rutin vyvolání spolu s jejich zprávami vyvolání.

Invocation logs můžete ve wrangler zakázat přidáním invocation_logs = false konfigurace.

{
	"observability": {
		"logs": {
			"invocation_logs": false
		}
	}
}
[observability.logs]
invocation_logs = false
Invocation Handler Invocation Message
Alarm <Scheduled Time>
E-mail <Email Recipient>
Fetch <Method> <URL>
Queue <Queue Name>
Cron <UNIX-cron schedule>
Tail tail
RPC <RPC method>
WebSocket <WebSocket Event Type>

Vlastní protokoly

Ve výchozím nastavení Worker vygeneruje logy volání obsahující podrobnosti o požadavku, odpovědi a souvisejících metadatech.

V kódu můžete také přidávat vlastní logy na libovolném místě. Jakýkoli console.log příkazy ve vašem Workeru budou vidět ve Workers Logs. Následující příklad ukazuje vlastní console.log v rámci obslužné rutiny požadavků Workeru.

export default {
	async fetch(request) {
		const { cf } = request;
		const { city, country } = cf;

		console.log(`Request came from city: ${city} in country: ${country}`);

		return new Response("Hello worker!", {
			headers: { "content-type": "text/plain" },
		});
	},
};
addEventListener("fetch", (event) => {
	event.respondWith(handleRequest(event.request));
});

/**
 * Respond with hello worker text
 * @param {Request} request
 */
async function handleRequest(request) {
	const { cf } = request;
	const { city, country } = cf;

	console.log(`Request came from city: ${city} in country: ${country}`);

	return new Response("Hello worker!", {
		headers: { "content-type": "text/plain" },
	});
}

Po nasazení výše uvedeného kódu zobrazte protokoly Workeru v dashboard nebo s logy v reálném čase.

Head-based vzorkování

Head-based vzorkování vám umožňuje logovat procento příchozích požadavků na váš Cloudflare Worker. Zejména u aplikací s vysokým provozem tak snížíte objem logů a náklady, a zároveň získáte smysluplný přehled o výkonu své aplikace. Nastavením míry head-based vzorkování určíte, jaké procento požadavků se bude logovat. V rámci kontextu požadavku se sbírají všechny logy.

Chcete-li zapnout head-based vzorkování, nastavte head_sampling_rate v rámci konfigurace observability. Platný rozsah je od 0 do 1, kde 0 znamená, že se nezaznamená žádný požadavek ze sta, a 1 znamená, že se zaznamená každý požadavek. Pokud head_sampling_rate není zadáno, nastaví se výchozí hodnota 1 (100%). V následujícím příkladu head_sampling_rate je nastaveno na hodnotu 0.01, což znamená, že se zaznamená jeden z každých sto požadavků.

{
	"observability": {
		"enabled": true,
		"head_sampling_rate": 0.01 // 1% sampling rate
	}
}
[observability]
enabled = true
head_sampling_rate = 0.01

Limity

Popis Limit
Maximální doba uchovávání protokolů 7 dní
Maximální počet protokolů na účet za den1 5 miliard
Maximální velikost protokolu2 256 KB

1 Denní limit je 5 miliard logů na účet za den. Po překročení tohoto limitu se po zbytek dne použije 1% vzorkování typu head-based.

2 Jeden log má maximální velikost 256 KB. Logy přesahující tuto velikost budou zkráceny a pole logu $cloudflare.truncated pole bude nastaveno na true.

Ceny

Workers Logs je součástí plánů Free i Paid Plány Workers.

Log Events Written Uchování
Workers Free 200,000 za den 3 dny
Workers Paid 20 milionů v ceně za měsíc
+$0.60 za každý další milion
7 dní

Příklady

Příklad 1

Worker obsluhuje 15 milionů požadavků za měsíc. Každý požadavek vygeneruje 1 log vyvolání a 1 console.log. head_sampling_rate je nastavena na 1.

Měsíční náklady Vzorec
Protokoly $6.00 ((15,000,000 requests per month * 2 logs per request * 100% sample) - 20,000,000 included logs) / 1,000,000 * $0.60
Celkem $6.00

Příklad 2

Worker obsluhuje 1 miliardu požadavků za měsíc. Každý požadavek vygeneruje 1 log vyvolání a 1 console.log. head_sampling_rate je nastavena na 0.1.

Měsíční náklady Vzorec
Protokoly $108.00 ((1,000,000,000 requests per month * 2 logs per request * 10% sample) - 20,000,000 included logs) / 1,000,000 * $0.60
Celkem $108.00