Reference
5 min read

Monitoring Reference

This reference covers the clauses, fields, and variables used to create a Monitoring query.
Table of Contents

The Visualize clause selects what query data is displayed. You can select one of the following fields at a time, aggregating each field in one of several ways:

Field NameDescriptionAggregations
requestsThe HTTP requestsCount, Count per Second, Percentages
bandwidth_incomingBandwidth sent from the client to VercelSum, Sum per Second, Min/Max, Percentages, Percentiles
bandwidth_outgoingBandwidth sent from Vercel to the clientSum, Sum per Second, Min/Max, Percentages, Percentiles
bandwidth_totalSum of bandwidth_incoming and bandwidth_outgoingSum, Sum per Second, Min/Max, Percentages, Percentiles
serverless_function_executionThe billed Serverless Function usage in GB-HrsSum, Sum per Second, Min/Max, Percentages, Percentiles
serverless_function_durationThe time spent executing Serverless FunctionsSum, Sum per Second, Min/Max, Percentages, Percentiles
memory_sizeThe size of memory provisioned for the Serverless FunctionsSum, Sum per Second, Min/Max, Percentages, Percentiles
blocked_connectionsAll connections blocked by either the system or userCount, Count per Second, Percentages

The visualize field can be aggregated in the following ways:

AggregationDescription
CountThe number of requests which occurred
Count per SecondThe average rate of requests which occurred
SumThe sum of the field value across all requests
Sum per SecondThe sum of the field value as a rate per second
MinimumThe smallest observed field value
MaximumThe largest observed field value
Percentiles (75th, 90th, 95th, 99th)Percentiles for the field values. For example, 90% of requests will have a duration that is less than the 90th percentile of duration.
PercentagesEach group is reported as a percentage of the ungrouped whole. For example, if a query for request groups by hosts, one host may have 10% of the total request count. Anything excluded by the where clause is not counted towards the ungrouped whole.

Aggregations are calculated within each point on the chart (hourly, daily, etc depending on the selected granularity) and also across the entire query window

The Where clause defines the conditions to filter your query data. It only fetches data that meets a specified condition based on several fields and operators:

OperatorDescription
=The operator that allows you to specify a single value
inThe operator that allows you to specify multiple values. For example, host in ('vercel.com', 'nextjs.com')
andThe operator that displays a query result if all the filter conditions are TRUE
orThe operator that displays a query result if at least one of the filter conditions are TRUE
notThe operator that displays a query result if the filter condition(s) is NOT TRUE
likeThe operator used to search a specified pattern. This is case-sensitive. For example, host like 'acme.com'. You can also use _ to match any single character and % to match any substrings. For example, host like 'acme_.com' will match with acme1.com, acme2.com, and acme3.com. host like 'acme%' will also have the same matches. To do a case-insensitive search, use ilike
startsWithFilter data values that begin with some specific characters
matchThe operator used to search for patterns based on a regular expression (Re2 syntax). For example, match(user_agent, 'Chrome/97.*')

String literals must be surrounded by single quotes. For example, host = 'vercel.com'.

The Group By clause calculates statistics for each combination of field values. Each group is displayed as a separate color in the chart view, and has a separate row in the table view.

For example, grouping by host and status will display data broken down by each combination of host and status.

The Limit clause defines the maximum number of results displayed. If the number of query results is greater than the Limit value, then the remaining results are compiled as Other(s).

There are several fields available for use within the where and group by clauses:

Field NameDescription
hostGroup by the request's domains and subdomains
path_typeGroup by the request's resource type
project_idGroup by the request's project ID
statusGroup by the request's HTTP response code
source_pathThe mapped path used by the request. For example, if you have a dynamic route like /blog/[slug] and a blog post is /blog/my-blog-post, the source_path is /blog/[slug]
request_pathThe path used by the request. For example, if you have a dynamic route like /blog/[slug] and a blog post is /blog/my-blog-post, the request_path is /blog/my-blog-post
cacheThe cache status for the request
error_detailsGroup by the errors that were thrown on Vercel
deployment_idGroup by the request's deployment ID
environmentGroup by the environment (production or preview)
request_methodGroup by the HTTP request method (GET, POST, PUT, etc.)
http_refererGroup by the HTTP referer
public_ipGroup by the request's IP address
user_agentGroup by the request's user agent
asnThe autonomous system number (ASN) for the request. This is related to what network the request came from (either a home network or a cloud provider)
bot_nameGroup by the request's bot crawler name. This field will contain the name of a known crawler (e.g. Google, Bing)
regionGroup by the region the request was routed to
waf_actionGroup by the action taken by the Vercel Firewall (system-blocked or customer-blocked)

All your project's resources like pages, functions, and images have a path type:

Path TypeDescription
staticA static asset (.js, .css, .png, etc.)
funcA Serverless Function
externalA resource that is outside of Vercel. This is usually caused when you have rewrite rules
edgeAn Edge Function
prerenderA pre-rendered page built using Incremental Static Regeneration
streaming_funcA streaming Serverless Function
background_funcThe Incremental Static Regeneration Render Function used to create or update a static page
Monitoring options including Data Granularity of day or hour
Monitoring options including Data Granularity of day or hour

In the chart view (vertical bar or line), Limit is applied at the level of each day or hour (based the value of the Data Granularity dropdown). When you hover over each step of the horizontal axis, you can see a list of the results returned and associated colors.

In the table view (below the chart), Limit is applied to the sum of requests for the selected query window so that the number of rows in the table does not exceed the value of Limit.

On the left navigation bar, you will find a list of example queries to get started:

Query NameDescription
Requests by HostnameThe total number of requests for each host
Requests Per Second by HostnameThe total number of requests per second for each host
Requests by ProjectThe total number of requests for each project_id
Requests by IP AddressThe total number of requests for each public_ip
Requests by Bot/CrawlerThe total number of requests for each bot_name
Requests by User AgentThe total number of requests for each user_agent
Requests by RegionThe total number of requests for each region
Bandwidth by Project, HostnameThe outgoing bandwidth for each host and project_id combination
Bandwidth Per Second by Project, HostnameThe outgoing bandwidth per second for each host and project_id
Bandwidth by Path, HostnameThe outgoing bandwidth for each host and source_path
Request Cache HitsThe total number of request cache hits for each host
Request Cache MissesThe total number of request cache misses for eachhost
Cache Hit RatesThe percentage of cache hits and misses over time
429 Status Codes by Host, PathThe total 429 (Too Many Requests) status code requests for each host and source_path
5XX Status Codes by Host, PathThe total 5XX (server-related HTTPS error) status code requests for each host and source_path
Execution by Host, PathThe total billed Serverless Function usage for each host and source_path
Average Duration by Host, PathThe average duration for each host and source_path
95th Percentile Duration by Host, PathThe p95 duration for each host and source_path
Last updated on May 18, 2024