DumbMonit

Monitors

Websites, certificates and checks

Web pages and APIs, ports, DNS, ping, TLS certificates, time servers, domain expiry, heartbeats and website changes.

Monitor descriptions and alert rule texts are in English, as in the product. The page labels follow your language.

Website or web API (HTTP)

http

A page or API answers with the right status and content, over a valid certificate.

Examples

  • Website
  • Application health page
  • REST API
  • Self-hosted service interface

What you need

  • Username / passwordSent as HTTP basic authentication.
  • Bearer tokenSent as "Authorization: Bearer …" on every request.

No account needed.

Default port: 443

Built-in alert rules 5

  • WarningService downThe service has not responded correctly for three minutes.
  • AdvisoryService flappingThe service changed state more than six times in thirty minutes (changes(dumbmonit_probe_success{probe!="push"}[30m])).
  • AdvisorySlow serviceThe service takes more than three seconds to respond; failed checks are left out.
  • AdvisoryCertificate expiring soonThe certificate expires in less than fourteen days.
  • WarningCertificate expiredThe certificate has expired.
Setup steps: Monitor a web page
  1. In the address, paste the full URL of the page to monitor.

  2. Prefer a light page such as "/health" or "/status" over the home page.

  3. If the page needs a login, choose a credential: username and password (basic) or a token (Bearer).

  4. Optionally require a keyword in the page or a value in a JSON response, in the options.

Heads-up. Never write a password or a token in the options: use the credential field, which is encrypted.

Documentation

Network port (TCP)

tcp

A port accepts connections: SSH, a file share, a game server, anything without its own probe.

Examples

  • SSH
  • SMB or NFS share
  • Database
  • Game server
  • Network printer

What you need

No account needed.

Built-in alert rules 3

  • WarningService downThe service has not responded correctly for three minutes.
  • AdvisoryService flappingThe service changed state more than six times in thirty minutes (changes(dumbmonit_probe_success{probe!="push"}[30m])).
  • AdvisorySlow serviceThe service takes more than three seconds to respond; failed checks are left out.
Setup steps: Monitor a port
  1. In the address, write the host and the port separated by a colon: "nas.home.lan:22", or "[fd00::1]:445" for IPv6.

  2. Or leave the port out of the address and fill in the "Port" option.

Heads-up. An open port does not prove the application works: for a web service, use the "Website or web API" type.

Documentation

UDP service

udp

Sends a datagram to a UDP port and checks the reply, or that nobody refuses it.

Examples

  • A game or VoIP server
  • A syslog or SNMP listener
  • A WireGuard endpoint
  • A custom UDP service that answers a ping message

What you need

No account needed.

Built-in alert rules 1

  • WarningMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Setup steps: Monitor a UDP service
  1. In the address, write the host and the UDP port: "192.168.1.20:5060". The port is required.

  2. To check that the service really answers, fill in "Datagram to send" and "Expected reply".

  3. Without an expected reply, the check only fails when the host answers that the port is closed.

Heads-up. UDP has no connection: without an expected reply, a firewall that silently drops the datagrams looks healthy.

Documentation

Domain name (DNS)

dns

A name resolves, and points to the address you expect.

Examples

  • Your domain name
  • An internal name served by your Pi-hole or AdGuard
  • An MX record

What you need

No account needed.

Default port: 53

Built-in alert rules 3

  • WarningService downThe service has not responded correctly for three minutes.
  • AdvisoryService flappingThe service changed state more than six times in thirty minutes (changes(dumbmonit_probe_success{probe!="push"}[30m])).
  • AdvisorySlow serviceThe service takes more than three seconds to respond; failed checks are left out.
Setup steps: Monitor a DNS resolution
  1. In the address, write the name to resolve, without "http://": "www.example.com".

  2. Pick another record type in the options if you do not want an IPv4 address (A record).

  3. To monitor your own DNS server, enter its IP address in "DNS server to query".

  4. To detect hijacking, list the addresses the answer must contain in "Expected values".

Heads-up. Give the DNS server by its IP address, not by a name.

Documentation

Reachable host (ping)

ping

A host answers ICMP: response time and packet loss.

Examples

  • Home router or gateway
  • Wi-Fi access point
  • Printer
  • Machine without agent or SNMP
  • Remote host

What you need

No account needed.

Built-in alert rules 3

  • WarningService downThe service has not responded correctly for three minutes.
  • AdvisoryService flappingThe service changed state more than six times in thirty minutes (changes(dumbmonit_probe_success{probe!="push"}[30m])).
  • AdvisorySlow serviceThe service takes more than three seconds to respond; failed checks are left out.
Setup steps: Monitor a host with ping
  1. In the address, write the host name or IP address: "192.168.1.1" or "router.home.lan".

  2. Lower "Tolerated loss" in the options to be warned before the loss is total.

Heads-up. In Docker, keep the sysctls lines of the shipped docker-compose.yml, or the check cannot send pings.

Documentation

