Proxmox
May 29

Glances в Proxmox и экспорт в Grafana

Случайно наткнулся на проект и захотелось им поделиться.

Glances - это кроссплатформенный инструмент для мониторинга системных ресурсов, работающий в терминале и написанный на Python. Основная задача Glances - предоставлять максимально полную информацию о состоянии системы на одном экране в режиме реального времени, что делает его удобным для администрирования серверов и рабочих станций.

Полученные метрики из Glances можно экспортировать в CSV, InfluxDB, Cassandra, OpenTSDB, StatsD, ElasticSearch или даже RabbitMQ. Glances также предоставляет специальную панель мониторинга Grafana.

Тезисно, этакий динамический htop в браузере с возможностью экспорта куда угодно

Устанавливаем змею

apt update && apt install python3-pip python3-dev gcc pipx curl -y

Устанавливаем Glances в pipx

pipx install glances[web]
Если все предыдущие команды выполнялись из домашнего каталога, то явный путь для запуска Glances будет:
/root/.local/bin/glances -w

Добавим в переменную окружения PATH из домашнего каталога

pipx ensurepath

После потребуется рестарт хоста

reboot

Проверяем, что путь добавлен

echo $PATH
which glances

Запускаем процесс

glances -w

Открываем веб интерфейс Glances с указанным хосту IP адреса с портом 61208. Должно получиться http://IP_адрес_хоста:61208

Настраиваем сервис Glances

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

nano /etc/systemd/system/glances.service

Копируем. Вставляем содержимое и сохраняем.

Я делал от рута, поэтому у меня всё просто
[Unit]
Description=Glances - web-based monitoring
After=network.target

[Service]
ExecStart=/root/.local/bin/glances -w
Restart=always
User=root
Environment=PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

[Install]
WantedBy=multi-user.target

Перезапускаем сервисы

systemctl daemon-reexec
systemctl daemon-reload
systemctl enable --now glances
systemctl status glances

Glances запущен, и теперь можно открывать его через web или экспортировать в другие сервисы.

Устанавливаем InfluxDB

curl -LO https://download.influxdata.com/influxdb/releases/influxdb2_2.7.6-1_amd64.deb
sudo dpkg -i influxdb2_2.7.6-1_amd64.deb
sudo service influxdb start

Настраиваем InfluxDB


Настраиваем экспорт в InfluxDB


Так можно найти, где находится glances.conf

find / -type f -name "glances.conf"

Настройка конфигурации (путь к файлу может отличаться):

nano /root/.local/share/pipx/venvs/glances/share/doc/glances/glances.conf

Прокручиваем вниз до:

[influxdb2]
host=localhost
port=8086
protocol=http
org=fonwa
bucket=glances
token=токен, полученный из influxDB
measurement=localhost
Лайфхак - чтобы скролить длинные конфиги, подключайся через SSH и двигай колесо.

Правим и сохраняемся

Установка клиента InfluxDB:

pipx inject glances influxdb-client

Проверяем через консоль экспорт

glances --export influxdb2
Если метрики отправляются и ошибок нет — переходим к следующему шагу.

Проверяем путь к Glances:

which glances

(вставьте его в ExecStart, если он отличается)

sudo nano /etc/systemd/system/glances-influxdb.service

Копируем содержимое и сохраняем

[Unit]
Description=Glances system monitor with InfluxDB 2.x export
After=network.target

[Service]
ExecStart=/root/.local/bin/glances --export influxdb2
Restart=always
User=root

[Install]
WantedBy=multi-user.target

Перезапускаем сервисы

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable glances-influxdb
sudo systemctl start glances-influxdb
systemctl status glances-influxdb.service

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

Выбираем Data Sources -> Add new data source.

Находим InfluxDB

Query Language - Flux

URL - http://IP_вашего_хоста:8086

User - указанный вами логин в Influx

Password - токен из Influx

Organization - организация из influx

Token - токен из Influx

Выбираем в самом низу Save & Test

Переходим в Dashboard -> New -> Import

Копируем JSON отсюда -> Load

Выбираем в нижнем выпадающем поле Influxdb -> Import

Дашборд готов и работает. Даже после перезагрузки хоста.

Добавляем Glances в GetHomePage

Для добавления в GetHomePage в хеддер нужно поправить widgets.yaml

nano /path/to/config/widgets.yaml
- glances:
    url: http://IP_вашего_хоста:61208
    version: 4 # required only if running glances v4 or higher, defaults to 3
    cpu: true # optional, enabled by default, disable by setting to false
    mem: true # optional, enabled by default, disable by setting to false
    cputemp: true # disabled by default
    uptime: true # disabled by default
    disk: / # disabled by default, use mount point of disk(s) in glances. Can also be a list (see below)
    diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
    expanded: true # show the expanded view

Мне помогли:

https://github.com/nicolargo/glances

https://github.com/nicolargo/glances/blob/develop/conf/glances-grafana-influxql.json

https://habr.com/ru/companies/vdsina/articles/545274/