feat(host_agent): NFS delay per mount, read from /proc/self/mountstats (#5996)
CI / lint (push) Successful in 2s
CI / unit (push) Failing after 1m32s
CI / integration (push) Successful in 1m31s
CI / publish (push) Skipped

Each sample carries each NFS mount's requests since the last one: how many
a second, their round trip and execute time (READ and WRITE on their own),
and how many were sent again or hit a major timeout. mountstats is the
kernel's own count and never touches the share, so it reads while one is
stuck. Steward stores them per mount and the slowest on the host as
nfs_exe_max_ms, for an "NFS slow" rule and the host page's NFS chart beside
mounts_stalled; each mount's bar says what a request took.

Agent 1.22.0 (which also carries the backlog order from 41fc807).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-17 09:46:14 -04:00
co-authored by Claude Opus 5.5
parent 2df8431de9
commit 3f9aae7f46
12 changed files with 282 additions and 13 deletions
+8
View File
@@ -341,6 +341,14 @@ METRICS: dict[str, tuple[str, str]] = {
"seconds_since_seen": ("Time since the agent reported", "over 3 minutes means the agent is offline"),
"clock_off_secs": ("Clock off by", "how far the host's clock is from Steward's, either way"),
"mounts_stalled": ("Mounts not answering", "mounts the agent couldn't read in 5 s, e.g. an NFS share whose server stopped"),
"nfs_exe_max_ms": ("NFS delay (slowest mount)", "the host's slowest NFS mount: how long a request took, queueing included"),
"nfs_exe_ms": ("NFS delay", "one NFS mount (resource host:mount): how long a request took on average, queueing included"),
"nfs_rtt_ms": ("NFS round trip", "one NFS mount: how long the server took to answer a request"),
"nfs_read_ms": ("NFS read delay", "one NFS mount: how long a read took on average"),
"nfs_write_ms": ("NFS write delay", "one NFS mount: how long a write took on average"),
"nfs_ops_per_sec": ("NFS requests", "one NFS mount: requests finished a second"),
"nfs_retrans": ("NFS retransmissions", "one NFS mount: requests sent again since the last sample"),
"nfs_timeouts": ("NFS timeouts", "one NFS mount: requests that timed out since the last sample"),
"agent_rss_bytes": ("Agent memory", "the host agent's own resident memory; tens of MB is normal"),
"agent_cpu_pct": ("Agent CPU", "the host agent's own CPU, % of one core; a few % is normal"),
"updates_pending": ("Updates waiting", "packages the host's package manager would upgrade, checked hourly"),