[ PROMPT_NODE_24168 ]
Observability API 参考
[ SKILL_DOCUMENTATION ]
## API 参考
### GraphQL 分析 API
**端点**: `https://api.cloudflare.com/client/v4/graphql`
**查询 Workers 指标**:
graphql
query {
viewer {
accounts(filter: { accountTag: $accountId }) {
workersInvocationsAdaptive(
limit: 100
filter: {
datetime_geq: "2025-01-01T00:00:00Z"
datetime_leq: "2025-01-31T23:59:59Z"
scriptName: "my-worker"
}
) {
sum {
requests
errors
subrequests
}
quantiles {
cpuTimeP50
cpuTimeP99
wallTimeP50
wallTimeP99
}
}
}
}
}
### 分析引擎 SQL API
**端点**: `https://api.cloudflare.com/client/v4/accounts/{account_id}/analytics_engine/sql`
**身份验证**: `Authorization: Bearer ` (账户分析读取权限)
**常用查询**:
sql
-- 列出所有数据集
SHOW TABLES;
-- 时间序列聚合(5 分钟桶)
SELECT
intDiv(toUInt32(timestamp), 300) * 300 AS time_bucket,
blob1 AS endpoint,
SUM(_sample_interval) AS total_requests,
AVG(double1) AS avg_response_time_ms
FROM api_metrics
WHERE timestamp >= NOW() - INTERVAL '24' HOUR
GROUP BY time_bucket, endpoint
ORDER BY time_bucket DESC;
-- 按使用量排名的顶级客户
SELECT
index1 AS customer_id,
SUM(_sample_interval * double1) AS total_api_calls,
AVG(double2) AS avg_response_time_ms
FROM api_usage
WHERE timestamp >= NOW() - INTERVAL '7' DAY
GROUP BY customer_id
ORDER BY total_api_calls DESC
LIMIT 100;
-- 错误率分析
SELECT
blob1 AS error_type,
COUNT(*) AS occurrences,
MAX(timestamp) AS last_seen
FROM error_tracking
WHERE timestamp >= NOW() - INTERVAL '1' HOUR
GROUP BY error_type
ORDER BY occurrences DESC;
### 控制台日志 API
**方法**:
typescript
// 标准方法(全部显示在 Workers 日志中)
console.log('info message');
console.info('info message');
console.warn('warning message');
console.error('error message');
console.debug('debug message');
// 结构化日志(推荐)
console.log({
level: 'info',
user_id: '123',
action: 'checkout',
amount: 99.99,
currency: 'USD'
});
**日志级别**: 所有控制台方法都会生成日志;使用结构化字段进行过滤:
typescript
console.log({
level: 'error',
message: 'Payment failed',
error_code: 'CARD_DECLINED'
});
### 分析引擎绑定类型
typescript
interface AnalyticsEngineDataset {
writeDataPoint(event: An