louislam/uptime-kuma · error · Error

Unknown Monitor Type

Error message

Unknown Monitor Type

What it means

The terminal else of the beat-loop type switch. When monitor.type matches none of the built-in types and is absent from monitorTypeList, the monitor cannot execute and throws.

Source

Thrown at server/model/monitor.js:902

                    let startTime = dayjs().valueOf();

                    bean.msg = await kafkaProducerAsync(
                        JSON.parse(this.kafkaProducerBrokers),
                        this.kafkaProducerTopic,
                        this.kafkaProducerMessage,
                        {
                            allowAutoTopicCreation: this.kafkaProducerAllowAutoTopicCreation,
                            ssl: this.kafkaProducerSsl,
                            clientId: `Uptime-Kuma/${version}`,
                            interval: this.interval,
                            connectionTimeout: this.timeout,
                        },
                        JSON.parse(this.kafkaProducerSaslOptions)
                    );
                    bean.status = UP;
                    bean.ping = dayjs().valueOf() - startTime;
                } else {
                    throw new Error("Unknown Monitor Type");
                }

                if (this.isUpsideDown()) {
                    bean.status = flipStatus(bean.status);

                    if (bean.status === DOWN) {
                        throw new Error("Flip UP to DOWN");
                    }
                }

                retries = 0;
            } catch (error) {
                if (error?.name === "CanceledError") {
                    bean.msg = `timeout by AbortSignal (${this.timeout}s)`;
                } else {
                    bean.msg = error.message;
                }

View on GitHub (pinned to 6b5ea01557)

Solutions

  1. Confirm the monitor type is supported by your installed Uptime Kuma version
  2. If the type comes from a plugin, ensure the plugin is enabled and loaded
  3. Correct the type via the UI, or recreate the monitor; fix the DB row if it was hand-edited
Defensive patterns

Strategy: validation

Validate before calling

const known = new Set(["http","keyword","json-query","push","ping","docker","kafka-producer", ...Object.keys(UptimeKumaServer.monitorTypeList)]);
if (!known.has(monitor.type)) throw new Error(`Unsupported monitor type: ${monitor.type}`);

Type guard

function isKnownMonitorType(type) {
  return [
    "http","keyword","json-query","push","ping","docker","kafka-producer"
  ].includes(type) || type in UptimeKumaServer.monitorTypeList;
}

Prevention

When it happens

Trigger: A monitor row whose type column is null, empty, or an unrecognized string.

Common situations: DB row edited manually; monitor created by a newer Uptime Kuma version then opened in an older one; a plugin monitor type whose plugin failed to load.

Related errors


AI-assisted analysis of louislam/uptime-kuma@6b5ea01557 (2026-08-12). Data as JSON: /api/errors/6c146107381f5d6d. Report an issue: GitHub.