fix(grafana): align NVMe temperature thresholds with 0-70C rating

Dashboard temperature panel now uses NVMe-specific thresholds (orange
60, red 70) instead of HDD ones; alert descriptions reference the
rated range.
This commit is contained in:
Clément Désiles
2026-09-29 12:25:56 +02:00
parent 1d37313bd6
commit 86ad271b23
3 changed files with 9 additions and 11 deletions
+1 -2
View File
@@ -220,8 +220,7 @@ rise/fall semantics as capacity.
| NVMe | ≥70°C | high | 10m | | NVMe | ≥70°C | high | 10m |
| NVMe | ≥75°C | critical | 5m | | NVMe | ≥75°C | critical | 5m |
NVMe runs hotter: 40-60°C is normal, 60-70°C is warm (acceptable under NVMe tiers follow the 0-70°C operating spec (dashboard: orange ≥60, red ≥70°C).
sustained load), throttling typically starts at 70-80°C.
### Capacity tiers ### Capacity tiers
+6 -7
View File
@@ -7,7 +7,7 @@ apiVersion: 1
# Split by device class: HDDs (sd*) and NVMe (nvme*) have different # Split by device class: HDDs (sd*) and NVMe (nvme*) have different
# safe ranges, so they get separate tier ladders. # safe ranges, so they get separate tier ladders.
# HDD: 48..60°C (below 45 ideal) — device!~"(/dev/)?nvme.*" # HDD: 48..60°C (below 45 ideal) — device!~"(/dev/)?nvme.*"
# NVMe: 65..75°C (40-60 normal, 60-70 warm, >70 throttling) — device=~"(/dev/)?nvme.*" # NVMe: 65..75°C (rated 0-70°C) — device=~"(/dev/)?nvme.*"
# Capacity metrics: zfs_pool_capacity_percent and # Capacity metrics: zfs_pool_capacity_percent and
# node_filesystem_avail_bytes/node_filesystem_size_bytes (job="node"). # node_filesystem_avail_bytes/node_filesystem_size_bytes (job="node").
# node_filesystem_* is filtered to real local filesystems (ext4/xfs/btrfs); # node_filesystem_* is filtered to real local filesystems (ext4/xfs/btrfs);
@@ -411,9 +411,8 @@ groups:
description: "S.M.A.R.T. temperature is below the 20°C ideal minimum (sensor/fan/offline disk?)." description: "S.M.A.R.T. temperature is below the 20°C ideal minimum (sensor/fan/offline disk?)."
# --- NVMe temperature tiers (device=~"(/dev/)?nvme.*") --- # --- NVMe temperature tiers (device=~"(/dev/)?nvme.*") ---
# NVMe runs hotter than HDD: 40-60°C is normal, 60-70°C is warm but # Rated 0-70°C: <60 normal, 65 warm, 70 at the rated ceiling, 75 above
# acceptable under sustained load, and throttling typically starts in the # spec. The HDD ladder above excludes NVMe devices.
# 70-80°C range. The HDD ladder above excludes NVMe devices.
- uid: nvme_temp_ge_65 - uid: nvme_temp_ge_65
title: "NVMe temperature ≥65°C" title: "NVMe temperature ≥65°C"
condition: C condition: C
@@ -460,7 +459,7 @@ groups:
severity: warning severity: warning
annotations: annotations:
summary: "NVMe {{ $labels.device }} at {{ $values.B }}°C ({{ $labels.instance }})" summary: "NVMe {{ $labels.device }} at {{ $values.B }}°C ({{ $labels.instance }})"
description: "NVMe temperature is at or above 65°C (warm). Normal is 40-60°C; acceptable under sustained load." description: "NVMe temperature is at or above 65°C (warm), approaching the 70°C rated maximum."
- uid: nvme_temp_ge_70 - uid: nvme_temp_ge_70
title: "NVMe temperature ≥70°C" title: "NVMe temperature ≥70°C"
@@ -508,7 +507,7 @@ groups:
severity: high severity: high
annotations: annotations:
summary: "NVMe {{ $labels.device }} at {{ $values.B }}°C ({{ $labels.instance }})" summary: "NVMe {{ $labels.device }} at {{ $values.B }}°C ({{ $labels.instance }})"
description: "NVMe temperature is at or above 70°C. Thermal throttling typically begins in the 70-80°C range." description: "NVMe temperature is at or above 70°C, the rated maximum operating temperature."
- uid: nvme_temp_ge_75 - uid: nvme_temp_ge_75
title: "NVMe temperature ≥75°C" title: "NVMe temperature ≥75°C"
@@ -556,7 +555,7 @@ groups:
severity: critical severity: critical
annotations: annotations:
summary: "NVMe {{ $labels.device }} at {{ $values.B }}°C ({{ $labels.instance }})" summary: "NVMe {{ $labels.device }} at {{ $values.B }}°C ({{ $labels.instance }})"
description: "NVMe temperature is at or above 75°C (hot). Check airflow/heatsink; sustained throttling expected." description: "NVMe temperature is at or above 75°C, above the 70°C rated maximum. Check airflow/heatsink."
# --- Capacity: ZFS pools (data disk) --- # --- Capacity: ZFS pools (data disk) ---
# zfs_pool_capacity_percent is emitted hourly by the zfs role's # zfs_pool_capacity_percent is emitted hourly by the zfs role's
+2 -2
View File
@@ -54,9 +54,9 @@
"title": "Temperature", "title": "Temperature",
"gridPos": { "h": 4, "w": 6, "x": 6, "y": 0 }, "gridPos": { "h": 4, "w": 6, "x": 6, "y": 0 },
"datasource": { "type": "prometheus", "uid": "prometheus" }, "datasource": { "type": "prometheus", "uid": "prometheus" },
"fieldConfig": { "defaults": { "unit": "celsius", "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 45 }, { "color": "red", "value": 55 } ] } }, "overrides": [] }, "fieldConfig": { "defaults": { "unit": "celsius", "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 45 }, { "color": "red", "value": 55 } ] } }, "overrides": [ { "matcher": { "id": "byRegexp", "options": "^(/dev/)?nvme.*" }, "properties": [ { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 60 }, { "color": "red", "value": 70 } ] } } ] } ] },
"options": { "reduceOptions": { "values": false, "calcs": ["lastNotNull"], "fields": "" }, "colorMode": "background", "graphMode": "none", "textMode": "auto", "justifyMode": "auto", "orientation": "auto" }, "options": { "reduceOptions": { "values": false, "calcs": ["lastNotNull"], "fields": "" }, "colorMode": "background", "graphMode": "none", "textMode": "auto", "justifyMode": "auto", "orientation": "auto" },
"targets": [ { "refId": "A", "expr": "smartctl_device_temperature{instance=~\"$instance\", device=~\"$device\", temperature_type=\"current\"}" } ] "targets": [ { "refId": "A", "expr": "smartctl_device_temperature{instance=~\"$instance\", device=~\"$device\", temperature_type=\"current\"}", "legendFormat": "{{device}}" } ]
}, },
{ {
"id": 3, "id": 3,