Node Exporter 是安裝在要被監視的主機上,Node Exporter 會建立一個文字網頁(預設 PORT 是 9100),讓 Prometheus 可以從這個網頁上面讀取資料。
使用 wget 指令下載檔案(貼上剛剛複製的連結):
將下載的檔案解壓縮:
註: 記得替換檔名
解壓縮後會產生 node_exporter-1.8.2.darwin-amd64 資料夾,我們把他移動到 linux 中專門存放第三方軟體的 /opt 路徑
進入到剛剛移動完畢的新路徑下:
直接執行 node_exporter
如果出現下面的錯誤訊息則很有可能是下載到錯誤的版本,請確認版本重新下載:
正常執行的範例輸出:
如果有正常執行,是可以使用下面的網頁看到 node_exporter 暴露出來的資訊的:
註: 記得替換 IP
建立服務檔:
在服務檔中填入以下內容:
註: 記得替換 ExecStart 內的檔案路徑
啟用服務:
執行服務:
確認服務執行狀態:
這樣在開機後網路服務準備好時就會自動啟動 node_exporter 了
上面增加了一個 Job ,會抓取本機的 9100 網頁資訊,也就是 Node Exporter 暴露出來的資料。
重新啟動 Prometheus 後就會看到已經讀取到資料了:
在 Prometheus 的設定檔中也可以替主機加上別名(alias),這樣未來在查詢時就可以比較簡單的辨識主機。
以下示範監視兩台主機並設定別名的設定檔:
參考資料:
Prometheus - Monitoring Linux host metrics with the Node Exporter
安裝 Node Exporter
先到 node_exporter 的 GitHub 下載頁面,複製下載連結,筆者這裡複製的是 node_exporter-1.8.2.linux-amd64.tar.gz使用 wget 指令下載檔案(貼上剛剛複製的連結):
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
將下載的檔案解壓縮:
註: 記得替換檔名
tar xvfz node_exporter-*.*-amd64.tar.gz
解壓縮後會產生 node_exporter-1.8.2.darwin-amd64 資料夾,我們把他移動到 linux 中專門存放第三方軟體的 /opt 路徑
sudo mv node_exporter-1.8.2.linux-amd64 /opt/
進入到剛剛移動完畢的新路徑下:
cd /opt/node_exporter-1.8.2.linux-amd64
直接執行 node_exporter
./node_exporter
如果出現下面的錯誤訊息則很有可能是下載到錯誤的版本,請確認版本重新下載:
./node_exporter
-bash: ./node_exporter: cannot execute binary file: Exec format error
正常執行的範例輸出:
./node_exporter
ts=2024-12-05T16:07:26.598Z caller=node_exporter.go:193 level=info msg="Starting node_exporter" version="(version=1.8.2, branch=HEAD, revision=f1e0e8360aa60b6cb5e5cc1560bed348fc2c1895)"
ts=2024-12-05T16:07:26.598Z caller=node_exporter.go:194 level=info msg="Build context" build_context="(go=go1.22.5, platform=linux/amd64, user=root@03d440803209, date=20240714-11:53:45, tags=unknown)"
ts=2024-12-05T16:07:26.600Z caller=filesystem_common.go:111 level=info collector=filesystem msg="Parsed flag --collector.filesystem.mount-points-exclude" flag=^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/containers/storage/.+)($|/)
ts=2024-12-05T16:07:26.601Z caller=filesystem_common.go:113 level=info collector=filesystem msg="Parsed flag --collector.filesystem.fs-types-exclude" flag=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$
ts=2024-12-05T16:07:26.601Z caller=diskstats_common.go:111 level=info collector=diskstats msg="Parsed flag --collector.diskstats.device-exclude" flag=^(z?ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p)\d+$
ts=2024-12-05T16:07:26.601Z caller=node_exporter.go:111 level=info msg="Enabled collectors"
ts=2024-12-05T16:07:26.601Z caller=node_exporter.go:118 level=info collector=arp
ts=2024-12-05T16:07:26.601Z caller=node_exporter.go:118 level=info collector=bcache
ts=2024-12-05T16:07:26.601Z caller=node_exporter.go:118 level=info collector=bonding
ts=2024-12-05T16:07:26.601Z caller=node_exporter.go:118 level=info collector=btrfs
ts=2024-12-05T16:07:26.601Z caller=node_exporter.go:118 level=info collector=conntrack
ts=2024-12-05T16:07:26.601Z caller=node_exporter.go:118 level=info collector=cpu
ts=2024-12-05T16:07:26.601Z caller=node_exporter.go:118 level=info collector=cpufreq
ts=2024-12-05T16:07:26.601Z caller=node_exporter.go:118 level=info collector=diskstats
如果有正常執行,是可以使用下面的網頁看到 node_exporter 暴露出來的資訊的:
註: 記得替換 IP
http://192.168.0.41:9100/metrics
設定 Node Exporter 自動執行
上面啟動 node_exporter 的方式是在指令介面中呼叫執行檔,並不會自動在背景執行。我們可以使用 Linux 內建的服務來自動執行 node_exporter。建立服務檔:
sudo vim /etc/systemd/system/node_exporter.service
在服務檔中填入以下內容:
註: 記得替換 ExecStart 內的檔案路徑
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
Restart=always
ExecStart=/opt/node_exporter-1.8.2.linux-amd64/node_exporter
[Install]
WantedBy=multi-user.target
啟用服務:
sudo systemctl enable node_exporter
執行服務:
sudo systemctl start node_exporter
確認服務執行狀態:
sudo systemctl status node_exporter
這樣在開機後網路服務準備好時就會自動啟動 node_exporter 了
更新 Prometheus ,抓取 Node Exporter 資料
編輯 prometheus 的設定檔,加入以下資訊:
global:
scrape_interval: 15s
evaluation_interval: 15s
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: node_exporter
static_configs:
- targets:
- "localhost:9100"
上面增加了一個 Job ,會抓取本機的 9100 網頁資訊,也就是 Node Exporter 暴露出來的資料。
重新啟動 Prometheus 後就會看到已經讀取到資料了:
在 Prometheus 的設定檔中也可以替主機加上別名(alias),這樣未來在查詢時就可以比較簡單的辨識主機。
以下示範監視兩台主機並設定別名的設定檔:
global:
scrape_interval: 15s
evaluation_interval: 15s
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: node_exporter
static_configs:
- targets:
- "localhost:9100"
labels:
alias: prometheus
- targets:
- "192.168.0.30:9100"
labels:
alias: server
參考資料:
Prometheus - Monitoring Linux host metrics with the Node Exporter
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com