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.

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.

Appendix: 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)