Skip to content

Migrate · RealUptime Monitor

Migrate from Gatus

Gatus is a tidy self-hosted health dashboard driven by one YAML file. What it does not do is check from more than one place: every check runs from the one machine Gatus is on, and its most-wanted open feature request is a distributed deployment that would change that. If you want each endpoint read from several regions, with a hosted status page and no server to run, the importer below takes your config.yaml as it is.

Every RealUptime comparison

Already have a RealUptime account? Open Import from another service and bring your monitors across with the CSV import.

Rather send us the list? Email it to support@realuptime.io and we will import it within 48 hours.

Upload your config.yaml

In your dashboard, open Import from another service and upload your config.yaml under Import from Gatus. The importer reads the endpoints and external-endpoints lists and nothing else, so alerting settings, webhook URLs and push tokens in the file are ignored and never kept. If your configuration is split across several files, upload each one.

Review what each endpoint becomes

The preview lists every endpoint with what it becomes. HTTP endpoints become HTTP checks at their own interval (Gatus's default is 60 seconds), tcp:// endpoints become TCP checks, and DNS endpoints become DNS checks for A, AAAA, CNAME, MX, TXT and NS records. A [BODY] == pat(*text*) condition becomes a body assertion. Other conditions, such as JSONPath or response time, are counted in the preview so you can rebuild them. The group name is kept at the front of each check's name. Imports count against your plan's monitors, 10 on Free.

Point pushed results at heartbeats

An external endpoint with a heartbeat.interval becomes a heartbeat monitor here. Its Gatus token is a credential and is never read, so each heartbeat gets a new ping URL, shown once on the result screen. Change the job that pushed to Gatus to request that URL, and add /fail to report a failed run at once. External endpoints with no heartbeat interval have nothing to alert on, so they are listed for you to set up with the interval you want.

Know what cannot be checked from outside

Checks run from four regions on Free, eight on Pro, all ten on Business, all on the same run, so a failure in one place shows as one region rather than as your whole service being down. That also means an endpoint on a private or LAN address cannot be reached, and the importer refuses it and names it. Keep Gatus for the inside of your network, or install the server agent, which reports outward and needs no open port.

Feature mapping

Gatus endpoints, mapped to RealUptime Monitor

What the importer creates from each kind of Gatus endpoint, by the names in Gatus's own configuration reference.

endpoints with an http:// or https:// url

http check, imported · Have

Name, group, URL and interval carry over. Non-GET methods come across as GET, and the preview says so.

[BODY] == pat(*text*)

Body assertion, imported · Have

Status conditions meaning 2xx are already the default. JSONPath, response time and certificate conditions are set by hand.

endpoints with a tcp:// url

tcp check, imported · Have

endpoints with dns.query-name and dns.query-type

dns check, imported · Partial

A, AAAA, CNAME, MX, TXT and NS. Queries go to our resolvers rather than the server named in the url.

icmp:// endpoints

ping check, rebuilt by hand · Partial

Listed as skipped in the preview.

external-endpoints with heartbeat.interval

heartbeat with a new ping URL, imported · Have

ssh, starttls, tls, udp, websocket and other schemes

Some have their own check types; rebuild by hand · Partial

Listed as skipped with the scheme shown.

One location per Gatus instance

Several regions on every run · Have

Gatus issue 64, Distributed Deployment Configuration, is open with 90 reactions.

The account comes with all four products. RealUptime Monitor runs the imported checks, with a REST API, Terraform provider and CLI on every plan, and RealUptime Status publishes them on a hosted page with subscribers. RealUptime Errors catches the exceptions an uptime check cannot see, free for 10,000 events a month. RealUptime Outages tracks the vendors you depend on and needs no account. One signup provisions the free tier of each, with no card.

Verified November 1, 2026. Sources: Gatus README: Configuration and Conditions, Gatus issue 64: Distributed Deployment Configuration.

Ready to move your checks over?

For the full, sourced pricing and feature comparison against Gatus, see Every RealUptime comparison. For why a check should run from more than one region at all, see why a status page can show all green during a real outage.