Monitoring Reference
This reference covers the clauses, fields, and variables used to create a Monitoring query.With the launch of Observability, you can no longer purchase Monitoring separately. Monitoring is now included with Observability Plus.
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 Name | Description | Aggregations |
---|---|---|
Edge Requests | The number of Edge Requests | Count, Count per Second, Percentages |
Duration | The time spent serving a request, as measured by Vercel's Edge Network | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Incoming Fast Data Transfer | The amount of Fast Data Transfer used by the request. | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Outgoing Fast Data Transfer | The amount of Fast Data Transfer used by the response. | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Function Invocations | The number of Serverless Function invocations | Count, Count per Second, Percentages |
Function Duration | The amount of Serverless Function duration, as measured in GB-hours. | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Function CPU Time | The amount of CPU time a Serverless Function has spent responding to requests, as measured in milliseconds. | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Incoming Fast Origin Transfer | The amount of Fast Origin Transfer used by the request. | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Outgoing Fast Origin Transfer | The amount of Fast Origin Transfer used by the response. | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Provisioned Memory | The amount of memory provisioned to a Serverless Function. | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Peak Memory | The maximum amount of memory used by Serverless Function at any point in time. | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Requests Blocked | All requests blocked by either the system or user. | Count, Count per Second, Percentages |
Incoming Legacy Bandwidth | Legacy Bandwidth sent from the client to Vercel | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Outgoing Legacy Bandwidth | Legacy Bandwidth sent from Vercel to the client | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
Total Legacy Bandwidth | Sum of Incoming and Outgoing Legacy Bandwidth | Sum, Sum per Second, Min/Max, Percentages, Percentiles |
The visualize field can be aggregated in the following ways:
Aggregation | Description |
---|---|
Count | The number of requests that occurred |
Count per Second | The average rate of requests that occurred |
Sum | The sum of the field value across all requests |
Sum per Second | The sum of the field value as a rate per second |
Minimum | The smallest observed field value |
Maximum | The 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. |
Percentages | Each 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:
Operator | Description | |
---|---|---|
= | The operator that allows you to specify a single value | |
in | The operator that allows you to specify multiple values. For example, host in ('vercel.com', 'nextjs.com') | |
and | The operator that displays a query result if all the filter conditions are TRUE | |
or | The operator that displays a query result if at least one of the filter conditions are TRUE | |
not | The operator that displays a query result if the filter condition(s) is NOT TRUE | |
like | The 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 | |
startsWith | Filter data values that begin with some specific characters | |
match | The 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 Name | Description | |
---|---|---|
host | Group by the request's domains and subdomains | |
path_type | Group by the request's resource type | |
project_id | Group by the request's project ID | |
status | Group by the request's HTTP response code | |
source_path | The 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_path | The 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 | |
cache | The cache status for the request | |
error_details | Group by the errors that were thrown on Vercel | |
deployment_id | Group by the request's deployment ID | |
environment | Group by the environment (production or preview ) | |
request_method | Group by the HTTP request method (GET , POST , PUT , etc.) | |
http_referer | Group by the HTTP referer | |
public_ip | Group by the request's IP address | |
user_agent | Group by the request's user agent | |
asn | The 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_name | Group by the request's bot crawler name. This field will contain the name of a known crawler (e.g. Google, Bing) | |
region | Group by the region the request was routed to | |
waf_action | Group by the WAF action taken by the Vercel Firewall (deny , challenge , rate_limit , bypass or log ) | |
action | Group by the action taken by Vercel DDoS Mitigations (deny or challenge ) | |
skew_protection | When active , the request would have been subject to version skew but was protected, otherwise inactive . |
All your project's resources like pages, functions, and images have a path type:
Path Type | Description |
---|---|
static | A static asset (.js , .css , .png , etc.) |
func | A Serverless Function |
external | A resource that is outside of Vercel. This is usually caused when you have rewrite rules |
edge | An Edge Function |
prerender | A pre-rendered page built using Incremental Static Regeneration |
streaming_func | A streaming Serverless Function |
background_func | The Incremental Static Regeneration Render Function used to create or update a static page |
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 Name | Description |
---|---|
Requests by Hostname | The total number of requests for each host |
Requests Per Second by Hostname | The total number of requests per second for each host |
Requests by Project | The total number of requests for each project_id |
Requests by IP Address | The total number of requests for each public_ip |
Requests by Bot/Crawler | The total number of requests for each bot_name |
Requests by User Agent | The total number of requests for each user_agent |
Requests by Region | The total number of requests for each region |
Bandwidth by Project, Hostname | The outgoing bandwidth for each host and project_id combination |
Bandwidth Per Second by Project, Hostname | The outgoing bandwidth per second for each host and project_id |
Bandwidth by Path, Hostname | The outgoing bandwidth for each host and source_path |
Request Cache Hits | The total number of request cache hits for each host |
Request Cache Misses | The total number of request cache misses for eachhost |
Cache Hit Rates | The percentage of cache hits and misses over time |
429 Status Codes by Host, Path | The total 429 (Too Many Requests) status code requests for each host and source_path |
5XX Status Codes by Host, Path | The total 5XX (server-related HTTPS error) status code requests for each host and source_path |
Execution by Host, Path | The total billed Serverless Function usage for each host and source_path |
Average Duration by Host, Path | The average duration for each host and source_path |
95th Percentile Duration by Host, Path | The p95 duration for each host and source_path |
Was this helpful?