Metrics
Queues expose metrics which allow you to measure the queue backlog, consumer concurrency, and message operations.
The metrics displayed in the Cloudflare dashboard ↗ are queried from Cloudflare’s GraphQL Analytics API. You can access the metrics programmatically via GraphQL or HTTP client.
Queues export the below metrics within the queuesBacklogAdaptiveGroups dataset.
| Metric | GraphQL Field Name | Description | 
|---|---|---|
| Backlog bytes | bytes | Average size of the backlog, in bytes | 
| Backlog messages | messages | Average size of the backlog, in number of messages | 
The queuesBacklogAdaptiveGroups dataset provides the following dimensions for filtering and grouping queries:
- queueID- ID of the queue
- datetime- Timestamp for when the message was sent
- date- Timestamp for when the message was sent, truncated to the start of a day
- datetimeHour- Timestamp for when the message was sent, truncated to the start of an hour
- datetimeMinute- Timestamp for when the message was sent, truncated to the start of a minute
Queues export the below metrics within the queueConsumerMetricsAdaptiveGroups dataset.
| Metric | GraphQL Field Name | Description | 
|---|---|---|
| Avg. Consumer Concurrency | concurrency | Average number of concurrent consumers over the period | 
The queueConsumerMetricsAdaptiveGroups dataset provides the following dimensions for filtering and grouping queries:
- queueID- ID of the queue
- datetime- Timestamp for the consumer metrics
- date- Timestamp for the consumer metrics, truncated to the start of a day
- datetimeHour- Timestamp for the consumer metrics, truncated to the start of an hour
- datetimeMinute- Timestamp for the consumer metrics, truncated to the start of a minute
Queues export the below metrics within the queueMessageOperationsAdaptiveGroups dataset.
| Metric | GraphQL Field Name | Description | 
|---|---|---|
| Total billable operations | billableOperations | Sum of billable operations (writes, reads, and deletes) over the time period | 
| Total Bytes | bytes | Sum of bytes read, written, and deleted from the queue | 
| Lag | lagTime | Average lag time in milliseconds between when the message was written and the operation to consume the message. | 
| Retries | retryCount | Average number of retries per message | 
| Message Size | messageSize | Maximum message size over the specified period | 
The queueMessageOperationsAdaptiveGroups dataset provides the following dimensions for filtering and grouping queries:
- queueID- ID of the queue
- actionType- The type of message operation. Can be- WriteMessage,- ReadMessageor- DeleteMessage
- consumerType- The queue consumer type. Can be- workeror- http. Only applicable for- ReadMessageand- DeleteMessageaction types
- outcome- The outcome of the mesage operation. Only applicable for- DeleteMessageaction types. Can be- success,- dlqor- fail.
- datetime- Timestamp for the message operation
- date- Timestamp for the message operation, truncated to the start of a day
- datetimeHour- Timestamp for the message operation, truncated to the start of an hour
- datetimeMinute- Timestamp for the message operation, truncated to the start of a minute
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        }      }    }  }}Was this helpful?
- Resources
- API
- New to Cloudflare?
- Products
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark