feat(observability): alert when TrueNAS SSD_Pool free space runs low - #4270
Conversation
control-1's disk is a sparse zvol on SSD_Pool (refreservation none), so exhausting the pool fails guest writes and stops the VM rather than merely filling a share. Every other rule in this file is scoped kubernetes_node!="", which excludes the external TrueNAS target, so the pool backing the cluster's only VM had no space alerting at all. It has already run dry once without anyone noticing: on 2026-07-28 the pool sat under 20GiB from 21:10 to 22:26 and bottomed at 0.00GiB, during back-to-back image bumps that wrote a second 64G HiCache generation next to the live one. A 15m hold would have fired at 21:25, roughly an hour before it hit zero, and still rides out the 04:00 snapshot task that frees and re-pins tens of GB. Metric already scraped, no exporter needed. Verified the selector matches exactly one series, does not fire at the current 58.9GiB, and would have fired across all 77 samples of the 07-28 event.
|
Warning Review limit reached
Next review available in: 41 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Comment |
@@ spec.groups.node-exporter.rules.rules @@
# monitoring.coreos.com/v1/PrometheusRule/observability/node-exporter-rules
! + one list entry added:
+ - alert: TrueNASSSDPoolSpaceLow
+ annotations:
+ summary: "TrueNAS SSD_Pool has under 20GiB free — control-1's thin-provisioned disk fails writes if this pool fills"
+ expr: "node_filesystem_avail_bytes{job=\"node-exporter\", fstype=\"zfs\", mountpoint=\"/mnt/SSD_Pool\"} < 21474836480"
+ for: 15m
+ labels:
+ severity: critical
|
AI Automated ReviewAnalysis engine: qwen-3.6-fast@http://litellm.ai.svc.cluster.local/v1 (openai) RecommendationApprove. This is a well-justified, narrowly scoped addition of a critical alert for an infrastructure blind spot that has already caused production impact. The implementation follows repository conventions and the PR body provides thorough verification evidence. Change-by-Change Findings
Standards Compliance
Unknowns or Needs Verification
|
SSD_Poolhad no free-space alerting. It has already hit 0.00 GiB once, unnoticed.Why it matters
control-1's disk is a sparse zvol on this pool:With no refreservation, exhausting the pool fails guest writes and stops the VM. It does not merely fill a share.
Every other rule in this file is scoped
kubernetes_node!="", which excludes the external TrueNAS target, so the pool backing the cluster's only VM was never covered.It already happened
2026-07-28, at 1m scrape resolution:
Cause was back-to-back image bumps (#4227 at 20:01, #4234 at 22:17) writing a second 64G HiCache generation alongside the live one.
for: 15mwould have fired at 21:25, about an hour before it bottomed out.Worth noting: this window overlaps the unexplained 07-28/29 performance drop, which was previously attributed to a FORK_REF bump. A pool at zero free space is a much better candidate.
The rule
No exporter needed, the metric is already scraped from
192.168.0.27:9100.Verification
alertname: NodeMemoryHighUtilizationCaveat on the threshold
20 GiB is roughly half a day of runway, not more. Daily snapshot deltas on this volume have been 43.4 G (07-30) and 143 G (07-29), against a 2-day retention. Fine as a "wake up now" line, but it will not give days of notice. A second, higher warning tier could be added later if that proves too tight.