Blame
0bc854 | Mayekkuzu | 2025-08-10 09:45:26 | 1 | # Мониторинг Proxmox VE 8.3.0 в Grafana |
f62c43 | Mayekkuzu | 2025-08-10 10:55:38 | 2 | Для понимания: |
0bc854 | Mayekkuzu | 2025-08-10 09:45:26 | 3 | |
f62c43 | Mayekkuzu | 2025-08-10 10:55:38 | 4 | Задача - мониторить Proxmox VE средствами Grafana + Prometheus. Связка графаны и прометеуса находится на отдельной вм. |
5 | ## Подготовка учетной записи и группы для мониторинга в Proxmox |
|||
6 | ```bash |
|||
7 | pveum groupadd monitoring -comment 'Monitoring group' |
|||
8 | pveum aclmod / -group monitoring -role PVEAuditor |
|||
9 | pveum useradd pve_exporter@pve |
|||
10 | pveum usermod pve_exporter@pve -group monitoring |
|||
11 | pveum passwd pve_exporter@pve |
|||
12 | ``` |
|||
13 | ## Установка prometheus_pve_exporter |
|||
14 | Ставим пакеты python на Proxmox VE |
|||
15 | ```bash |
|||
16 | apt install python3-pip python3-venv |
|||
17 | ``` |
|||
18 | Далее организуем venv в /opt/prometheus-pve-exporter |
|||
19 | ```bash |
|||
20 | python3 -m venv /opt/prometheus-pve-exporter |
|||
21 | ``` |
|||
22 | И установим пакет. Так же проверим что скрипт запускает --help |
|||
23 | ```bash |
|||
24 | /opt/prometheus-pve-exporter/bin/pip install prometheus-pve-exporter |
|||
25 | /opt/prometheus-pve-exporter/bin/pve_exporter --help |
|||
26 | ``` |
|||
27 | Если выводится список аргументов, то установка прошла успешно |
|||
28 | ## Создаем конфигурацию для pve_exporter |
|||
29 | Хранить конфиг будем в `/etc/prometheus`. Предварительно создадим папку и запишем конфигурацию в /etc/prometheus/pve.yml |
|||
30 | ```bash |
|||
31 | mkdir -p /etc/prometheus |
|||
32 | cat <<EOF > /etc/prometheus/pve.yml |
|||
33 | default: |
|||
34 | user: pve_exporter@pve |
|||
35 | password: YourStronkPassword |
|||
36 | verify_ssl: false |
|||
37 | EOF |
|||
38 | ``` |
|||
39 | ## Создаем службу systemd pve_exporter |
|||
40 | Для того, чтобы экспортер работал при запуске системы автоматически, создадим демона |
|||
41 | ```bash |
|||
42 | cat <<EOF> /etc/systemd/system/prometheus-pve-exporter.service |
|||
43 | [Unit] |
|||
44 | Description=Prometheus exporter for Proxmox VE |
|||
45 | Documentation=https://github.com/znerol/prometheus-pve-exporter |
|||
46 | ||||
47 | [Service] |
|||
48 | Restart=always |
|||
49 | ExecStart=/opt/prometheus-pve-exporter/bin/pve_exporter --config.file /etc/prometheus/pve.yml |
|||
50 | ||||
51 | [Install] |
|||
52 | WantedBy=multi-user.target |
|||
53 | EOF |
|||
54 | ``` |
|||
55 | Далее по классике перезагружаем демона и запускаем службу |
|||
56 | ```bash |
|||
57 | systemctl daemon-reload |
|||
58 | systemctl start prometheus-pve-exporter |
|||
59 | systemctl status prometheus-pve-exporter |
|||
60 | ``` |
|||
61 | Для проверки дополнительно можно обратиться по адресу вашего proxmox и порту 9221 и content-path /pve чтобы убедиться в том, что метрики собираются. Например: |
|||
62 | ```bash |
|||
63 | mayekkuzu@grafana:~$ curl http://proxmox-node-fqdn-or-ip:9221/pve |
|||
64 | # HELP pve_up Node/VM/CT-Status is online/running |
|||
65 | # TYPE pve_up gauge |
|||
66 | pve_up{id="node/main-server"} 1.0 |
|||
67 | pve_up{id="qemu/100"} 1.0 |
|||
68 | pve_up{id="qemu/101"} 1.0 |
|||
69 | pve_up{id="qemu/102"} 1.0 |
|||
70 | ... |
|||
71 | ``` |
|||
72 | Что говорит о том все работает корректно |
|||
73 | ## Добавляем в Prometheus job (на VM с Grafana) |
|||
74 | Прописываем такую конфигурацию в блок `scrape_configs` |
|||
75 | ``` |
|||
76 | - job_name: 'pve' |
|||
77 | metrics_path: /pve |
|||
78 | static_configs: |
|||
79 | - targets: ["ip-or-fqdn-promox:9221"] |
|||
80 | params: |
|||
81 | module: [default] |
|||
82 | ``` |
|||
83 | Обязательно проверяем конфигурацию: |
|||
84 | ```bash |
|||
85 | mayekkuzu@grafana:~$ sudo promtool check config /etc/prometheus/prometheus.yml |
|||
86 | Checking /etc/prometheus/prometheus.yml |
|||
87 | SUCCESS: /etc/prometheus/prometheus.yml is valid prometheus config file syntax |
|||
88 | ``` |
|||
89 | После этого спокойно рестартим службу prometheus на вм |
|||
90 | ## Добавляем дашборд в Grafana |
|||
91 | Копируем ID дашборда на странице [Proxmox via Prometheus](https://grafana.com/grafana/dashboards/10347-proxmox-via-prometheus/). Далее преходим на инстанс Grafana. В нем жмякаем `Dashboards -> New -> Import`. Вбиваем ID дашборда и Load. После чего в идеале увидите панель с метриками которые собираются с Proxmox. Альтернативно можно импортировать JSON на той же странице если есть проблемы с доступностью до репозитория дашбордов графаны. |
|||
92 | ||||
93 | ## Откуда информация? |
|||
94 | - Гитхаб проекта https://github.com/prometheus-pve/prometheus-pve-exporter |
|||
95 | - Proxmox Exporter in venv - https://github.com/prometheus-pve/prometheus-pve-exporter/wiki/PVE-Exporter-on-Proxmox-VE-Node-in-a-venv |
|||
96 | - Рабочая инструкция, но дзен есть дзен (затык на установке с pip, workaround - в venv) - https://dzen.ru/a/ZEZsd97tql_ryU1W |