跳转到内容
搜索文档

指标与分析

最后更新 查看 MarkdownAgent 设置

Hyperdrive 提供分析功能,可查看账户中每个 Hyperdrive 配置的查询量、查询延迟、缓存命中率和连接池指标。

指标

Hyperdrive 目前通过 hyperdriveQueriesAdaptiveGroupshyperdrivePoolSizesAdaptiveGroups GraphQL 数据集导出指标。

查询指标

hyperdriveQueriesAdaptiveGroups 数据集包含以下指标:

指标 GraphQL 字段名 说明
查询 count 给定时间段内发往 Hyperdrive 的查询数。
缓存状态 cacheStatus 查询是否被缓存。可为 disabledhitmissuncacheablemultiplestatementsnotaqueryoversizedqueryoversizedresultparseerrortransactionvolatile
查询字节 queryBytes 查询大小(字节)。
结果字节 resultBytes 查询_结果_大小(字节)。
连接延迟 connectionLatency 从 Hyperdrive 连接池建立到数据库新连接所需时间(毫秒)。
查询延迟 queryLatency 从 Hyperdrive 连接池查询数据库并接收结果所需时间(毫秒)。
事件状态 eventStatus 查询是否成功响应(complete)或失败(error)。

volatile 缓存状态表示查询包含 PostgreSQL 标记为 STABLEVOLATILE 的函数(例如 NOW()RANDOM())。有关哪些函数影响可缓存性,请参阅查询缓存

池大小指标

hyperdrivePoolSizesAdaptiveGroups 数据集包含以下连接池指标:

指标 GraphQL 字段名 说明
平均打开连接数 avg.currentPoolSize 池中当前打开连接的平均数。
平均可用槽位 avg.availablePoolSlots 可用于签出的池连接平均数。
平均等待客户端 avg.waitingClients 等待池中连接的平均客户端数。
池大小上限 max.maxPoolSize 配置的连接池最大大小。
峰值打开连接数 max.currentPoolSize 池中打开连接的峰值。
峰值等待客户端 max.waitingClients 等待池中连接的峰值客户端数。

连接争用表现为等待客户端激增,或打开连接持续接近池大小上限。若打开连接经常接近此限制,可考虑提高 Hyperdrive 连接限制

指标可查询(并保留)过去 31 天。

在仪表板中查看指标

Hyperdrive 的按数据库分析可在 Cloudflare 仪表板中查看。查看 Hyperdrive 配置的当前和历史指标:

  1. 在 Cloudflare 仪表板中,前往 Hyperdrive 页面。

    Go to Hyperdrive ↗
  2. 选择现有 Hyperdrive 配置。

  3. 选择 Metrics(指标) 选项卡。

可选择时间窗口查询,默认为过去 24 小时。

仪表板包含 Pool connections(池连接) 图表,显示等待连接、打开连接和池大小上限。可使用位置选择器按特定 Cloudflare 位置筛选。

通过 GraphQL API 查询

可通过 GraphQL Analytics API 以编程方式查询 Hyperdrive 配置的分析。该 API 查询与 Cloudflare 仪表板相同的数据集,并支持 GraphQL 内省

Hyperdrive 的 GraphQL 数据集需要带有 Cloudflare 账户 ID 的 accountTag 过滤器。Hyperdrive 暴露 hyperdriveQueriesAdaptiveGroupshyperdrivePoolSizesAdaptiveGroups 数据集。

编写 GraphQL 查询

探索 Hyperdrive 指标的示例。

按缓存状态获取 Hyperdrive 配置处理的查询数

query HyperdriveQueries(
	$accountTag: string!
	$configId: string!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			hyperdriveQueriesAdaptiveGroups(
				limit: 10000
				filter: {
					configId: $configId
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				count
				dimensions {
					cacheStatus
				}
			}
		}
	}
}

获取指定时间范围内 Hyperdrive 配置处理的查询和连接平均延迟(排除因错误失败的查询)

query AverageHyperdriveLatencies(
	$accountTag: string!
	$configId: string!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			hyperdriveQueriesAdaptiveGroups(
				limit: 10000
				filter: {
					configId: $configId
					eventStatus: "complete"
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				avg {
					connectionLatency
					queryLatency
				}
			}
		}
	}
}

获取通过 Hyperdrive 配置的查询和结果字节总量

query HyperdriveQueryAndResultBytesForSuccessfulQueries(
	$accountTag: string!
	$configId: string!
	$datetimeStart: Date!
	$datetimeEnd: Date!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			hyperdriveQueriesAdaptiveGroups(
				limit: 10000
				filter: {
					configId: $configId
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				sum {
					queryBytes
					resultBytes
				}
			}
		}
	}
}

获取 Hyperdrive 配置的池大小指标

query HyperdrivePoolSizes(
	$accountTag: string!
	$configId: string!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			hyperdrivePoolSizesAdaptiveGroups(
				limit: 10000
				filter: {
					configId: $configId
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				avg {
					currentPoolSize
					availablePoolSlots
					waitingClients
				}
				max {
					maxPoolSize
					currentPoolSize
					waitingClients
				}
				dimensions {
					coloCode
				}
			}
		}
	}
}

这篇文档对您有帮助吗?