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
pipx inject glances influxdb-client
Проверяем через консоль экспорт
glances --export influxdb2
Если метрики отправляются и ошибок нет — переходим к следующему шагу.
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.
URL
- http://IP_вашего_хоста:8086
User
- указанный вами логин в Influx
Organization
- организация из 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