Queues 公开指标,允许您测量队列积压、消费者并发和消息操作。
Cloudflare 仪表板 ↗ 中显示的指标从 Cloudflare 的 GraphQL Analytics API 查询。您可以通过 GraphQL 或 HTTP 客户端以编程方式 访问这些指标。
Queues 在 queuesBacklogAdaptiveGroups 数据集中导出以下指标。
| 指标 | GraphQL 字段名 | 描述 |
|---|---|---|
| 积压字节数 | bytes |
积压的平均大小(字节) |
| 积压消息数 | messages |
积压的平均大小(消息数) |
queuesBacklogAdaptiveGroups 数据集提供以下维度用于过滤和分组查询:
queueID- 队列 IDdatetime- 消息发送时的时间戳date- 消息发送时的时间戳,截断到天开始datetimeHour- 消息发送时的时间戳,截断到小时开始datetimeMinute- 消息发送时的时间戳,截断到分钟开始
Queues 在 queueConsumerMetricsAdaptiveGroups 数据集中导出以下指标。
| 指标 | GraphQL 字段名 | 描述 |
|---|---|---|
| 平均消费者并发 | concurrency |
该时段内并发消费者的平均数量 |
queueConsumerMetricsAdaptiveGroups 数据集提供以下维度用于过滤和分组查询:
queueID- 队列 IDdatetime- 消费者指标的时间戳date- 消费者指标的时间戳,截断到天开始datetimeHour- 消费者指标的时间戳,截断到小时开始datetimeMinute- 消费者指标的时间戳,截断到分钟开始
Queues 在 queueMessageOperationsAdaptiveGroups 数据集中导出以下指标。
| 指标 | GraphQL 字段名 | 描述 |
|---|---|---|
| 总可计费操作 | billableOperations |
该时段内可计费操作(写入、读取和删除)的总和 |
| 总字节数 | bytes |
从队列读取、写入和删除的字节总和 |
| 延迟 | lagTime |
消息写入与消费操作之间平均延迟时间(毫秒)。 |
| 重试 | retryCount |
每条消息的平均重试次数 |
| 消息大小 | messageSize |
指定时段内的最大消息大小 |
queueMessageOperationsAdaptiveGroups 数据集提供以下维度用于过滤和分组查询:
queueID- 队列 IDactionType- 消息操作类型。可为WriteMessage、ReadMessage或DeleteMessageconsumerType- 队列消费者类型。可为worker或http。仅适用于ReadMessage和DeleteMessage操作类型outcome- 消息操作结果。仅适用于DeleteMessage操作类型。可为success、dlq或fail。datetime- 消息操作的时间戳date- 消息操作的时间戳,截断到天开始datetimeHour- 消息操作的时间戳,截断到小时开始datetimeMinute- 消息操作的时间戳,截断到分钟开始
您可以通过 Queues REST API 和 JavaScript API 访问实时积压指标。这些指标提供时间点值而非聚合数据。
| 指标 | 字段名 | 描述 |
|---|---|---|
| 积压计数 | backlog_count |
队列中当前的消息数量 |
| 积压字节数 | backlog_bytes |
队列中消息的总大小(字节) |
| 最旧消息时间戳 | oldest_message_timestamp_ms |
队列中最旧消息的时间戳(毫秒) |
要通过 REST API 检索这些指标,请使用指标端点(/accounts/{account_id}/queues/{queue_id}/metrics)。
调用 JavaScript API 的 send()、sendBatch() 或 metrics() 时,这些字段也包含在 metadata.metrics 中。
query QueueBacklog(
$accountTag: string!
$queueId: string!
$datetimeStart: Time!
$datetimeEnd: Time!
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
queueBacklogAdaptiveGroups(
limit: 10000
filter: {
queueId: $queueId
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
}
) {
avg {
messages
bytes
}
}
}
}
}query QueueConcurrencyByHour(
$accountTag: string!
$queueId: string!
$datetimeStart: Time!
$datetimeEnd: Time!
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
queueConsumerMetricsAdaptiveGroups(
limit: 10000
filter: {
queueId: $queueId
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
}
orderBy: [datetimeHour_DESC]
) {
avg {
concurrency
}
dimensions {
datetimeHour
}
}
}
}
}query QueueMessageOperationsByMinute(
$accountTag: string!
$queueId: string!
$datetimeStart: Date!
$datetimeEnd: Date!
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
queueMessageOperationsAdaptiveGroups(
limit: 10000
filter: {
queueId: $queueId
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
}
orderBy: [datetimeMinute_DESC]
) {
count
sum {
bytes
}
dimensions {
datetimeMinute
}
}
}
}
}