TLS certificate

tls

A certificate is valid on any TLS port, with a warning well before it expires.

Examples

  • Mail server (IMAPS, SMTPS)
  • Reverse proxy
  • LDAPS directory
  • MQTT broker
  • Administration interface

What you need

No account needed.

Default port: 443

Built-in alert rules 3

  • WarningService downThe service has not responded correctly for three minutes.
  • AdvisoryCertificate expiring soonThe certificate expires in less than fourteen days.
  • WarningCertificate expiredThe certificate has expired.
Setup steps: Monitor a certificate
  1. In the address, write the host and the port of the encrypted service: "mail.example.com:993" (443 if omitted).

  2. If you reach the service by its IP address, enter the certificate's name in "Server name (SNI)".

  3. For a certificate from your own authority, tick "Accept an unverifiable certificate".

Heads-up. For a website, the "Website or web API" type already reads the certificate: use this type for services that do not speak HTTP.

Documentation

NTP time server

ntp

A time server answers SNTP with a sane clock: offset, delay, stratum and leap indicator.

Examples

  • A router or NAS acting as a local time server
  • An internal NTP server (chrony, ntpd)
  • A public pool server used as a reference

What you need

No account needed.

Default port: 123

Built-in alert rules 3

  • WarningService downThe service has not responded correctly for three minutes.
  • AdvisoryService flappingThe service changed state more than six times in thirty minutes (changes(dumbmonit_probe_success{probe!="push"}[30m])).
  • AdvisorySlow serviceThe service takes more than three seconds to respond; failed checks are left out.
Setup steps: Monitor an NTP server
  1. In the address, write the server's name or IP address: "pool.ntp.org" or "192.168.1.1".

  2. Lower "Tolerated offset" in the options to be warned earlier than 100 ms.

Heads-up. Keep the DumbMonit host itself in sync: its own drift is added to the measured offset.

Documentation

SSH server

ssh

Reads the SSH banner and, if you ask, checks that the host key is still the one you know.

Examples

  • A Linux server or a Raspberry Pi
  • A NAS or a hypervisor with SSH enabled
  • A bastion host
  • A Git server over SSH

What you need

No account needed.

Default port: 22

Built-in alert rules 1

  • WarningMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Setup steps: Monitor an SSH server
  1. In the address, write the host name or IP address, with the port if it is not 22: "server.home.lan:2222".

  2. To be warned when the server's identity changes, read its fingerprint with ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub.

  3. Paste that fingerprint (SHA256:...) in "Expected host key", or tick "Alert when the host key changes" to record it without choosing one.

Heads-up. The check never logs in and does not verify the server's signature: it reads the key the server shows, like ssh-keyscan.

Documentation

gRPC service

grpc

Calls the standard gRPC health check (grpc.health.v1): catches a service that is up but reports itself unhealthy.

Examples

  • A gRPC microservice
  • etcd
  • A service behind Envoy or a service mesh
  • Any server that registers grpc.health.v1

What you need

No account needed.

Default port: 50051

Built-in alert rules 1

  • WarningMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Setup steps: Monitor a gRPC service
  1. Check that the server registers the standard health service (grpc.health.v1.Health): most gRPC frameworks have a one-line helper for it.

  2. In DumbMonit, enter the server with its port, for example grpc.home.lan:50051.

  3. Tick Encrypted connection (TLS) for a server that requires it; the port then defaults to 443.

  4. Optional: name a Service, to check its own health instead of the whole server's.

Heads-up. The check only sees what the health service reports: a server that always answers SERVING proves nothing about the methods behind it.

Documentation

WebSocket endpoint

websocket

Completes the upgrade handshake, and can exchange a frame.

Examples

  • The Home Assistant API
  • A live dashboard
  • A log stream
  • An endpoint behind a reverse proxy

What you need

  • Username / passwordSent as HTTP basic authentication.
  • Bearer tokenSent as "Authorization: Bearer …" on every request.

No account needed.

Default port: 443

Built-in alert rules 5

  • WarningService downThe service has not responded correctly for three minutes.
  • AdvisoryService flappingThe service changed state more than six times in thirty minutes (changes(dumbmonit_probe_success{probe!="push"}[30m])).
  • AdvisorySlow serviceThe service takes more than three seconds to respond; failed checks are left out.
  • AdvisoryCertificate expiring soonThe certificate expires in less than fourteen days.
  • WarningCertificate expiredThe certificate has expired.
Setup steps: Monitor a WebSocket endpoint
  1. In DumbMonit, paste the full endpoint, for example wss://home.example.com/api/websocket (wss is assumed without a scheme).

  2. Optional: fill in Expected content with a fragment of the first frame the server sends by itself.

  3. Optional: if the endpoint says nothing until spoken to, put a message in Frame to send, and what the answer must contain in Expected content.

Heads-up. The check hangs up within a second: a connection that a firewall or proxy cuts after thirty seconds looks healthy here.

Documentation

