louislam/uptime-kuma · warning · Error
Failed: ${result.rawOutput}
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.
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)
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 (${res.data.id}): ${this.formatA
- Packet size must be between ${PING_PACKET_SIZE_MIN} and ${PI
- No Resolver Servers specified. Please specify at least one r
- None of the configured resolver servers could be resolved to
- Failed to create measurement: ${this.formatTooManyRequestsEr
AI-assisted analysis of louislam/uptime-kuma@6b5ea01557 (2026-08-12).
Data as JSON: /api/errors/5e12d2ae6e3fe29a.
Report an issue: GitHub.