Documentation for automated readers
A curated documentation index is available at: https://grafana.com/llms.txt
A complete documentation index is available at: https://grafana.com/llms-full.txt
These indexes can help with page discovery before fetching individual documents.
This page is also available in Markdown, which may be easier for automated readers and AI tools to parse than HTML. The Markdown version is available at https://grafana.com/docs/grafana-cloud/observe-and-act/testing/synthetic-monitoring/create-checks/checks.md, or by sending Accept: text/markdown to https://grafana.com/docs/grafana-cloud/observe-and-act/testing/synthetic-monitoring/create-checks/checks/. For broader documentation discovery, the curated index is available at https://grafana.com/llms.txt and the complete index is available at https://grafana.com/llms-full.txt.
Check types
A Synthetic Monitoring check is a scheduled test of a target. The check is the configuration, not a single run: it defines what to test, what counts as success, how often to test, and which public or private probes run the test. The job name and target together uniquely identify a check. A check execution is one run of a check from one probe, so one check produces many executions over time.
Each check execution saves its results as Prometheus metrics and Loki logs, which you can use to configure Grafana alerts for custom notifications and incident management.
Synthetic Monitoring provides check types for endpoints, network paths, multi-step API workflows, scripts, and browser journeys.
With Grafana Play, you can explore and see how it works, learning from practical examples to accelerate your development. This feature can be seen on Synthetic Monitoring Checks.
Choose a check type
The Synthetics app groups check types into four options on the Choose a check type page: API Endpoint, Multi Step, Scripted, and Browser.
Choose the simplest check type that verifies the outcome you care about. Use separate API Endpoint checks for independent targets. Use Multi Step, Scripted, or Browser when the requests or interactions form a single ordered journey.
Use the following table to choose a check type and find the option that creates it.
| What you want to monitor | Check type | Select in the app |
|---|---|---|
| Whether a host is reachable, and its response latency from each probe location | Ping | API Endpoint with the Ping request type |
| A single HTTP endpoint, including its response, TLS version, certificate expiration, and redirects | HTTP | API Endpoint with the HTTP request type |
Whether a DNS server returns the expected record for a name, such as an A record for example.org | DNS | API Endpoint with the DNS request type |
| Whether a service accepts TCP connections, for example, a mail server, FTP server, or message queue | TCP | API Endpoint with the TCP request type |
| The network path to a target, and how that path changes over time | Traceroute | API Endpoint with the Traceroute request type |
| An ordered HTTP journey where requests share response data or session state | MultiHTTP | Multi Step |
| A flow that needs custom logic, JavaScript libraries, or WebSocket services | k6 scripted | Scripted |
| A user journey in a real browser, including page interactions and Web Vitals metrics | k6 browser | Browser |
If more than one check type can verify what you care about, consider check frequency before you choose. Scripted and browser checks run at most once every 60 seconds, and traceroute checks at most once every 120 seconds, while the other check types run at most once every 10 seconds.
Browser test executions are billed separately from API test executions. The number of probes, execution duration, and check frequency also affect usage. For details, refer to Synthetic Monitoring pricing.
Monitor an endpoint that requires authentication
Which check type you need depends on how your endpoint authenticates requests:
The endpoint uses basic authentication, bearer authentication, or a client certificate. Use an HTTP check. HTTP checks can use managed secrets for basic authentication passwords, bearer tokens, CA certificates, client certificates, and client keys. Refer to HTTP check authentication.
The endpoint uses a sensitive credential in a custom request header. Use a k6 scripted check to read the credential from a managed secret and add it to the request. HTTP checks support custom request headers, but can’t read their values from managed secrets.
Signing in is a request that returns a token or establishes a session cookie. Use a MultiHTTP check. MultiHTTP preserves cookies between requests. To reuse a token, capture it from the response with a variable and send it with later requests. Use a k6 scripted check if the flow needs logic that assertions and variables can’t express.
Signing in means filling in a form in a web page. Use a k6 browser check. A browser check is the only check type that runs a real browser, so it’s the only one that can fill in a sign-in form, wait for the page that loads next, and continue as a signed-in user. For a worked example, refer to Create a k6 browser check.
HTTP, scripted, and browser checks can read supported values from secrets.
How checks run across probes
Every probe you select for a check runs that check independently at every interval. Probes don’t rotate between intervals, so if you select three probes and run a check every minute, the check executes three times per minute, once from each probe.
Each probe run counts as a separate execution for billing, and runs from different locations arrive at your target concurrently.
For details, refer to How probes run checks.
The check form
You configure every check type with the same five-step form. The form uses a consistent step order, but the available options vary by check type.
| Step | Name | What you configure |
|---|---|---|
| 1 | Request, Requests, or Script | The check’s identity and what to test, including the job name, the target, and the folder to store the check in |
| 2 | Uptime | What counts as a successful execution, and the check timeout |
| 3 | Labels | Custom labels and cost attribution labels |
| 4 | Execution | The probe locations to run the check from, and how often it runs |
| 5 | Alerting | Per-check alerts for this check |
The first step is named Request for API Endpoint checks, Requests for Multi Step checks, and Script for Scripted and Browser checks. This step contains the fields for describing the request or writing the script. For API Endpoint checks, it also contains the Request type field, where you choose between HTTP, Ping, DNS, TCP, and Traceroute. Steps 2 through 5 have the same names for every check type.
The form indicates your current step. To move between steps, select a step or use the button labeled with the name of the next step.
Save stores the check and starts running it. It’s available from every step, so you don’t have to reach step 5 to save a check. The tabs next to the form provide additional actions:
- Test runs the check once without saving.
- Secrets selects the secrets the check can use. It appears for HTTP, Scripted, and Browser checks.
- Terraform displays the check as Terraform configuration.
- Docs links to reference documentation.
Check type identifiers
Each check type has an identifier that the REST API, Terraform, check metrics, and the Checks list use:
| Check type | Identifier |
|---|---|
| HTTP | http |
| Ping | ping |
| DNS | dns |
| TCP | tcp |
| Traceroute | traceroute |
| MultiHTTP | multihttp |
| k6 scripted | scripted |
| k6 browser | browser |
The Checks list displays the identifier as each check’s type. The REST API uses it as the key under settings; Terraform uses it as the block name inside settings in a grafana_synthetic_monitoring_check resource; and check metrics use it as the value of the check_name label.
Common options
Each check type has specific options. Enabled, Job name, Target, Probe locations, and Custom labels are the same on every check type. The frequency and timeout ranges in this table apply to DNS, HTTP, MultiHTTP, Ping, and TCP checks. For k6 and traceroute values, refer to k6 scripted checks, k6 browser checks, and traceroute checks.
| Option | Description |
|---|---|
| Enabled | Whether the check is enabled or not. |
| Job name | Refer to the check name. Check metrics include a job label with the value of this option. |
| Target | Target of the check request. Check metrics include an instance label with the value of this option. |
| Probe locations | The locations where the check should run from. Check metrics include a probe label with the value of the probe location running the check. |
| Frequency | The frequency the check should run in seconds. The value can range from 10 to 3600 seconds. Only the sm_check_info metric includes the frequency label. |
| Timeout | Maximum execution time for the check. The value can range from 1 to 60 seconds. |
| Custom labels | (Optional) Custom labels applied to check metrics. Refer to Custom labels for querying instructions. |
Common check metrics
Checks collect the results of the execution and save them as Prometheus metrics.
Each check type produces specific Prometheus metrics with their results. To identify the check type in a query, use the check_name label on sm_check_info, whose values are the check type identifiers. The following is a list of metrics common to all check types.
| Metric | Description |
|---|---|
probe_all_duration_seconds | Returns how long the probe took to complete in seconds (histogram). |
probe_duration_seconds | Returns how long the probe took to complete in seconds. |
probe_all_success | Displays whether or not the probe was a success (summary). |
probe_success | Displays whether or not the probe was a success. |
sm_check_info | Provides information about a single check configuration. |
For the list of additional metrics, refer to the metrics documentation for each check type: DNS metrics, HTTP metrics, k6 browser metrics, k6 scripted metrics, MultiHTTP metrics, Ping metrics, TCP metrics, and Traceroute metrics.
Metric labels
In Prometheus, labels add additional context to the metrics, and can be used for querying and visualizations.
All check metrics include the system labels config_version, instance, job, and probe. Some check options and metric types add labels to provide additional information.
| Option | Label | Metrics |
|---|---|---|
| Check revision | Include a config_version label with the synthetic check configuration revision. | All metrics |
| Job name | Include a job label with the value of this option. | All metrics |
| Target | Include an instance label with the value of this option. | All metrics |
| Probe locations | Include a probe label with the value of the probe location running the check. | All check metrics |
| Frequency | Include a frequency label with the value of this option. | sm_check_info |
| Custom labels | (Optional) Include up to 10 custom labels. Refer to Custom labels for querying instructions. | All check metrics |
The sm_check_info metric also includes static metadata labels such as check_name and geohash. For the complete reference of the labels that Synthetic Monitoring applies to metrics and logs, refer to System labels.
Custom label names can’t collide with the reserved system label names: the API rejects checks that use a reserved name as a custom label. For details, refer to System labels.
Note that each unique metric name and label set creates a new time series.
Was this page helpful?
Related resources from Grafana Labs


