Proxmox. Часть 6. Установка Graphana-Prometheus в виртуальной машине с использованием docker-compose

Продолжим 5-ую часть статьи по Proxmox и проделаем почти тоже самое. Установим связку Graphana-Prometheus и подключим к ней сервер Proxmox и одну виртуальную машину.

Для начала пару слов о том, что такое Graphana и Prometheus.

Grafana — это платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.

Prometheus — это система мониторинга для анализа данных метрик и отправки необходимых предупреждений в основе которой лежит БД временных рядов (Time series database, TSDB).

Связка Graphana + Prometheus — классика мониторинга, в которой Prometheus хранит и собирает данные, а Graphana отображает эти данные. В нашем примере Prometheus будет собирать данные из экземпляра Node Exporter.

Клонируем виртуальную машину с шаблона 9000:

Повышаем количество оперативной памяти до 6144 МБ и количество ядер процессора до 2-ух (см. 5 часть).

Запускаем систему, устанавливаем Docker и добавляем своего пользователя в группу docker, как мы это делали в предыдущей части.

После установки Docker создаем папку /srv/grafana для проекта и даем полномочия на папку группе docker:

sudo mkdir -p /srv/grafana
sudo chown -R :docker /srv/grafana
sudo chmod -R 775 /srv/grafana

В папке /srv/grafana создаем конфигурационный файл docker-compose.yml:

cd /srv/grafana/
nano docker-compose.yml

Вставляем следующее содержимое в docker-compose.yml и сохраняем файл:

version: '3.8'

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus:/etc/prometheus
    ports:
      - "9090:9090"
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
    volumes:
      - grafana-data:/var/lib/grafana

volumes:
  grafana-data:

Создадим папку и конфигурационный файл для Prometheus prometheus.yml:

mkdir prometheus
nano prometheus/prometheus.yml

В конфигурационный файл prometheus.yml вставляем:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'proxmox'
    static_configs:
      - targets: ['192.168.31.23:9100']

  - job_name: 'virtual_machine'
    static_configs:
      - targets: ['192.168.31.164:9100']

Мы будем опрашивать для получения данных мониторинга две виртуальных машины:

  • 192.168.31.23 — виртуальная машина, на которую мы устанавливали Proxmox.
  • 192.168.31.164 — виртуальная машина, на которой разворачиваем связку Graphana + Prometheus.

Для передачи метрик необходимо установить Node Exporter на обе виртуальные машины, где располагается Proxmox и на виртуальную машину, где запускается Graphana + Prometheus.

Сперва установим Node Exporter на текущую виртуальную машину (Graphana + Prometheus).

Перейдем по ссылке https://github.com/prometheus/node_exporter/releases чтобы узнать последнюю версию Node Exporter:

Скачиваем необходимый архив, в нашем случае это node_exporter-1.8.2.linux-amd64.tar.gz :

cd ~
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar xvfz node_exporter-1.8.2.linux-amd64.tar.gz
cd node_exporter-1.8.2.linux-amd64

Запустим Node Exporter как службу.

Для этого переместим бинарные файлы Node Exporter в /usr/local/bin:

sudo mv node_exporter /usr/local/bin/

Открываем файл node_exporter.service на редактирование:

sudo nano /etc/systemd/system/node_exporter.service

Вставляем следующее содержимое:

[Unit]
Description=Node Exporter
After=network.target

[Service]
User=nodeusr
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=default.target

Создадим пользователя nodeusr для запуска службы Node Exporter:

sudo useradd -rs /bin/false nodeusr

Перезапустим службу systemd для регистрации службы node_exporter и запустим службу node_exporter:

sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

Проверим службу:

sudo systemctl status node_exporter

Active (running) – служба успешно запущена!

Проделаем все те же действия в консоли (Shell) виртуальной машины, на которой у нас установлен Proxmox:

Так как выполнять команды мы будем под пользователем root, то приставка sudo перед командами на данной виртуальной машине будет не нужна.

После того, как на обоих виртуальных машинах установлен Node Exporter возвращаемся на виртуальную машину с Graphana + Prometheus, перейдем в папку с docker-compose.yml и запустим Grafana + Prometheus:

cd /srv/grafana/
docker compose up -d

Проверяем доступность сервисов.

Grafana доступна по http://192.168.31.164:3000:

Prometheus доступен по http://192.168.31.164:9090:

Попробуем авторизоваться в Grafana. Логин – admin, пароль – admin.

После авторизации добавим новый источник данных:

Выбираем Prometheus:

В качестве пути к серверу Prometheus указываем его название сервиса в docker-compose.ymlhttp://prometheus:9090:

Сохраняем наш источник данных:

Импортируем новый Dashboard:

В строке поиска указываем ID 1860 (https://grafana.com/grafana/dashboards/1860-node-exporter-full/). Это уже готовый Dashboard для Node Exporter:

Жмем Load.

После загрузки Dashboard указываем источник данных Prometheus и нажимаем Import:

В итоге перед нами должен открыться работающий Dashboard:

Напомню, что мы делали мониторинг для двух виртуальных машин. Переключаться между машинами можно в выпадающем списке сверху: