-
安裝 Docker
-
安裝 nvidia_gpu_exporter
從 https://github.com/utkuozdemir/nvidia_gpu_exporter 下載。
docker run -d \
--name nvidia_smi_exporter \
--restart unless-stopped \
--device /dev/nvidiactl:/dev/nvidiactl \
--device /dev/nvidia0:/dev/nvidia0 \
-v /usr/lib/x86_64-linux-gnu/libnvidia-ml.so:/usr/lib/x86_64-linux-gnu/libnvidia-ml.so \
-v /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1:/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 \
-v /usr/bin/nvidia-smi:/usr/bin/nvidia-smi \
-p 9835:9835 \
utkuozdemir/nvidia_gpu_exporter:1.2.0
- 安裝 prometheus
從 https://prometheus.io/docs/prometheus/latest/installation/ 下載。
# 建立持久化儲存卷以儲存資料
docker volume create prometheus-data
# 我的全域設定
global:
scrape_interval: 15s # 將採集間隔設定為每 15 秒。預設為每 1 分鐘。
evaluation_interval: 15s # 每 15 秒評估規則。預設為每 1 分鐘。
# scrape_timeout 設定為全域預設值 (10s)。
# Alertmanager 設定
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# 根據全域 'evaluation_interval' 設定,一次性載入規則並定期評估它們。
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# 包含僅包含一個端點的採集配置:
# 在這裡是 Prometheus 本身。
scrape_configs:
# 工作名稱將作為標籤 `job=<job_name>` 添加到從此配置中採集的任何時間序列。
- job_name: "prometheus"
# metrics_path 預設為 '/metrics'
# scheme 預設為 'http'。
static_configs:
- targets: ["localhost:9090"]
- job_name: "GPU"
static_configs:
- targets: ["172.17.0.1:9835"]
# 啟動 Prometheus 容器
docker run -d \
-p 9090:9090 \
-v /root/monitor/prometheus.yml:/etc/prometheus/prometheus.yml \
-v prometheus-data:/prometheus \
prom/prometheus
- 安裝 Grafana
從 https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/ 下載。
# 建立持久化儲存卷以儲存資料
docker volume create grafana-storage
# 啟動 Grafana
docker run -d -p 3000:3000 --name=grafana \
--volume grafana-storage:/var/lib/grafana \
grafana/grafana-enterprise
- Grafana 設定
首先,使用 admin/admin 登入。
其次,設定 prometheus 為資料來源,Prometheus server URL *
為 http://172.17.0.1:9090
(docker 網關 IP)。
第三,匯入儀表板,並在 ID 欄位中輸入 14574。