Grafana + Prometheus + Node Exporter 安裝與監控 Dashboard 建置

這篇文章記錄如何在 Linux 環境中安裝 Prometheus、Grafana 與 Node Exporter,並透過 Grafana 匯入 Node Exporter Dashboard,建立一套基本的主機監控環境。

整體流程會先完成 Prometheus 的服務安裝,再安裝 Grafana 作為視覺化介面,接著部署 Node Exporter 讓 Prometheus 能夠收集主機 Metrics,最後在 Grafana 中設定資料來源並匯入 Dashboard。


安裝 prometheus

首先建立 Prometheus 專用的系統使用者,並準備設定檔與資料儲存目錄。這個使用者不需要登入系統,也不需要家目錄,主要用途是讓 Prometheus 服務能以獨立權限執行。

1
2
3
4
5
6
7
8
9
10
# 建立 prometheus 使用者 (不建立家目錄,且禁止登入)
sudo useradd --no-create-home --shell /bin/false prometheus

# 建立設定檔與資料儲存用的目錄
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus

# 設定目錄擁有者為 prometheus
sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus

接著從 Prometheus 官方 GitHub Release 下載 Linux AMD64 版本,並解壓縮安裝檔。

1
2
3
4
5
6
7
8
9
# 使用 wget 下載 (請將網址替換為官網最新的 linux-amd64 連結)
# 這裡以 3.13.0 為例:
wget https://github.com/prometheus/prometheus/releases/download/v3.13.0/prometheus-3.13.0.linux-amd64.tar.gz

# 解壓縮
tar xvfz prometheus-3.13.0.linux-amd64.tar.gz

# 進入解壓縮後的資料夾
cd prometheus-3.13.0.linux-amd64.tar.gz

解壓縮完成後,將 Prometheus 與 promtool 執行檔複製到 /usr/local/bin/,再將預設設定檔放到 /etc/prometheus/ 底下,並設定檔案擁有者。

1
2
3
4
5
6
7
8
9
# 1. 移動執行檔並設定擁有者
sudo cp prometheus promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool

# 2. 移動預設設定檔與網頁介面所需的模板
sudo cp prometheus.yml /etc/prometheus/

# 3. 設定 /etc/prometheus 底下所有檔案的擁有者
sudo chown -R prometheus:prometheus /etc/prometheus/

接著建立 Prometheus 的 systemd service,讓 Prometheus 可以透過 systemctl 管理。

1
sudo nano /etc/systemd/system/prometheus.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.listen-address="0.0.0.0:9090"

[Install]
WantedBy=multi-user.target

建立服務檔後,重新載入 systemd 設定,啟動 Prometheus 並設定開機自動啟動。

1
2
3
4
5
6
7
8
9
# 重新載入 systemd 設定
sudo systemctl daemon-reload

# 啟動並設定開機自啟動
sudo systemctl start prometheus
sudo systemctl enable prometheus

# 檢查運行狀態 (應該要看到 active (running))
sudo systemctl status prometheus

服務啟動後,開啟瀏覽器進入 http://127.0.0.1:9090,確認 Prometheus 是否正常運作。

安裝 grafana

Prometheus 負責收集與儲存監控資料,而 Grafana 則用來建立視覺化 Dashboard。這裡使用 Grafana 官方提供的 .deb 套件進行安裝。

Grafana 下載頁面通常會提供 EnterpriseOSS 兩種版本。OSS 是開源版本,已包含建立 Dashboard、設定資料來源、查詢 Prometheus 與基本告警等常用功能;Enterprise 則包含 OSS 的功能,並可在授權後啟用企業級功能與外掛,例如進階權限控管、企業資料來源外掛、報表與官方支援等。若只是建立本文這類 Prometheus 與 Node Exporter 的主機監控環境,使用 OSS 版本即可。

1
2
3
4
5
6
7
8
# 安裝 Grafana 執行所需的相依套件
sudo apt-get install -y adduser libfontconfig1 musl

# 從 Grafana 官方下載指定版本的 deb 安裝套件
wget https://dl.grafana.com/grafana/release/13.1.0/grafana_13.1.0_28013217238_linux_amd64.deb

# 使用 dpkg 安裝 Grafana
sudo dpkg -i grafana_13.1.0_28013217238_linux_amd64.deb

安裝完成後,修改 Grafana 設定檔 /etc/grafana/grafana.ini,讓 Grafana Server 綁定到 0.0.0.0,並使用預設的 3000 連接埠。

