はじめに

ProxmoxのメトリクスをPrometheusで収集するためにexporterのインストールと設定を行う

1. proxmoxのユーザを作成

SSHでrootユーザでproxmoxサーバにログインし、prometheusの読み取り用ユーザを作成する
ロールにはPVEAuditorを設定する。GUIからでも作成は可能ですがコマンドのが楽ですね

1
2
pveum user add prometheus@pve -password <password>
pveum acl modify / -user prometheus@pve -role PVEAuditor

2. Linuxユーザを作成

exporter用のLinuxユーザも同じく作成する
ログインできなくてもよいため /bin/falseと設定している

1
useradd -s /bin/false prometheus

3. prometheus-pve-exporterのインストール

prometheus-pve/prometheus-pve-exporter
https://github.com/prometheus-pve/prometheus-pve-exporter

レポジトリ内にあるwikiを参考にPython3-venvの作成をする
https://github.com/prometheus-pve/prometheus-pve-exporter/wiki/PVE-Exporter-on-Proxmox-VE-Node-in-a-venv

環境

1
2
python3 --version
Python 3.11.2

Python3の仮想環境を作成してpipにてexporterをインストールする

1
2
3
apt install python3.11-venv
python3 -m venv /opt/prometheus-pve-exporter
/opt/prometheus-pve-exporter/bin/pip install prometheus-pve-exporter

exporterの設定を行う。専用ユーザのためpasswordで記述しているが、嫌な場合はTokenを使うことも可能

1
2
3
4
5
6
7
/etc/prometheus/pve.yml
default:
    user: prometheus@pve
    password: <password>
    # Optional: set to false to skip SSL/TLS verification
    verify_ssl: false
EOF

4. Systemd Serviceを作成する

自動起動するようにSystemd Serviceを作成する

/etc/systemd/system/prometheus-pve-exporter.service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description=Prometheus exporter for Proxmox VE
Documentation=https://github.com/znerol/prometheus-pve-exporter

[Service]
Restart=always
User=prometheus
ExecStart=/opt/prometheus-pve-exporter/bin/pve_exporter --config.file /etc/prometheus/pve.yml

[Install]
WantedBy=multi-user.target
EOF

daemon-reloadしてサービスを起動する

1
2
3
systemctl daemon-reload
systemctl enable prometheus-pve-exporter.service
systemctl start prometheus-pve-exporter.service

http://<hostname>:9221/pve?target=<hostname> にアクセスしてexporterが動いていることを確認する

5. Prometheus.ymlの設定

Prometheusからメトリクスを取得するjobを設定する

Prometheus.yml

1
2
3
4
5
6
7
8
9
  - job_name: 'pve'
    static_configs:
      - targets:
        - <hostname>:9221  # Proxmox VE node with PVE exporter.
    metrics_path: /pve
    params:
      module: [default]
      cluster: ['1']
      node: ['1']

6. Grafanaで確認する

ダウンロード数の多いこちらのダッシュボードを使用してみました。

Proxmox via Prometheus
https://grafana.com/grafana/dashboards/10347-proxmox-via-prometheus/

dashboard

参考サイト

Gather metrics of your Proxmox VE server with Prometheus https://community.hetzner.com/tutorials/proxmox-prometheus-metrics