
개요
IKEA EKET 두 개에 장비를 넣어 쓰다가 발열 때문에 바꿨다. 8월 15일에 수납장과 랙을 갈고 배기 덕트를 뺐다. 수납장과 배기만으로는 온도가 안 내려가서, 2주 뒤 SSD 방열판까지 달았다.
문제 인지: 온도 규칙 0건
알림 규칙은 대부분 차트에 딸려 온 기본 규칙이었고, 직접 만든 것은 30개였다. 규칙이 노드와 파드, 인그레스, CI까지 덮었는데 온도만 한 건도 없었다. 온도 데이터는 수집되고 있었지만 그 패널을 열지 않았다.
8월 말에 그걸 알아채고 node_hwmon_temp_celsius를 꺼내 봤다. 아래 값은 9/21에 원 데이터로 다시 계산한 것이다. 방열판을 붙이기 전 구간(8/22 21시~8/29 14시)의 최고 온도가 bd895i는 99.9°C(CPU), wtrpro는 104.9°C(NVMe 한 장의 보조 센서)였다. bd895i CPU는 이 구간의 28% 동안 90°C를 넘었다. wtrpro의 104.9°C는 잠깐 튄 값에 가깝다. 95°C를 넘은 시간은 0.6%였다.
아래는 같은 구간에서 NVMe가 임계(node_hwmon_temp_crit_celsius, 84.85°C)의 90%를 넘긴 시간 비율이다.
| 센서 | 임계 90% 초과 시간 |
|---|---|
| wtrpro nvme0 | 28.2% |
| bd895i nvme1 | 21.1% |
| bd895i nvme0 | 16.1% |
CPU(k10temp)는 임계값을 내보내지 않아 비율을 낼 수 없다.
NVMe 임계는 대략 85°C고, 그 지점에서 강제 스로틀과 수명 손상이 시작된다.
“임계 근접(90%)” 알림을 만들려다 말았다. 90% 초과가 하루의 절반을 넘는 날도 있어서 켜자마자 계속 울리게 된다. 알림을 늘리는 대신 냉각을 손보기로 했다.
- alert: NodeSensorAtCriticalTemp
expr: node_hwmon_temp_celsius / on(instance,chip,sensor) group_left node_hwmon_temp_crit_celsius >= 1
for: 2m원인: 더운 실내
IKEA EKET 두 개를 쌓아 쓰고 있었다. 뒤판에 케이블 구멍이 있어 완전히 막힌 상자는 아니었다. 다만 위아래가 뚫려 있지 않아 큐브끼리 공기가 오가지 못했다.
더 큰 문제는 방이었다. 8월 초 이 방은 최고 39.0°C였다. 뒤 구멍으로 들어오는 공기가 이미 그 온도라 안에서 돌려봐야 소용이 없었다.
1단계: 수납장·랙·배기 (08-15)
수납장 — IKEA LASTARE. 프레임이 세로로 길어 랙을 통째로 세워 넣는다. 칸마다 막히던 EKET과 달리 안이 하나로 트여 있다.
랙 — Lab Rax 10” Server Rack(mklements 설계, 소개 글). M6 너트를 쓰도록 수정된 리믹스를 6U로 두 개 뽑아 이어 붙였다. 위아래 핸들을 1U씩 더해 총 14U가 됐다. 우상단에 팬 자리가 있다.
팬 — Phanteks 200mm 두 개. 하나는 랙 위 팬 자리, 하나는 wtrpro 메인보드 배기 구멍에.
배기 — 수납장 맨 위에 후드를 두고 알루미늄 덕트를 물려 창문형 팬으로 뺀다. 상시 구동이고 전원 제어는 Zigbee 스위치로 한다. 실내에서 순환만 시키면 방 온도가 같이 올라가니, 더운 공기는 집 밖으로 버린다.

