Check error reference
Every failure code a Glowo check can report, what it means, and what to do about it.
When a check fails, the heartbeat records a code explaining why. This page lists all 36 of them.
The codes fall into two families, and telling them apart saves a lot of time:
- Configuration errors mean the monitor is wrong. Glowo never even got to make the request. Fix the monitor.
- Everything else means the request happened and something went wrong. Fix the service, the network, or the certificate.
Configuration
| Code | What it means |
|---|---|
INVALID_CONFIG |
The monitor configuration is malformed and could not be parsed. Please review the monitor settings. |
INVALID_SCHEME |
The monitor URL uses a scheme that is not allowed. Only http, https, ws, and wss are supported. |
MISSING_URL |
No URL was provided for this monitor. A valid URL is required to perform the check. |
MISSING_HOST |
No hostname was provided for this monitor. A valid host is required to perform the check. |
MISSING_PORT |
No port was specified for this monitor. A valid port number is required for TCP connections. |
TARGET_BLOCKED |
The target resolves to a private, loopback, or cloud-metadata address. Public hosts only — internal targets are blocked for security. |
PAYLOAD_TOO_LARGE |
The configured request body exceeds the 1 MiB limit. Reduce the body size or split the payload. |
Network and connection
| Code | What it means |
|---|---|
CONNECTION_CLOSED |
The remote server closed the connection before sending a complete response. This typically indicates the server dropped the connection unexpectedly. |
CONNECTION_REFUSED |
The connection was actively refused by the target host. The server may be down, the port may be closed, or a firewall is blocking the request. |
CONNECTION_TIMEOUT |
The connection attempt timed out before a response was received. The server may be unreachable or experiencing high latency. |
REQUEST_TIMEOUT |
The request exceeded the configured timeout limit. The server took too long to respond. |
REQUEST_CANCELED |
The check was cancelled before completing — typically because the checker is shutting down. The next run will retry. |
DNS_LOOKUP_FAILED |
DNS resolution failed for the target hostname. The domain may not exist, or the DNS server is unreachable. |
NETWORK_ERROR |
A network-level error occurred while attempting to reach the target. Check that the host is accessible and no infrastructure issues are present. |
REDIRECT_LIMIT |
The request exceeded the maximum number of allowed redirects. This may indicate a redirect loop on the target server. |
TLS
| Code | What it means |
|---|---|
TLS_HANDSHAKE_FAILED |
The TLS/SSL handshake could not be completed. The server may not support HTTPS, or there is a protocol version mismatch. |
TLS_CERT_ERROR |
The server’s TLS certificate is invalid. It may be self-signed, expired, or issued for a different domain. |
TLS_CERT_EXPIRED |
The server’s TLS certificate has expired and is no longer valid. The certificate must be renewed. |
TLS_NO_CERTIFICATES |
The server did not present any TLS certificates during the handshake. Verify that TLS is correctly configured on the target. |
HTTP
| Code | What it means |
|---|---|
REQUEST_BUILD_ERROR |
The HTTP request could not be constructed. The URL or request parameters may be malformed. |
UNEXPECTED_STATUS |
The server returned an HTTP status code outside the expected range. Review the expected status codes in the monitor configuration. |
BODY_MISMATCH |
The response body did not match the configured assertion. The expected content was not found in the response. |
BODY_SCHEMA_MISMATCH |
The response body did not conform to the configured JSON Schema. The response structure differs from the expected schema. |
DNS
| Code | What it means |
|---|---|
DNS_UNSUPPORTED_TYPE |
The specified DNS record type is not supported. Use a standard type such as A, AAAA, CNAME, MX, TXT, NS, or SRV. |
DNS_QUERY_FAILED |
The DNS query could not be executed. The nameserver may be unreachable or the query timed out. |
DNS_RCODE_ERROR |
The DNS server returned an error response code. The domain may not exist (NXDOMAIN) or the server encountered an internal failure. |
DNS_NO_RECORDS |
The DNS query succeeded but returned no records for the requested type. The record may not be configured on the domain. |
DNS_VALUE_MISMATCH |
The DNS records returned do not match the expected value configured in the monitor. The DNS configuration may have changed. |
WebSocket
| Code | What it means |
|---|---|
WS_SEND_FAILED |
Failed to send a message over the WebSocket connection. The connection may have been interrupted after the handshake. |
WS_RECV_FAILED |
Failed to receive a message from the WebSocket server. The server may not have responded, or the connection was dropped. |
WS_MESSAGE_MISMATCH |
The WebSocket response did not contain the expected message content. The server may have returned unexpected data. |
gRPC
| Code | What it means |
|---|---|
GRPC_UNAVAILABLE |
The gRPC endpoint is unavailable. The server may be down, restarting, or unreachable over HTTP/2. |
GRPC_HEALTH_NOT_SERVING |
The gRPC health service reported NOT_SERVING. The server is reachable but declares itself unhealthy. |
GRPC_HEALTH_UNKNOWN_SERVICE |
The gRPC health service does not know the requested service name. Verify the service name, or leave it empty to check overall server health. |
GRPC_HEALTH_UNIMPLEMENTED |
The server does not expose the standard gRPC health service (grpc.health.v1). Switch the monitor’s check mode to connectivity to monitor this endpoint. |
GRPC_ERROR |
The gRPC health check failed with an unexpected status. Review the detailed error message for the status code returned by the server. |
Ping (ICMP)
| Code | What it means |
|---|---|
ICMP_RESOLVE_FAILED |
Could not resolve the hostname to an IP address for the requested protocol version. Verify the host and IP version settings. |
ICMP_LISTEN_FAILED |
Failed to open a socket for ICMP communication. Ensure the host kernel allows unprivileged ICMP (sysctl net.ipv4.ping_group_range). |
ICMP_SEND_FAILED |
Failed to send the ICMP echo request packet. A network-level error prevented the packet from being transmitted. |
ICMP_RECV_FAILED |
No ICMP echo reply was received within the timeout period. The host may be unreachable, or ICMP is blocked by a firewall. |
Other
| Code | What it means |
|---|---|
UNKNOWN_ERROR |
An unexpected error occurred during the check. Review the detailed error message for additional context. |
The three you will actually see most
TARGET_BLOCKED — the target resolved to a private, loopback, or
cloud-metadata address. This is a deliberate security boundary, not a bug:
Glowo will not be used to probe internal networks. To watch something that is
only reachable privately, use a push monitor driven from
inside that network.
TLS_CERT_EXPIRED — almost always an automated renewal that stopped
working weeks ago and went unnoticed. Check the renewal job itself, not just the
certificate.
UNEXPECTED_STATUS — often the monitor is wrong rather than the service.
An endpoint that legitimately returns 401 or 403 to an unauthenticated probe
needs those codes listed in expectedStatusCodes on the
HTTP monitor.
Reading a failure properly
- Check whether all regions failed. One region failing while seven succeed is a network path problem, not an outage. See Regions.
- Open the heartbeat. It carries the code, the message, and the timing breakdown — DNS, connect, TLS and total.
- Compare against the last success. A latency cliff before the failure points at resource exhaustion; an instant failure points at something refusing connections.