跳转到内容
搜索文档

写入 Analytics Engine

向 Workers Analytics Engine 写入自定义分析事件,用于高基数时序数据。

最后更新 查看 MarkdownAgent 设置

Workers Analytics Engine 提供大规模时序分析能力。你可以用它跟踪自定义指标、构建按用量计费,或按客户了解服务健康状况。

与日志不同,Analytics Engine 专为高基数数据的聚合查询而设计。写入是非阻塞的,不会影响请求延迟。

配置绑定(binding)

在 Wrangler 配置文件中添加 Analytics Engine 数据集绑定(binding)。首次写入时会自动创建数据集。

{
	"analytics_engine_datasets": [
		{
			"binding": "ANALYTICS",
			"dataset": "my_dataset",
		},
	],
}
[[analytics_engine_datasets]]
binding = "ANALYTICS"
dataset = "my_dataset"

写入数据点

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;
	},
};

数据点结构

每个数据点包含:

  • blobs(字符串)— 用于分组和筛选的维度。可用于路径、区域、状态码或客户 ID。
  • doubles(数字)— 要记录的数值,例如计数、时长或大小。
  • indexes(字符串)— 用作采样键的单个字符串。将相关事件分组到同一 index 下。

查询数据

使用 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"

相关资源

这篇文档对您有帮助吗?