{"record":{"id":"5e12d2ae6e3fe29a","repo":"louislam/uptime-kuma","slug":"failed-result-rawoutput","errorCode":null,"errorMessage":"Failed: ${result.rawOutput}","messagePattern":"Failed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"warning","filePath":"server/monitor-types/globalping.js","lineNumber":118,"sourceCode":"                throw new Error(`Failed to create measurement: ${this.formatTooManyRequestsError(hasAPIToken)}`);\n            }\n            throw new Error(`Failed to create measurement: ${this.formatApiError(res.data.error)}`);\n        }\n\n        log.debug(\"monitor\", `Globalping fetch measurement: ${res.data.id}`);\n        let measurement = await client.awaitMeasurement(res.data.id);\n\n        if (!measurement.ok) {\n            throw new Error(\n                `Failed to fetch measurement (${res.data.id}): ${this.formatApiError(measurement.data.error)}`\n            );\n        }\n\n        const probe = measurement.data.results[0].probe;\n        const result = measurement.data.results[0].result;\n\n        if (result.status === \"failed\") {\n            throw new Error(this.formatResponse(probe, `Failed: ${result.rawOutput}`));\n        }\n\n        if (!result.timings?.length) {\n            throw new Error(this.formatResponse(probe, `Failed: ${result.rawOutput}`));\n        }\n\n        heartbeat.ping = result.stats.avg || 0;\n        heartbeat.msg = this.formatResponse(probe, \"OK\");\n        heartbeat.status = UP;\n    }\n\n    /**\n     * Handles HTTP monitors.\n     * @param {Client} client - The client object.\n     * @param {Monitor} monitor - The monitor object.\n     * @param {Heartbeat} heartbeat - The heartbeat object.\n     * @param {boolean} hasAPIToken - Whether the monitor has an API token.\n     * @returns {Promise<void>} A promise that resolves when the HTTP monitor is handled.","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/louislam/uptime-kuma/blob/6b5ea0155793e666666745fb8d6fef1e829543a2/server/monitor-types/globalping.js#L100-L136","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  await gp.monitor(client, monitor, heartbeat, hasToken);\n} catch (e) {\n  if (/Failed:/.test(e.message)) { heartbeat.status = DOWN; heartbeat.msg = e.message; return; }\n  throw e;\n}","preventionTips":["Treat result.status===\"failed\" as a DOWN heartbeat, not a crash.","Pick a probe location that has network reach to the target."],"tags":["globalping","measurement","down-condition","network","uptime-kuma"],"backgroundTag":null,"analyzedSha":"6b5ea0155793e666666745fb8d6fef1e829543a2","analyzedAt":"2026-08-12T23:42:12.959Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}