1
sudo nano /etc/grafana/grafana.ini
1
2
3
4
5
6
[server]
# The ip address to bind to, empty will bind to all interfaces
http_addr = 0.0.0.0

# The http port to use
http_port = 3000

接著重新載入 systemd 設定,啟動 Grafana Server 並設定開機自動啟動。

1
2
3
4
5
6
7
8
9
# 重新載入 systemd 設定
sudo systemctl daemon-reload

# 啟動並設定開機自啟動
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

# 檢查運行狀態 (應該要看到 active (running))
sudo systemctl status grafana-server

開啟瀏覽器進入 http://127.0.0.1:3000,確認 Grafana 是否正常運作。

Grafana 預設帳號與密碼皆為 admin,首次登入後會要求重新設定密碼。

完成登入後,就可以進入 Grafana 主畫面。

安裝 node_exporter

Node Exporter 會提供主機 CPU、記憶體、磁碟、網路等系統 Metrics,讓 Prometheus 可以定期抓取並儲存。首先下載 Node Exporter 的 Linux AMD64 版本並解壓縮。

1
2
3
4
5
6
7
8
9
# 使用 wget 下載 (請將網址替換為官網最新的 linux-amd64 連結)
# 這裡以 1.11.1 為例:
wget https://github.com/prometheus/node_exporter/releases/download/v1.11.1/node_exporter-1.11.1.linux-amd64.tar.gz

# 解壓縮
tar xvfz node_exporter-1.11.1.linux-amd64.tar.gz

# 進入解壓縮後的資料夾
cd node_exporter-1.11.1.linux-amd64.tar.gz

接著建立 Node Exporter 專用使用者。

1
2
# 建立 node_exporter 使用者 (不建立家目錄,且禁止登入)
sudo useradd --no-create-home --shell /bin/false node_exporter

將 Node Exporter 執行檔複製到 /usr/local/bin/,並設定擁有者。

1
2
3
4
5
# 移動執行檔
sudo cp node_exporter /usr/local/bin/

# 設定擁有者
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

建立 Node Exporter 的 systemd service。

1
sudo nano /etc/systemd/system/node_exporter.service
1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

建立服務檔後,重新載入 systemd 設定,啟動 Node Exporter 並設定開機自動啟動。

1
2
3
4
5
6
7
8
9
# 重新載入 systemd 設定
sudo systemctl daemon-reload

# 啟動並設定開機自啟動
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

# 檢查運行狀態 (應該要看到 active (running))
sudo systemctl status node_exporter

接著回到 Prometheus 設定檔,新增 Node Exporter 的 scrape target,讓 Prometheus 可以抓取 localhost:9100 提供的 Metrics。

1
2
# 修改prometheus設定
sudo nano /etc/prometheus/prometheus.yml
1
2
3
4
5
6
7
8
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]

- job_name: "node_exporter"
static_configs:
- targets: ["localhost:9100"]

最後可以透過 curl 驗證 Node Exporter 是否正常輸出 Metrics。

1
curl http://127.0.0.1:9100/metrics

設定 Dashboard

Prometheus 與 Node Exporter 都完成後,就可以在 Grafana 中設定 Prometheus 資料來源,並匯入 Node Exporter Dashboard。

先新增 Prometheus 來源。

添加 datasource。

設定 Prometheus 位置。

儲存並確認 datasource 是否有添加成功。

接著下載 Node Exporter 的 Dashboard 樣版設定。這裡使用的是 Grafana Labs 上常見的 1860 樣板,也就是 Node Exporter Full。這個 Dashboard 主要搭配 Prometheus 與 Node Exporter 使用,可以直接呈現主機的 CPU、Memory、Disk、Filesystem、Network、Load Average 等系統監控資訊。

匯入時可以使用 Dashboard ID 1860,也可以從頁面下載 JSON 後再匯入。若前面已經完成 Prometheus datasource 設定,匯入時只要選擇對應的 Prometheus 資料來源,就能讓 Dashboard 讀取 Node Exporter 收集到的 metrics。

https://grafana.com/grafana/dashboards/1860-node-exporter-full/

新增 Dashboard。

匯入 Dashboard。

設定 Dashboard。

Dashboard 設定完成後,就可以在 Grafana 中查看 Node Exporter 收集到的主機監控資料。

參考資料