為什麼需要 Exporter#
當 Windows 卡頓的時候,多數人下意識會按 Ctrl + Alt + Del 打開工作管理員看 CPU、記憶體有沒有滿載。這幾乎是反射動作,但這種「肉眼盯系統指標」的方式只適用於有 GUI 的個人電腦。
在維運場景下,要持續監控伺服器與服務的資源使用情況,就要靠 Exporter——它會替你把目標環境的系統資訊轉換成 Prometheus Metrics,再讓 Prometheus 統一抓取。下面盤點幾個最常見的 Exporter。
Node Exporter#
Node Exporter 由 Prometheus 官方開源,是最常見的伺服器資源 Exporter,主要監控 Linux 機器的 CPU、Memory、磁碟、網路等。命名來自分散式架構中「每台獨立機器都被視為一個 Node」的概念。
可以搭配社群常用的 Grafana Dashboard:「Node Exporter Full」(Dashboard ID: 1860)。
Windows Exporter#
對於 Windows 伺服器,Prometheus Community 提供了類似 Node Exporter 的 Windows Exporter。
可參考 Dashboard:
- Windows Exporter Dashboard(ID: 14694)。
- Windows Exporter Dashboard 中文版(ID: 10467)。
DCGM-Exporter#
隨著 AI 工作負載成長,GPU 監控越來越重要。NVIDIA 基於 DCGM(Data Center GPU Manager)開發了 DCGM-Exporter,可採集 GPU 記憶體用量、溫度等指標。
可參考 Dashboard:「NVIDIA DCGM Exporter Dashboard」(ID: 12239)。
cAdvisor#
cAdvisor 是 Google 開源的 Container 監控工具。它有自帶的 Web UI,同時也直接提供 Prometheus 格式的 Metrics endpoint,可以被 Prometheus 直接爬取,不必再額外架 Exporter。
其他常用 Exporter#
軟體服務也經常以 Exporter 暴露指標。要找特定服務的 Exporter,最快的方式是:
- 到 Prometheus 官網的 Exporter 頁面查表。
- 或是直接 Google「<服務名稱> exporter」。
常見的有 PostgreSQL Exporter、MySQL Server Exporter、Redis Exporter、Kafka Exporter 等。
Lab 摘要#
範例 06-exporter 透過 Docker Compose 啟動:
docker-compose up -d啟動後可以瀏覽:
- Prometheus:
http://localhost:9090 - Node Exporter:
http://localhost:9100 - cAdvisor:
http://localhost:8080 - Grafana:
http://localhost:3000,預設admin/admin
關閉服務:
docker-compose downLab 達成的目標:
- 建立 Prometheus,從 Node Exporter 與 cAdvisor 抓取 Metrics。
- Node Exporter 提供 Host 系統指標。
- cAdvisor 提供 Container 指標。
- Grafana 透過 Provisioning 預先建立 Data Source 與兩個 Dashboard:cAdvisor exporter、Node Exporter Full。
小結#
Exporter 是把硬體與軟體現況轉化為 Prometheus Metrics 的橋樑。配上社群提供的 Dashboard,幾乎可以「即裝即用」地建立起一套漂亮的監控面板。
但光是套用別人寫好的 Dashboard,並不會讓我們真的理解這些指標背後的意義。下一章就要談談怎麼挑「該看什麼指標」——也就是監控的黃金法則。
原文出處#
- 原書/iThome:https://ithelp.ithome.com.tw/articles/10322842