What you need
- Multimeter for macOS 13 or later, $19.99 once.
- A status page in Uptime Kuma with your monitors on it (Status Pages, New Status Page). Its slug is the last part of its address.
Set it up
- Look at the status page’s data in Terminal. The keys under
uptimeListare monitor ids with_24for 24 hours:Terminalcurl -s http://kuma.local:3001/api/status-page/heartbeat/home - For one monitor’s uptime, add a Web Address meter with that address and the key path
uptimeList.1_24(use your monitor’s id). - Set the range to 0.9 to 1 so small dips show, and alerts on Low values: warning 0.99, critical 0.95.
Multimeter settings
In Customize This Meter… (from the meter’s menu):
| Setting | Value |
|---|---|
| Source | Web Address |
| Web address | http://HOST:3001/api/status-page/heartbeat/SLUG |
| Key path | uptimeList.MONITORID_24 |
| Refresh every | 1 minute |
| Range | 0.9 to 1 |
| Alerts | Low values: warning 0.99, critical 0.95 |
| Label | the service, like NAS |
| Face | Ring, Plant or Gradient Track |
Tested: Run on October 29, 2026 against Uptime Kuma 1.23 in Docker with two monitors: uptimeList.1_24 returned 1, and the down count below returned 1 for the monitor pointed at a missing page.
More on this source, including every format it reads, in the Web Address guide.
Limits
- The uptime is a fraction from 0 to 1, not a percentage.
Variations
How many monitors are down
A Script meter that counts monitors whose last check failed. Alerts on High values: critical at 1.
curl -s -m 5 http://kuma.local:3001/api/status-page/heartbeat/home | jq '[.heartbeatList[] | last | .status] | map(select(. != 1)) | length'From the metrics endpoint instead
Uptime Kuma’s /metrics uses an API key as the password (Settings, API Keys). This counts monitors that are down:
curl -s -m 5 -u ":$(security find-generic-password -s uptime-kuma -w)" http://kuma.local:3001/metrics | grep -c '^monitor_status{.*} 0$'Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| No number found in the response | The key path doesn’t match the reply. | Run curl -s with the address and read the JSON. Dots walk into objects, numbers pick array items (items.0.count). |
| Couldn’t reach the address | No network, a typo in the host, or the service is down. | Open the address in your browser. Multimeter tries again at the next refresh. |
| The server answered 404 | The slug doesn’t match a published status page. | Open the status page in your browser; its address ends with the slug. |
Questions
Is the status page public?
It is readable by anyone who can reach your Uptime Kuma, which on a home network is usually just you. Leave monitors you consider private off it.