A kernel update followed by a reboot of micro1 from the Proxmox UI cut a P2 ticket, 993441773 ("No metrics from host"). The reboot was intentional and the host came back healthy.
Times are UTC on 2026-11-06:
Time
Event
23:17:50
systemd-logind logs "The system will reboot now!"
~23:18
Prometheus up goes to 0, because node_exporter stops at the start of shutdown
23:21:11
New kernel boot time
23:21:57
Gandalf opens the ticket on its second failed check
~23:22
up returns to 1
Why
host_metrics_missing uses monitor.failure_threshold, which defaults to 2 checks. With a 120s poll, that can fire as soon as 2 minutes after the host disappears.
Gandalf has no way to know a reboot is planned unless a suppression is added first. The unifi_failure_threshold and modem.failure_threshold settings already give those devices extra time for maintenance reboots, but hosts have no equivalent.
Reboots measured from Prometheus up samples over the last 7 days:
Host
Time with up = 0
compute-storage-01
~3 min
compute-storage-gpu-01
~4 min
micro1
~4 min
monitor-02
~5 min
Ping-only hosts (host_unreachable) use the same threshold, so they have the same problem.
Proposed fix
Add monitor.host_failure_threshold, used when a whole host disappears (host_metrics_missing and host_unreachable). Default it to 5 checks, so a ticket opens no sooner than about 8 minutes after the first failed check.
Interface link-down alerts stay at failure_threshold. A NIC going down on a running host is still a fast, real signal.
The dashboard and event list still show the host as down straight away. Only the ticket waits.
The cluster-wide alert still counts a missing host from its first failed check.
Trade-offs
A real host outage is ticketed about 6 minutes later than it is today.
This is a time window, not intent detection. A crash that recovers within the window also won't cut a ticket, though the event is still recorded.
A reboot that takes longer than the window still cuts a ticket. Suppress the host first for long maintenance.
Possible follow-ups (not in this fix)
Intent detection: clean reboots do leave a signal, such as the systemd-logind message and the Proxmox stopall task in Loki. Gandalf could use it to tell a planned reboot from a crash, and to ticket crashes that recover quickly.
Closing tickets on recovery: the event resolves when a host returns, but its ticket stays open until someone closes it.
Cluster alert threshold:cluster_network_issue has no consecutive-check threshold, so one bad check across 3 hosts opens a P1 straight away. Suppressed hosts count toward it too, so a planned reboot of 3 suppressed hosts could still open one.
## What happened
A kernel update followed by a reboot of `micro1` from the Proxmox UI cut a P2 ticket, [993441773](https://t.lotusguild.org/ticket/993441773) ("No metrics from host"). The reboot was intentional and the host came back healthy.
Times are UTC on 2026-11-06:
| Time | Event |
|---|---|
| 23:17:50 | `systemd-logind` logs "The system will reboot now!" |
| ~23:18 | Prometheus `up` goes to 0, because `node_exporter` stops at the start of shutdown |
| 23:21:11 | New kernel boot time |
| 23:21:57 | Gandalf opens the ticket on its second failed check |
| ~23:22 | `up` returns to 1 |
## Why
`host_metrics_missing` uses `monitor.failure_threshold`, which defaults to 2 checks. With a 120s poll, that can fire as soon as 2 minutes after the host disappears.
Gandalf has no way to know a reboot is planned unless a suppression is added first. The `unifi_failure_threshold` and `modem.failure_threshold` settings already give those devices extra time for maintenance reboots, but hosts have no equivalent.
Reboots measured from Prometheus `up` samples over the last 7 days:
| Host | Time with `up` = 0 |
|---|---|
| `compute-storage-01` | ~3 min |
| `compute-storage-gpu-01` | ~4 min |
| `micro1` | ~4 min |
| `monitor-02` | ~5 min |
Ping-only hosts (`host_unreachable`) use the same threshold, so they have the same problem.
## Proposed fix
Add `monitor.host_failure_threshold`, used when a whole host disappears (`host_metrics_missing` and `host_unreachable`). Default it to 5 checks, so a ticket opens no sooner than about 8 minutes after the first failed check.
- Interface link-down alerts stay at `failure_threshold`. A NIC going down on a running host is still a fast, real signal.
- The dashboard and event list still show the host as down straight away. Only the ticket waits.
- The cluster-wide alert still counts a missing host from its first failed check.
## Trade-offs
- A real host outage is ticketed about 6 minutes later than it is today.
- This is a time window, not intent detection. A crash that recovers within the window also won't cut a ticket, though the event is still recorded.
- A reboot that takes longer than the window still cuts a ticket. Suppress the host first for long maintenance.
## Possible follow-ups (not in this fix)
- **Intent detection:** clean reboots do leave a signal, such as the `systemd-logind` message and the Proxmox `stopall` task in Loki. Gandalf could use it to tell a planned reboot from a crash, and to ticket crashes that recover quickly.
- **Closing tickets on recovery:** the event resolves when a host returns, but its ticket stays open until someone closes it.
- **Cluster alert threshold:** `cluster_network_issue` has no consecutive-check threshold, so one bad check across 3 hosts opens a P1 straight away. Suppressed hosts count toward it too, so a planned reboot of 3 suppressed hosts could still open one.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What happened
A kernel update followed by a reboot of
micro1from the Proxmox UI cut a P2 ticket, 993441773 ("No metrics from host"). The reboot was intentional and the host came back healthy.Times are UTC on 2026-11-06:
systemd-logindlogs "The system will reboot now!"upgoes to 0, becausenode_exporterstops at the start of shutdownupreturns to 1Why
host_metrics_missingusesmonitor.failure_threshold, which defaults to 2 checks. With a 120s poll, that can fire as soon as 2 minutes after the host disappears.Gandalf has no way to know a reboot is planned unless a suppression is added first. The
unifi_failure_thresholdandmodem.failure_thresholdsettings already give those devices extra time for maintenance reboots, but hosts have no equivalent.Reboots measured from Prometheus
upsamples over the last 7 days:up= 0compute-storage-01compute-storage-gpu-01micro1monitor-02Ping-only hosts (
host_unreachable) use the same threshold, so they have the same problem.Proposed fix
Add
monitor.host_failure_threshold, used when a whole host disappears (host_metrics_missingandhost_unreachable). Default it to 5 checks, so a ticket opens no sooner than about 8 minutes after the first failed check.failure_threshold. A NIC going down on a running host is still a fast, real signal.Trade-offs
Possible follow-ups (not in this fix)
systemd-logindmessage and the Proxmoxstopalltask in Loki. Gandalf could use it to tell a planned reboot from a crash, and to ticket crashes that recover quickly.cluster_network_issuehas no consecutive-check threshold, so one bad check across 3 hosts opens a P1 straight away. Suppressed hosts count toward it too, so a planned reboot of 3 suppressed hosts could still open one.