Мониторинг Proxmox VE 8.3.0 в Grafana

Для понимания:

Задача - мониторить Proxmox VE средствами Grafana + Prometheus. Связка графаны и прометеуса находится на отдельной вм.

Подготовка учетной записи и группы для мониторинга в Proxmox

pveum groupadd monitoring -comment 'Monitoring group'
pveum aclmod / -group monitoring -role PVEAuditor
pveum useradd pve_exporter@pve
pveum usermod pve_exporter@pve -group monitoring
pveum passwd pve_exporter@pve

Установка prometheus_pve_exporter

Ставим пакеты python на Proxmox VE

apt install python3-pip python3-venv

Далее организуем venv в /opt/prometheus-pve-exporter

python3 -m venv /opt/prometheus-pve-exporter

И установим пакет. Так же проверим что скрипт запускает --help

/opt/prometheus-pve-exporter/bin/pip install prometheus-pve-exporter
/opt/prometheus-pve-exporter/bin/pve_exporter --help

Если выводится список аргументов, то установка прошла успешно

Создаем конфигурацию для pve_exporter

Хранить конфиг будем в /etc/prometheus. Предварительно создадим папку и запишем конфигурацию в /etc/prometheus/pve.yml

mkdir -p /etc/prometheus
cat <<EOF > /etc/prometheus/pve.yml
default:
    user: pve_exporter@pve
    password: YourStronkPassword
    verify_ssl: false
EOF

Создаем службу systemd pve_exporter

Для того, чтобы экспортер работал при запуске системы автоматически, создадим демона

cat <<EOF> /etc/systemd/system/prometheus-pve-exporter.service
[Unit]
Description=Prometheus exporter for Proxmox VE
Documentation=https://github.com/znerol/prometheus-pve-exporter

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

[Install]
WantedBy=multi-user.target
EOF

Далее по классике перезагружаем демона и запускаем службу

systemctl daemon-reload
systemctl start prometheus-pve-exporter
systemctl status prometheus-pve-exporter

Для проверки дополнительно можно обратиться по адресу вашего proxmox и порту 9221 и content-path /pve чтобы убедиться в том, что метрики собираются. Например:

mayekkuzu@grafana:~$ curl http://proxmox-node-fqdn-or-ip:9221/pve
# HELP pve_up Node/VM/CT-Status is online/running
# TYPE pve_up gauge
pve_up{id="node/main-server"} 1.0
pve_up{id="qemu/100"} 1.0
pve_up{id="qemu/101"} 1.0
pve_up{id="qemu/102"} 1.0
...

Что говорит о том все работает корректно

Добавляем в Prometheus job (на VM с Grafana)

Прописываем такую конфигурацию в блок scrape_configs

  - job_name: 'pve'
    metrics_path: /pve
    static_configs:
      - targets: ["ip-or-fqdn-promox:9221"]
    params:
      module: [default]

Обязательно проверяем конфигурацию:

mayekkuzu@grafana:~$ sudo promtool check config /etc/prometheus/prometheus.yml
Checking /etc/prometheus/prometheus.yml
 SUCCESS: /etc/prometheus/prometheus.yml is valid prometheus config file syntax

После этого спокойно рестартим службу prometheus на вм

Добавляем дашборд в Grafana

Копируем ID дашборда на странице Proxmox via Prometheus. Далее преходим на инстанс Grafana. В нем жмякаем Dashboards -> New -> Import. Вбиваем ID дашборда и Load. После чего в идеале увидите панель с метриками которые собираются с Proxmox. Альтернативно можно импортировать JSON на той же странице если есть проблемы с доступностью до репозитория дашбордов графаны.

Откуда информация?