feat(host_agent): a disk out of inodes reads as full (#5745)
VDNT-Util01's / ran out of inodes (956 free of 60.8M) with 274G of space
left; every file create failed and Steward's page read healthy at 66%.
- Agent 1.13.0 reports each mount's inodes (statvfs; a filesystem reporting
none, like btrfs, is left without).
- Ingest records inodes_used_pct per mount, and disk_used_pct_worst is the
fullest mount by space or inodes, so existing disk-full rules and the
overview see it.
- The host's health strip, the Hosts widget and the host glance grade / by
whichever is fuller and name inodes when they are ("Disk / 66% · inodes
100%", "Inodes on / ... past its critical threshold").
Hosts pick up the inode figures once their agent is updated to 1.13.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -133,3 +133,12 @@ async def test_the_thresholds_page_offers_each_running_kinds_floor(app):
|
||||
assert 'name="norms.floor.host_cpu_pct"' in page and 'name="norms.floor.monitor_ms"' in page
|
||||
assert 'name="norms.floor.container_cpu_pct"' not in page # docker isn't running
|
||||
assert 'name="norms.floor.router_4xx_pct"' not in page
|
||||
|
||||
|
||||
def test_a_host_out_of_inodes_reads_critical_and_says_inodes():
|
||||
"""#5745: space 66%, inodes 100% is a full disk, named as inodes."""
|
||||
hosts = [NS(id="u", name="util01")]
|
||||
agent = {"util01": {"disk_root": 66.0, "inodes_root": 100.0, "fresh": True}}
|
||||
(row,) = host_glance(hosts, {}, agent, TH)
|
||||
assert row["state"] == "crit" and row["worst"][0] == "Inodes on /"
|
||||
assert row["grades"]["disk"][0] == "crit"
|
||||
|
||||
Reference in New Issue
Block a user