feat(traffic): each container's network rate, and each NFS mount's bytes, so a host's traffic has a sender (#6115)
CI / lint (push) Successful in 3s
CI / unit (push) Failing after 1m30s
CI / integration (push) Successful in 1m38s
CI / publish (push) Skipped

Docker02's outbound traffic tops out the internet connection and Steward
couldn't say who sends it: a container's counters were kept only as a
running total, and NFS traffic belongs to no container.

- Docker ingest turns each running container's cumulative network counters
  into net_rx_bps / net_tx_bps on "<host>/<container>" (net_rates), counting
  from the stored row so a restart of Steward loses nothing; a container
  new, recreated or restarted has no rate until its next snapshot.
- Agent 1.25.0 reads the bytes sent and received per NFS mount from
  mountstats (already parsed for the delays) as tx_bps / rx_bps; Steward
  stores them as nfs_tx_bps / nfs_rx_bps on "<host>:<mount>".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-19 14:35:24 -04:00
co-authored by Claude Opus 5.5
parent 18032a4782
commit 613ed4e78b
8 changed files with 123 additions and 32 deletions
+2
View File
@@ -349,6 +349,8 @@ METRICS: dict[str, tuple[str, str]] = {
"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_tx_bps": ("NFS sent", "one NFS mount: bytes a second sent to its server, writes included"),
"nfs_rx_bps": ("NFS received", "one NFS mount: bytes a second received from its server, reads included"),
"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"),