louislam/uptime-kuma · warning · Error
Failed
Error message
Failed: ${result.rawOutput} What it means
Thrown by the Globalping monitor after a measurement completes with result.status === "failed". The probe executed but reported a failure (network unreachable, DNS failure on the target from the probe, timeout reaching the target). rawOutput carries the probe's verbatim failure log, prefixed with the probe location via formatResponse.
Solutions
- Treat this as a real DOWN condition first; verify the target independently from a third network.
- If the target is up, switch to a different Globalping location/region closer to or reachable from the target.
- For ping failures, confirm ICMP is permitted from the probe's network to the target.
- Read rawOutput for the exact probe-side error to distinguish routing from firewalling.
Defensive patterns
Strategy: try-catch
Try / catch
try {
await gp.monitor(client, monitor, heartbeat, hasToken);
} catch (e) {
if (/Failed:/.test(e.message)) { heartbeat.status = DOWN; heartbeat.msg = e.message; return; }
throw e;
} Prevention
- Treat result.status==="failed" as a DOWN heartbeat, not a crash.
- Pick a probe location that has network reach to the target.
When it happens
Trigger: Target is down or unreachable from the selected Globalping probe; target blocks ICMP for a ping measurement; TCP port closed for a TCP measurement; DNS name does not resolve at the probe. The measurement object itself is well-formed; the measurement outcome is the failure.
Common situations: Monitoring a target that is genuinely down (this is the expected DOWN signal for the monitor). Probe in a region with no route to the target (geo-blocking, firewall). Firewall rules blocking the Globalping probe ASN. ICMP rate-limiting on the target.
Related errors
- Failed to fetch measurement
- Failed to create measurement
- Failed to create measurement
- No Resolver Servers specified. Please specify at least one…
- None of the configured resolver servers could be resolved…
AI-assisted analysis of louislam/uptime-kuma@6b5ea01557 (2026-08-12).
Data as JSON: /api/errors/5e12d2ae6e3fe29a.
Report an issue: GitHub.
Appendix: source
Thrown at server/monitor-types/globalping.js:118
throw new Error(`Failed to create measurement: ${this.formatTooManyRequestsError(hasAPIToken)}`);
}
throw new Error(`Failed to create measurement: ${this.formatApiError(res.data.error)}`);
}
log.debug("monitor", `Globalping fetch measurement: ${res.data.id}`);
let measurement = await client.awaitMeasurement(res.data.id);
if (!measurement.ok) {
throw new Error(
`Failed to fetch measurement (${res.data.id}): ${this.formatApiError(measurement.data.error)}`
);
}
const probe = measurement.data.results[0].probe;
const result = measurement.data.results[0].result;
if (result.status === "failed") {
throw new Error(this.formatResponse(probe, `Failed: ${result.rawOutput}`));
}
if (!result.timings?.length) {
throw new Error(this.formatResponse(probe, `Failed: ${result.rawOutput}`));
}
heartbeat.ping = result.stats.avg || 0;
heartbeat.msg = this.formatResponse(probe, "OK");
heartbeat.status = UP;
}
/**
* Handles HTTP monitors.
* @param {Client} client - The client object.
* @param {Monitor} monitor - The monitor object.
* @param {Heartbeat} heartbeat - The heartbeat object.
* @param {boolean} hasAPIToken - Whether the monitor has an API token.
* @returns {Promise<void>} A promise that resolves when the HTTP monitor is handled.View on GitHub (pinned to 6b5ea01557)