
How to perform HTTP checks in Grafana Cloud Synthetic Monitoring
Your users should not be the first to know when your application goes down. When HTTP endpoints fail or respond sluggishly, users experience timeouts, connection errors, and degraded performance — often without clear indication of the root cause.
This is where HTTP checks in Grafana Cloud Synthetic Monitoring come in, allowing you to proactively monitor your endpoints, verify they're online, measure response times, and ensure they're returning the correct status codes. This helps you catch HTTP connection errors before they lead to application failures, ensuring your users have a reliable experience.
In this blog post, we'll walk through how HTTP checks work and show you how to create one using Grafana Cloud Synthetic Monitoring. You can also learn more by watching the video below.

What is an HTTP check?
Synthetic Monitoring allows you to proactively monitor the performance of your applications and services from public and private probes located around the world. It allows you to set up a variety of checks, including ping checks, browser checks, scripted checks, DNS checks, and HTTP checks.
HTTP checks are one of the simplest ways to validate that your HTTP endpoints are available and responding correctly. Behind the scenes, HTTP checks work by sending requests to any HTTP or HTTPS endpoint to measure uptime, track response latency, and capture errors. These checks can also be configured for more advanced tests, like if a site is using a specific version of SSL for SSL certificate expiration, or if HTTP automatically redirects to HTTPS.
When an endpoint doesn't respond or returns unexpected status codes, HTTP checks in Grafana Cloud Synthetic Monitoring can immediately detect these issues and alert the appropriate team members. The key benefits of HTTP checks include:
- Real-time endpoint monitoring: Identify availability, responsiveness, and latency issues from multiple global locations before they impact users.
- Comprehensive validation: Validate returned status codes, response headers, and response bodies using regular expressions.
- Global endpoint validation: Test HTTP endpoints from over 20 managed locations around the world or from private probes within your own network.
Run an HTTP check
Let's walk through setting up an HTTP check in Grafana Cloud Synthetic Monitoring. This process involves a few key configuration steps.
1. Create a Grafana Cloud account
If you don't already have one, sign up for a free Grafana Cloud account.
2. Navigate to Synthetic Monitoring
In the Grafana Cloud UI, go to Testing & synthetics to access tools for performance testing and optimization.

3. Select Synthetic Monitoring and create a check
Next, click Synthetics and choose Create check. You'll notice you have several options for HTTP checks, so you’ll want to select the best one for your use case. If you want to hit multiple steps, for example, choose Multi Step. If you want to run a scripted browser check, choose Scripted. For this example, we will select API Endpoint, which is a great option if you want to hit just one endpoint.

4. Add a request
Next, provide a Job name. We'll use the name QuickPizzaApp:HTTP. We recommend using the format SERVICENAME: CHECK_TYPE to stay organized.
For our request type, we'll select HTTP, and for the request target, we'll select GET and enter https://quickpizza.grafana.com/.

When specifying your request target, you can include additional options by selecting Request Options. This is where you can add settings related to redirects, a body for the request, authentication, specific TLS options, and more.
Note: If you choose to add a request body, the body size is limited to 64KB. Checks that exceed this limitation return the error message: "Something went wrong running the check, unexpected EOF."
5. Define uptime criteria
With our HTTP check added, we'll specify the validation criteria we are expecting.
- Valid status codes: We'll leave this blank, which defaults to any 200 status code.
- Valid HTTP versions: We'll leave this blank, but if you want the HTTP check to only verify a specific HTTP version (e.g., HTTP/1.0, HTTP/1.1, or HTTP/2), you can specify it in this section.
- SSL options: We'll choose to ignore SSL certification for this example, but this section is where you can check if an SSL certificate is present or not.
- Timeout: We'll also specify the maximum execution time for this check. If the check takes longer than this period to run, the check will be marked as failed. For this example, we'll choose 3 seconds.

6. Add labels
Labels help you organize and filter your checks. Adding a label makes it easier to segment results by environment or use case in the future. For this example, we'll use the labels name:quickpizza and env:test.
7. Choose a probe location
Synthetic Monitoring offers access to more than 20 globally distributed probe locations. For this example, we'll select Montreal, Jakarta, and Stockholm. We advise that you choose the locations closest to your users or infrastructure to best reflect their experience.

You can also set up a private probe if needed, but we'll stick to public probes for this example.
8. Set your test frequency
Determine how frequently you want your HTTP check to run. We will choose a one-minute interval, so our check will run every minute.

The dashboard displays estimated monthly executions based on your frequency and probe count. With three probes running every minute, you'll execute approximately 129,600 checks per month.
9. Create alerts
To take full advantage of your check, it is important to set up alerts. When metrics deviate from expected performance, you can trigger necessary actions based on those metrics.
You have two alerting options: per-check alerts or legacy alerts. We recommend per-check alerts, which allow you to create alerts based on the number of check failures or TLS certificate failures, or latency thresholds in a specific time window.

We'll create all three types of per-check alerts:
- Failed check alert: With three probe locations sending one request every minute, you'll generate 15 requests every 5 minutes. For this example, we'll choose 3 of 10 executions that fail in the last 5 minutes as the threshold to get alerted.
- TLS certificate alert: We'll enable an alert if the target's certificate expires in less than 7 days.
- Latency alert: We'll enable an alert if latency exceeds 200ms over the last 5 minutes.
10. Save and run the check
Click Save to initiate the HTTP check. Grafana Cloud will begin executing based on your configuration. You can also click the Test button to validate the check before saving.
Visualize the check results
After letting our HTTP check run for a few hours, it's time to review the results. Grafana Cloud Synthetic Monitoring provides a preconfigured dashboard for each check, giving you access to key insights.
On this dashboard, you'll find important metrics like uptime, reachability, average latency, SSL expiry, and frequency.

As you scroll through the dashboard, you'll find additional charts that offer deeper visibility, including response latency broken down by phase (DNS lookup, TCP connection, TLS handshake, time to first byte, and content transfer) and response latency by probe location. All data and visualizations are updated in real time as the test continues to run, enabling continuous performance monitoring and faster issue detection.
Wrapping up
HTTP checks are an important way to verify endpoint availability and performance before issues impact your users. By leveraging Grafana Cloud Synthetic Monitoring, you can easily implement, monitor, and manage HTTP checks to ensure the reliability of your most critical services.
To learn more about Synthetic Monitoring, please refer to our technical docs. You can also explore this dashboard on Grafana Play, which features example checks.
Grafana Cloud is the easiest way to get started with synthetic monitoring. We have a generous free tier that includes 100k test executions per month and more. Sign up for free now!