Uptime Monitors
Monitor your websites, APIs, and services with HTTP checks and get instant alerts when they go down.
Uptime monitors continuously check the health of your web services by sending HTTP requests at regular intervals. When a monitor detects that your service is down or responding with unexpected status codes, it automatically creates an incident and sends you alerts.
Each monitor has a protocol. HTTP, DNS, TCP, gRPC, and UDP can be created. TCP and TCP/TLS are the same protocol, tcp. TLS is a boolean on that monitor, not a separate protocol. Omitting the protocol creates an HTTP monitor, and the protocol cannot be changed later. The canonical target for an HTTP monitor is its URL. A DNS monitor queries a public DNS name for an A, AAAA, or CNAME record using each zone's resolver. Optional expected values must all be present: order and duplicates are ignored, hostnames are case-insensitive and ignore a trailing dot, and IP addresses are exact. NXDOMAIN, SERVFAIL, timeout, and an empty record set fail the target. The canonical target is the DNS name plus the record type. For TCP it is host:port, with TLS when the handshake is required. For gRPC it is host:port, plus the service name when one is set. For UDP it is host:port. Targets must be public addresses: private, loopback, link-local, and reserved networks are rejected when you save the monitor and again before each check. A private address in a DNS answer is a result, not a connection. The default timeout is 10 seconds (1–30). One attempt is made per zone. A check that gets no target result from any zone is saved as inconclusive: it stays visible, and it does not change status, uptime, or incidents.
TCP and TCP/TLS
A TCP monitor opens one connection to a public host and port. It is up when that connection is established within the timeout. Turn on TLS when the service must also complete a handshake with a valid trust chain and a hostname check against the system trust store. The server name (SNI) defaults to the target hostname and is required when the target is an IP address and TLS is on. All ports to public destinations are allowed.
There is no payload, banner match, or retry, and no separate SSL incident. Connection refused, timeout, DNS errors, and invalid TLS are target failures. A worker fault stays inconclusive, so it does not mark the target down. Alerts, incidents, the status page, the badge, and the event stream report the cause and the failed zones. They do not include a payload or secrets. Useful certificate details (issuer, subject, and not-after) are stored on the check.
gRPC Health
A gRPC monitor calls grpc.health.v1.Health/Check once per zone. It is up only when the status is SERVING. Any other health status, a timeout, a transport error, or invalid TLS is a target failure. TLS is a boolean on the same grpc protocol, not a separate protocol. It checks the trust chain and hostname with the system trust store. The authority (SNI) is optional. When it is empty, SNI defaults to the hostname. The service name is optional: an empty name checks the server, and a name checks that service.
There is no metadata, authentication, arbitrary RPC, or separate SSL incident. A worker fault stays inconclusive and does not mark the target down. Alerts, incidents, the status page, the badge, and the event stream report the health status, the cause, and the failed zones. They do not include metadata or secrets. The check stores the health status, latency, error, and outcome.
UDP
A UDP monitor sends one datagram to a public host and port and waits for one reply. The payload is either text (UTF-8 bytes) or hex (decoded bytes), at most 256 bytes after decoding. The expected response is a pattern of 1–256 bytes, compared exactly or as a substring. The check is up only when a reply arrives within the timeout and matches. No reply is a target failure. A reply larger than 1024 bytes is a target failure and is not stored. There is no second datagram, retry, or session.
Mismatch, timeout, and an oversized reply are distinct target failures. A worker fault stays inconclusive and does not mark the target down. Private, loopback, link-local, and reserved addresses are rejected when you save the monitor and again after DNS resolution. Alerts, incidents, the status page, the badge, and the event stream report the cause and the failed zones. They do not include the payload or the reply. The check stores the comparison mode, payload length, latency, error, and outcome.
Uptime monitors are perfect for monitoring websites, APIs, health check endpoints, and any HTTP-accessible service.
Creating Your First Monitor
Navigate to Monitors
In your Upcron.io dashboard, go to the Monitors section within your project.
Add New Monitor
Click "Create Monitor" and fill in:
- Monitor Name — A descriptive name (e.g., "Production API")
- URL — The endpoint to monitor (e.g.,
https://api.example.com/health) - Project — Select the project this monitor belongs to
Configure Settings
- HTTP Method — GET, POST, PUT, PATCH, DELETE, or HEAD
- Valid HTTP Codes — Which status codes indicate success (default:
[200]) - Basic Authentication — Username/password if your endpoint requires it
- Active Status — Enable or disable the monitor
Save and Start Monitoring
Click "Create Monitor" to save and start monitoring immediately.
Monitor Configuration
HTTP Methods
Choose the appropriate HTTP method for your endpoint:
- GET — Most common method for health checks and status endpoints
- POST — Useful for APIs that require data submission to check health
- HEAD — Lightweight option that only checks headers without downloading the full response
Valid HTTP Status Codes
Configure which HTTP status codes should be considered successful responses. The check compares the final response status against this list:
// Standard Web Service
[200]
// API with Multiple Success Codes
[200, 201, 202]
// Redirecting Service
[200, 301, 302]
How redirects are handled
- Redirects are followed automatically (up to 5) before the status is evaluated
- Web pages:
[200] - APIs:
[200, 201, 202] - Redirecting services: add
[301, 302]only when the final response keeps returning a redirect status
Basic Authentication
For endpoints that require basic HTTP authentication, enable the option in your monitor configuration, enter your credentials (encrypted and stored securely), then save and verify.
Credentials are encrypted and stored securely. Never share your monitor configuration files with sensitive authentication data.
Check mode
Each monitor has a check mode: round robin (the default) or parallel.
- Round robin — every check runs from exactly one selected zone, rotating in a fixed order. You may select any number of available zones. Consensus threshold and partial down do not apply. If a zone fails the target, Upcron immediately confirms from the next zone in the same check before marking the monitor down.
- Parallel — every check runs from all selected zones at once (at most four). Health uses the consensus threshold and may be partial down. How many parallel monitors you can have depends on your subscription plan; the parallel quota is a subset of your total monitor limit.
Multi-Zone Monitoring
Each monitor runs its checks from one or more geographic zones. Choose zones representative of your users so an outage that only affects one region does not silently stay undetected, or ignore local network issues that affect a single zone.
Available zones
| Slug | Location |
|---|---|
eu-fra1 | EU — Frankfurt |
us-east-1 | US East — Virginia |
us-west-2 | US West — Oregon |
eu-west-1 | EU — Ireland |
ap-southeast-1 | Asia Pacific — Singapore |
ap-northeast-1 | Asia Pacific — Tokyo |
ap-south-1 | Asia Pacific — Mumbai |
sa-east-1 | South America — São Paulo |
Selected zones
For parallel monitors, select between 1 and 4 zones. For round robin monitors, you may select any available zones. The default selection is eu-fra1. Only the selected zones run the checks and participate in the result; zones without an available worker endpoint are hidden from the selector so they cannot cause false failures.
Consensus threshold
On parallel monitors, a check is evaluated against the consensus threshold: the percentage of selected zones that must fail for the monitor to be considered down. Below that percentage the monitor is marked partially down (degraded) rather than fully down.
For example, with four zones and a threshold of 50%, two or more failed zones mark the monitor down, while a single failed zone keeps it partially down. Round robin monitors ignore this setting.
Multi-zone tips
- Use at least two zones for production services with a global audience
- Keep a single zone if your service is intentionally regional
- A monitor in partial down still opens incident context: check the per-zone results before resolving
SSL monitoring
For HTTPS monitors, Upcron also checks the TLS certificate during the check and records its state on the monitor: certificate status (valid, expiring or expired) and expiration date.
- The SSL exp. column on the monitors list shows the certificate expiration for each monitor
- When a certificate is expiring or expired, an SSL incident is opened (typed separately from uptime incidents, also visible with the other incident types)
- SSL checks are skipped while the monitor is in a maintenance window
Currently Upcron stores the certificate status and expiration date. A full certificate snapshot (issuer, validity window) is planned separately — see UPC-165.
Monitor Status
Up (Active)
Monitor is active and the last check was successful.
Down
Failure detected — incident created and alerts sent.
Inactive
Monitor is disabled and not performing checks.
Unknown
Not checked yet or status is being determined.
Best Practices
Choose the Right Endpoints
Monitor endpoints that are critical to your service functionality:
# Good endpoints to monitor
https://api.example.com/health
https://example.com
https://api.example.com/status
# Avoid monitoring
# Internal admin pages
# Endpoints with side effects
# Pages that require user interaction
Organize with Projects
- Production — Critical production services
- Staging — Development and testing environments
- Third-party — External services you depend on
- Infrastructure — Database, cache, and infrastructure endpoints
Use Descriptive Names
Choose clear, descriptive names: "Production API Health Check", "Website Homepage", "Payment Gateway Status" — not "Monitor 1" or "Test".
Dashboard Overview
Your monitor dashboard shows:
- Current Status — Up/Down status for each monitor
- Uptime Percentage — Calculated uptime over time
- Last Checked — When the monitor was last verified
- Incident Count — Number of incidents in the last 30 days
- Response Time — Average response times
Uptime is calculated as: (Successful checks / Total checks) × 100
App screens reference
Monitors list
The Monitors page lists the monitors of the current project with a filter tab, search and per-page pagination:
| Column | Meaning |
|---|---|
| Status | Current health (up / partial down / down) and tags such as In maintenance during an active maintenance window |
| Service | Monitor name and the HTTP method used by checks (e.g. HTTP GET) and frequency label |
| URL | The target URL being checked |
| Uptime 30d | Uptime percentage over the last 30 days |
| Last 50 checks | Mini history of the most recent check results |
| SSL exp. | Certificate expiration date (when SSL is available) |
| Latency | Most recent response time |
Create / edit monitor form
Fields available when creating or editing a monitor:
| Field | Description |
|---|---|
| Name | Descriptive monitor name |
| URL | The HTTP(S) endpoint to check |
| HTTP method | GET, POST, PUT, PATCH, DELETE or HEAD |
| Check frequency | How often checks run (may be limited by the subscription plan, with an upgrade prompt) |
| Valid HTTP codes | Status codes considered successful |
| Check mode | Round robin (default) or parallel (plan-limited) |
| Check zones | Geographic zones used by the checks (max 4 when parallel; any available when round robin) |
| Failure threshold | Parallel only: consensus percentage of zones that must fail for the monitor to be down (partial down below it) |
| Basic auth | Username/password for endpoints that require it |
| HTTP headers / Cookies / Request body | Optional request customization (headers, cookies, raw body) |
Monitor detail
The detail page shows the current state, key numbers and the last check breakdown:
- KPIs — State, Uptime (30d), Average latency (24h), Incidents (90d)
- Actions — Pause/Resume, Edit, Run check (manual check with result flash)
- Timeline — response time series of recent checks
- Per-zone results — one row per zone with HTTP, DNS, TTFB, connection, total time, duration, start time and message
- Export — CSV export of check data; Created at shown in the header
Firewall & bot protection (Cloudflare)
Checks run from geographic zone workers and identify themselves with the User-Agent Upcron/1.0 (https://upcron.io). If your site is protected by Cloudflare, Bot Fight Mode or Super Bot Fight Mode can block our worker until it is approved from your dashboard.
- Allow the User-Agent — in Cloudflare, open Security → Bots → Super Bot Fight Mode and allow the value
Upcron/1.0 (https://upcron.io). - Or use a WAF custom rule — create a rule that bypasses bot management when the User-Agent equals
Upcron/1.0 (https://upcron.io). - Re-check the monitor — pause and resume the monitor, or wait for the next scheduled check, to confirm the block is gone.
For origin firewalls that allow only specific IPs: zone egress addresses are cloud-managed and can change. Contact [email protected] for current egress details and see the Monitoring Bot page for the full technical breakdown.
Troubleshooting
Checks are blocked by Cloudflare / bot protection
- Allowlist the User-Agent
Upcron/1.0 (https://upcron.io)in Super Bot Fight Mode - Create a WAF custom rule that bypasses bot management for that User-Agent
- For IP-based firewalls, ask [email protected] for current zone egress details
Monitor shows down but service is actually up
- Check if your valid HTTP codes include the status your service returns
- Verify the URL is correct and accessible from external networks
- Check if basic authentication credentials are correctly configured
- Ensure your service isn't blocking Upcron.io's monitoring requests
Getting too many false positive alerts
- Add additional valid HTTP status codes (like 200, 201, 202)
- Since redirects are followed automatically, add 301/302 only if the final response keeps returning a redirect status
- Consider monitoring a more stable endpoint (like
/healthinstead of/) - Check if your service has intermittent issues that need addressing
Basic authentication not working
- Verify the username and password are correct
- Test authentication manually with curl
- Check if your service requires additional headers
- Ensure the authentication endpoint matches your monitor URL