為什麼需要 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 down

Lab 達成的目標:

  • 建立 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