이 단계에서 NVMe 온도는 내려가지 않았다.
날짜별로 나누면 NVMe가 임계 90%를 넘긴 시간 비율은 이랬다(방열판을 붙이기 전까지).
| 센서 | 8/23 | 8/24 | 8/25 | 8/26 | 8/27 | 8/28 | 8/29 오전 |
|---|---|---|---|---|---|---|---|
| bd895i nvme1 | 22.4% | 58.2% | 18.4% | 30.2% | 2.1% | 1.4% | 0.3% |
| bd895i nvme0 | 25.4% | 62.7% | 3.5% | 2.8% | 5.4% | 0% | 0% |
| wtrpro nvme0 | 0.5% | 0.7% | 73.7% | 70.2% | 11.1% | 24.4% | 12.9% |
교체 열흘 뒤인 8/24에도 bd895i의 NVMe 두 장이 하루의 60% 가까이 임계 90%를 넘었다. 다만 bd895i는 8/27부터 방열판 전에 이미 1~5%로 내려가 있었는데, 그 사이 무엇이 바뀌었는지는 기록이 없다. 랙 안에 둔 Zigbee 센서로도 교체 전후 일평균이 33.6°C와 33.7°C로 같았다.
CPU는 뭐라 말하기 어렵다. 교체 사흘 뒤인 08-18에 뽑은 값이 wtrpro 79.0°C, um880 89.4°C, bd895i 91.9°C인데, 이게 7일 평균이라 교체 전 나흘이 섞여 있다. um880이 아직 값에 남아 있는 것도 그래서다 — 이 호스트는 08-14에 은퇴했다. 교체 직후만 따로 볼 수 있는 값은 남아 있지 않다. 그때 눈에 띈 건 bd895i의 같은 기간 CPU 사용률이 18.3%였다는 것이다.
그래도 사이즈가 커져서 케이블을 정리하고 랙을 관리하기 편해졌다.
2단계: SSD 방열판 (08-29)
랙을 바꾼 뒤에도 NVMe가 임계 90%를 넘는 날이 이어졌다(위 표). 수납장과 배기를 손보는 것만으로는 NVMe 온도까지 개선하지 못했다.
부하 보정을 걸어 비교했다. 디스크 사용률 구간을 맞추지 않으면 유휴상태라서 시원한 것과 구분이 안 된다.
| 호스트 · io_util | 방열판 전 (평균/최고) | 방열판 후 |
|---|---|---|
| bd895i · 0.05~0.10 | 71.7 / 81.9°C | 57.5 / 64.8°C |
| wtrpro · 0.10~0.20 | 71.3 / 82.9°C | 50°C |
같은 부하대에서 피크가 18~21도 내려갔다. 다만 방열판을 붙인 뒤 데이터가 얼마 없다. wtrpro 쪽은 전이 948개, 후가 9개다. 내려간 건 맞는데 얼마나 내려갔는지는 이 표만으로는 말하기 어렵다. bd895i는 방열판 후 3시간 29분 동안 CI 빌드까지 돌렸는데 임계 초과 0분이었다.
현재 상태
| NVMe 임계 90% 초과 시간 | 방열판 전 (8/22 21시~8/29 14시) | 지금 (9/14 21시~9/21) |
|---|---|---|
| wtrpro nvme0 | 28.2% | 0% |
| bd895i nvme1 | 21.1% | 0% |
| bd895i nvme0 | 16.1% | 0% |
센서 전체의 최고 온도는 같은 두 구간에서 wtrpro 104.9 → 84.9°C, bd895i 99.9 → 62.0°C다. NVMe 다섯 장의 주 센서만 보면 지금 7일 최고는 67.9°C다.
정리
온도 데이터는 계속 쌓이고 있었다. 알림 규칙을 만들면서 온도는 한 건도 넣지 않았고, 그래서 하이퍼바이저가 100°C를 찍는 걸 몰랐다. Prometheus 보존 기간이 7일이라 언제부터 그랬는지는 알 수 없다. 알림을 만들었어도 켜자마자 계속 울렸을 테니 알림만으로 됐을 일도 아니다.
수납장과 랙을 바꾼 뒤에도 8/24까지 NVMe가 임계 90%를 자주 넘었다. 나중에 붙인 방열판이 같은 부하대에서 피크를 20도 가까이 내렸다.
이번엔 교체 전 기준점이 없었다. Prometheus 보존이 retention: 7d라 교체 전(8/15 이전) 데이터가 남아 있지 않고, 방 온도로 대신 재보려 해도 에어컨을 킨 적이 있이 섞여 갈라낼 수가 없다. 언제 바꿨는지도 온도 그래프에서 계단이 생긴 자리를 보고 거꾸로 짚었다.
그래서 다음 작업 전에 세 가지를 먼저 하려고 한다.
- 바꾸기 직전 값을 Grafana 애노테이션으로 찍는다. 그래프에 세로선이 남으면 나중에 거꾸로 짚을 일이 없다
- Prometheus 보존을 30일로 늘린다. 시계열 중
apiserver_request_duration_seconds_bucket·etcd_request_duration_seconds_bucket같은 히스토그램 버킷이 35%를 차지한다.metricRelabelings로 버킷만 버리면_sum·_count는 남으니 요청률은 계속 보면서 PVC를 늘리지 않고 30일이 들어간다 - Home Assistant의 온습도를 Prometheus로 보낸다. 이번엔 실온은 HA에서, 장비 온도는 Prometheus에서 따로 확인했는데 한곳에서 확인하면 편할 것이다.
이전에도 비슷한 일이 있었다 → K3s 노드 축소
수정 기록
- 2026-09-21: 처음 쓸 때 적은 임계 90% 초과 비율(bd895i CPU 49.2%, nvme1 34.3%, nvme0 31.4%, wtrpro nvme0 24.2%)은 측정 구간을 적어 두지 않아 다시 계산할 수 없었다. 8/22 21시 이후 데이터가 Prometheus PVC를 새로 만들 때 떨어져 나간 옛 볼륨에 남아 있어, 그 원 데이터로 구간을 밝혀 다시 계산한 값으로 바꿨다. CPU는 임계값이 없어 표에서 뺐다. 최고 온도 99.9°C와 104.9°C는 원 데이터와 같다. «지금» 값도 9/21에 다시 쟀다