Heartbeat (push)

push

Your cron job or backup script calls DumbMonit; when it goes quiet, you are told.

Examples

  • Nightly backup script
  • Cron job
  • Home Assistant automation
  • Certificate renewal
  • Database dump

What you need

No account needed.

Built-in alert rules 1

  • AdvisoryHeartbeat missedThe job has not called in within its expected interval plus grace period, or reported a failure itself).
Setup steps: Make the job call in
  1. In the address, write a short label for the job, unique among your heartbeats: "nightly-backup".

  2. Set the expected interval to the job's schedule ("24h" for a nightly job), or give a cron expression and a time zone, then save the monitor.

  3. Copy the URL shown on the monitor page and call it at the end of the job.

    curl -fsS -m 10 --retry 3 https://monit.example.com/api/push/<token>
  4. To time the job, call .../start before it, then .../success or .../fail after it, with its output as the request body. Send an exit code as ?exit_code=2 or as .../2.

  5. To report a failure at once, append ?status=down&msg=... to the URL.

Heads-up. Call the URL at the end of the job, after the part that matters: a call at the top would report a success even when the job fails.

Documentation

Domain expiry

domain

A registered domain, read from its registry over RDAP: days left before expiry, a hold that takes it out of the DNS, a redemption period, and its registrar.

Examples

  • example.com
  • Your company's domain
  • The domain of your mail server

What you need

No account needed.

Built-in alert rules 5

  • AdvisoryDomain expiringThe domain expires in less than 30 days.
  • WarningDomain about to expireThe domain expires in less than 7 days, or has expired.
  • WarningDomain on holdThe registry put the domain in clientHold or serverHold: it is out of the DNS.
  • WarningDomain in redemptionThe domain is in redemptionPeriod, pendingDelete or pendingRestore: it has expired.
  • WarningMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Setup steps: Watch a domain's registration
  1. Enter the registered domain, for example "example.com", not a name under it such as www.example.com.

  2. For an extension the IANA does not list, such as .ch, set "RDAP server" to the registry's address.

    https://rdap.nic.ch/

Heads-up. A domain in clientHold or serverHold is taken out of the DNS: every site and mailbox under it stops.

Documentation

Third-party service status

provider

The public status page of a provider you depend on (Cloudflare, GitHub, Atlassian, AWS…), read as a monitor: it fails when the provider reports an incident, so you hear about it before your users do.

Examples

  • Cloudflare
  • GitHub
  • Atlassian Cloud
  • The AWS Health feed

What you need

No account needed.

Built-in alert rules 1

  • WarningMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Setup steps: Watch a provider's status page
  1. Enter a provider name (cloudflare, github, atlassian, aws, discord, npm…; the full list is in the guide), or the address of a Statuspage page or RSS/Atom feed.

  2. To watch one part of the provider only, enter its name under Component, for example "Workers" or "EC2".

  3. Choose what makes the monitor fail: any degradation, a partial outage or worse, or a major outage only.

Heads-up. The monitor reads what the provider chooses to publish, often minutes after the fact: it complements your own checks and never replaces them.

Documentation

Website health & SEO

website

Know when a website breaks, goes blank, drops out of search engines or changes its title, description or canonical address, for one site or hundreds.

Examples

  • Company website
  • Online shop
  • Customer sites you host
  • Landing pages
  • Blog or documentation

What you need

No account needed.

Default port: 443

Built-in alert rules 2

  • WarningService downThe service has not responded correctly for three minutes.
  • InfoWebsite changedA check of a watched page or site found pages that changed, appeared or disappeared. Each such check is notified and names the pages, under the same alert while it fires; it resolves at the first check that finds nothing new.
Setup steps: Watch a website
  1. In the address, paste the page to check, usually the home page.

  2. Optionally fill in "Expected text" with a phrase the page must always show.

  3. To add many sites at once, import a CSV file from the monitor list.

Heads-up. Only what the server sends is read: for a page drawn by JavaScript, set "Blank page below" to 0.

Documentation

Website changes

webchange

Be told when the content of a page, or of a whole site, changes, with a before/after view of each change.

Examples

  • Pricing or terms page
  • Documentation site
  • Supplier's status or maintenance notice
  • Public announcement page
  • Your own site after a deployment

What you need

No account needed.

Default port: 443

Built-in alert rules 1

  • InfoWebsite changedA check of a watched page or site found pages that changed, appeared or disappeared. Each such check is notified and names the pages, under the same alert while it fires; it resolves at the first check that finds nothing new.
Setup steps: Watch a website for changes
  1. In the address, paste the page to watch, with http:// or https://.

  2. To follow a whole site or section, set "Scope" to "site".

  3. List lines that change at every visit (a clock, a counter) in "Ignore lines", as regular expressions.

  4. For a screenshot of each version, follow the "Screenshots" section of this page.

Heads-up. Only the text the server sends is compared: pages drawn by JavaScript or behind a login are not followed.

Documentation