← Cloudflare Workers / workers / examples
Zápis do Analytics Engine
Workers Analytics Engine poskytuje časové řady analytiky ve velkém měřítku. Použijte ji ke sledování vlastních metrik, sestavení fakturace podle využití nebo ke zjištění stavu služby pro jednotlivé zákazníky.
Na rozdíl od protokolů je Analytics Engine navržený pro agregované dotazy nad daty s vysokou kardinalitou. Zápisy jsou neblokující a neovlivňují latenci požadavků.
Nakonfigurujte binding
Přidejte vazbu na datovou sadu Analytics Engine do konfiguračního souboru Wrangler. Datová sada se vytvoří automaticky při prvním zápisu do ní.
{
"analytics_engine_datasets": [
{
"binding": "ANALYTICS",
"dataset": "my_dataset",
},
],
}[[analytics_engine_datasets]]
binding = "ANALYTICS"
dataset = "my_dataset"Zapisujte datové body
export default {
async fetch(request, env) {
const url = new URL(request.url);
// Write a page view event
env.ANALYTICS.writeDataPoint({
blobs: [
url.pathname,
request.headers.get("cf-connecting-country") ?? "unknown",
],
doubles: [1], // Count
indexes: [url.hostname], // Sampling key
});
// Write a response timing event
const start = Date.now();
const response = await fetch(request);
const duration = Date.now() - start;
env.ANALYTICS.writeDataPoint({
blobs: [url.pathname, response.status.toString()],
doubles: [duration],
indexes: [url.hostname],
});
// Writes are non-blocking - no need to await or use waitUntil()
return response;
},
};interface Env {
ANALYTICS: AnalyticsEngineDataset;
}
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
// Write a page view event
env.ANALYTICS.writeDataPoint({
blobs: [
url.pathname,
request.headers.get("cf-connecting-country") ?? "unknown",
],
doubles: [1], // Count
indexes: [url.hostname], // Sampling key
});
// Write a response timing event
const start = Date.now();
const response = await fetch(request);
const duration = Date.now() - start;
env.ANALYTICS.writeDataPoint({
blobs: [url.pathname, response.status.toString()],
doubles: [duration],
indexes: [url.hostname],
});
// Writes are non-blocking - no need to await or use waitUntil()
return response;
},
};Struktura datového bodu
Každý datový bod se skládá z:
- blobs (řetězce): dimenze pro seskupování a filtrování. Použijte pro cesty, regiony, stavové kódy nebo ID zákazníků.
- zdvojnásobuje (čísla): číselné hodnoty k zaznamenání, například počty, doby trvání nebo velikosti.
- indexy (řetězce): jednotlivý řetězec použitý jako vzorkovací klíč. Seskupte související události pod stejný index.
Dotazování vašich dat
Dotazujte svá data pomocí SQL API:
curl "https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/analytics_engine/sql" \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--data "SELECT blob1 AS path, SUM(_sample_interval) AS views FROM my_dataset WHERE timestamp > NOW() - INTERVAL '1' HOUR GROUP BY path ORDER BY views DESC LIMIT 10"Související zdroje
- Dokumentace Analytics Engine - Úplná referenční dokumentace pro Workers Analytics Engine.
- Referenční dokumentace k SQL API - Syntaxe dotazů a dostupné funkce.
- Integrace Grafana - Vizualizujte data Analytics Engine v Grafaně.