欸,各位工程師,你有沒有半夜三點,被 PagerDuty 或 Slack 叫醒的經驗?你眼睛還半閉著,腦袋裡只想著「拜託,別是我弄壞了吧」,結果一看 log:「🔥 Database exploded again」——欸,不是我炸的,這次應該是主機自己崩潰了吧…
好啦,話說回來,你以為只要 API 回應正常就沒事嗎?錯啦!CPU 飆到 100%,記憶體吃光光,磁碟滿到爆炸,網路像蜗牛一樣慢,你的服務一樣會慢到讓人想跳窗戶。這時候 Node Exporter 就像你的夜班保全,默默告訴你:「欸,你主機快撐不住了啦」。
Node Exporter 是 Prometheus 官方提供的 Exporter,專門收集 Linux/Unix 系統層面的資源 metrics。你可以把它想像成宿主機的「內心獨白」,它默默告訴你 CPU 怎麼用、記憶體剩多少、磁碟還有空間沒、網路流量飆不飆。
啊對了,這就像你室友半夜偷偷吃你的零食一樣,它不吵你,只是默默把狀況記下來。
類別 | 常用 metrics | 說明 |
---|---|---|
CPU | node_cpu_seconds_total |
CPU 使用率(user/system/idle) |
Memory | node_memory_MemAvailable_bytes |
可用記憶體 |
Disk | node_disk_io_time_seconds_total , node_filesystem_avail_bytes |
磁碟 IO 與剩餘空間 |
Network | node_network_receive_bytes_total |
網路流量 |
System | node_boot_time_seconds |
系統開機時間 |
Load | node_load1 , node_load5 , node_load15 |
系統負載 |
指標細緻到讓你懷疑人生:CPU 在跑什麼?Memory 在做啥?好啦,放心,它會幫你算出來。
services:
node-exporter:
image: prom/node-exporter:v1.8.2
ports:
- "127.0.0.1:9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
networks:
- monitor-net
ports:將容器的 9100 端口映射到本機,用於 Prometheus scrape
volumes:
/proc
、/sys
、/
掛載宿主機系統資訊,Node Exporter 才能看清楚你的系統心臟。networks:跟 Prometheus 在同一網路,否則 scrape 不到就像暗戀的人不回訊息一樣。
這種方式好比你偷偷看室友的手機訊息,但不干擾他正常生活。
scrape_configs:
- job_name: 'app_metrics'
static_configs:
- targets:
- 'node-exporter:9100'
node-exporter:9100
就是 Prometheus scrape Node Exporter metrics 的 endpointnode_cpu_seconds_total
觀察 CPU 各狀態使用比例node_load1
, node_load5
, node_load15
監控系統負載node_memory_MemAvailable_bytes
→ 可用記憶體
node_memory_SwapFree_bytes
→ 剩餘 swap 空間
適用於:
node_disk_io_time_seconds_total
→ 磁碟 I/O 使用
node_filesystem_avail_bytes
→ 剩餘空間
適用於:
node_network_receive_bytes_total
/ node_network_transmit_bytes_total
適用於:
假設你的 API 服務部署在多台 host 上:
這樣你就可以在半夜放心睡覺,至少知道系統狀況有人盯著…雖然有人盯著不等於有人幫你修。
每個坑都像人生小劇場,踩下去就哭一下。
Node Exporter 是 主機資源監控的基礎利器,尤其適合微服務、API 或容器化部署環境。搭配 Prometheus scrape 與 Grafana 可視化,能夠建立完整的系統健康監控,避免因底層資源耗盡導致服務中斷。