Sergey Antropoff 15e6260ac3 feat: добавлен коллектор proxvms и обновлена документация
- Добавлен новый коллектор proxvms для сбора информации о виртуальных машинах и контейнерах Proxmox
- Реализован парсинг конфигураций VM/контейнеров с структурированием данных
- Добавлена поддержка парсинга сетевых интерфейсов, IP конфигураций, SCSI/IDE устройств
- Реализован парсинг JSON из поля description с переводом русских ключей на английский
- Добавлена генерация уникальных идентификаторов (cluster_uid, node_uid, machine_uid)
- Обновлена документация для всех коллекторов:
  - proxcluster (существующая)
  - gpu (существующая)
  - proxnode (новая)
  - proxvms (новая)
  - system (новая)
  - docker (новая)
  - hba (новая)
  - sensors (новая)
  - kubernetes (новая)
  - macos (новая)
  - uptime (новая)
- Обновлен основной файл docs/collectors.md с полным списком коллекторов
- Добавлена поддержка платформ для каждого коллектора
- Включены примеры использования и устранение неполадок

Автор: Сергей Антропов, сайт: https://devops.org.ru
2025-09-15 12:47:44 +03:00

11 KiB
Raw Permalink Blame History

Коллектор proxnode

Автор: Сергей Антропов
Сайт: https://devops.org.ru

Описание

Коллектор proxnode собирает подробную информацию о Proxmox ноде, включая системные ресурсы, сервисы, диски, сетевые интерфейсы и другую важную информацию о состоянии ноды.

Поддерживаемые платформы

  • Linux: Полная поддержка
  • macOS/Windows: Не поддерживается (возвращает пустой JSON)

Собираемые данные

Основная информация о ноде

{
  "node_uid": "d8b7a93c2f0e4f16",           // Уникальный ID ноды (SHA256 от cluster_uuid + node_id, 16 символов)
  "node_id": "1",                            // ID ноды в кластере
  "name": "pve1",                            // Имя ноды
  "ip": "192.168.1.10",                      // IP адрес ноды
  "online": true,                            // Статус ноды
  "cluster_id": "a1b2c3d4e5f67890",         // ID кластера (SHA256 от cluster_name + cluster_uuid, 16 символов)
  "cluster_uuid": "12345678-1234-1234-1234-123456789abc", // UUID кластера
  "machine_id": "4b1d2c3a4e5f6789aabbccddeeff0011", // Machine ID системы
  "product_uuid": "C9E4DDB2-1F27-4F3B-B3A9-ACD2C66F73B0" // UUID продукта
}

Информация об операционной системе

{
  "os": {
    "kernel": "Linux 5.15.108-1-pve",        // Версия ядра
    "pve_version": "7.4-3",                  // Версия Proxmox VE
    "uptime_sec": 523423                     // Время работы в секундах
  }
}

Информация о железе

{
  "hardware": {
    "cpu_model": "Intel(R) Xeon(R) Gold 6226R", // Модель процессора
    "cpu_cores": 32,                         // Количество ядер
    "sockets": 2,                            // Количество сокетов
    "threads": 64,                           // Количество потоков
    "memory_total_mb": 262144                // Общая память в МБ
  }
}

Использование ресурсов

{
  "resources": {
    "cpu_usage_percent": 25.3,               // Использование CPU в процентах
    "memory_used_mb": 98304,                 // Использованная память в МБ
    "swap_used_mb": 512,                     // Использованный swap в МБ
    "loadavg": [0.52, 0.61, 0.72]           // Средняя нагрузка (1м, 5м, 15м)
  }
}

Сетевая информация

{
  "network": [
    {
      "iface": "eth0",                       // Имя интерфейса
      "mac": "52:54:00:12:34:56",            // MAC адрес
      "ip": "192.168.1.10",                  // IP адрес
      "rx_bytes": 123456789,                 // Принято байт
      "tx_bytes": 987654321,                 // Передано байт
      "errors": 0                            // Количество ошибок
    },
    {
      "iface": "vmbr0",                      // Имя интерфейса
      "type": "bridge",                      // Тип интерфейса
      "ip": "192.168.1.1"                    // IP адрес
    }
  ]
}

Информация о дисках

{
  "disks": [
    {
      "device": "/dev/sda",                  // Устройство
      "model": "Samsung SSD 870 EVO",        // Модель диска
      "size_gb": 1000,                       // Размер в ГБ
      "used_gb": 200,                        // Использовано в ГБ
      "health": "PASSED"                     // Состояние здоровья
    },
    {
      "device": "rpool",                     // Устройство
      "type": "zfs",                         // Тип файловой системы
      "size_gb": 5000,                       // Размер в ГБ
      "used_gb": 2300,                       // Использовано в ГБ
      "status": "ONLINE"                     // Статус
    }
  ]
}

Статус сервисов

{
  "services": [
    {"name": "pve-cluster", "active": true}, // Сервис кластера
    {"name": "pvedaemon", "active": true},   // Демон Proxmox
    {"name": "pveproxy", "active": true},    // Прокси Proxmox
    {"name": "corosync", "active": true}     // Corosync
  ]
}

Информация о GPU

{
  "gpus": [
    {
      "index": 0,                            // Индекс GPU
      "model": "NVIDIA GeForce RTX 4090",    // Модель GPU
      "memory_total_mb": 24576,              // Общая память в МБ
      "memory_used_mb": 8192,                // Использованная память в МБ
      "utilization_percent": 45.5,           // Утилизация в процентах
      "temperature_c": 65.0                  // Температура в градусах Цельсия
    }
  ]
}

Конфигурация

config.yaml

collectors:
  proxnode:
    enabled: true
    type: exec
    key: proxnode
    interval: "300s"    # 5 минут
    timeout: "30s"
    exec: "./collectors/proxnode"
    platforms: [linux]

Переменные окружения

  • COLLECTOR_TIMEOUT: Таймаут выполнения коллектора (по умолчанию 30s)

Требования

Системные требования

  • Proxmox VE нода
  • Доступ к файлам конфигурации:
    • /etc/corosync/corosync.conf (основной)
    • /etc/pve/corosync.conf (альтернативный)
    • /var/lib/pve-cluster/corosync.conf (альтернативный)

Команды

Коллектор использует следующие команды (должны быть доступны):

  • pveversion - версия Proxmox VE
  • systemctl - управление сервисами
  • ps - список процессов
  • getent - разрешение имен хостов
  • nvidia-smi - информация о NVIDIA GPU
  • lspci - информация о PCI устройствах (для AMD/Intel GPU)
  • df - информация о дисках
  • cat /proc/loadavg - средняя нагрузка
  • cat /proc/meminfo - информация о памяти
  • cat /proc/stat - статистика CPU
  • cat /proc/uptime - время работы системы

Уникальные идентификаторы

node_uid

Генерируется на основе:

  • cluster_uuid кластера
  • node_id ноды

Формула: SHA256(cluster_uuid + ":" + node_id)[:16] (первые 16 символов SHA256 хеша)

cluster_id

Генерируется на основе:

  • cluster_name из corosync.conf
  • cluster_uuid из corosync.conf

Формула: SHA256(cluster_name + ":" + cluster_uuid)[:16] (первые 16 символов SHA256 хеша)

Это обеспечивает уникальность идентификаторов для каждого кластера и ноды, даже если имена совпадают.

Примеры использования

Проверка работы коллектора

# Запуск коллектора напрямую
./bin/agent/collectors/proxnode

# Запуск через агент
make run

Фильтрация данных

# Основная информация о ноде
./bin/agent/collectors/proxnode | jq '.node_uid, .name, .ip'

# Информация об ОС
./bin/agent/collectors/proxnode | jq '.os'

# Информация о железе
./bin/agent/collectors/proxnode | jq '.hardware'

# Использование ресурсов
./bin/agent/collectors/proxnode | jq '.resources'

# Сетевая информация
./bin/agent/collectors/proxnode | jq '.network'

# Информация о дисках
./bin/agent/collectors/proxnode | jq '.disks'

# Статус сервисов
./bin/agent/collectors/proxnode | jq '.services'

# Информация о GPU
./bin/agent/collectors/proxnode | jq '.gpus'

# Только активные сервисы
./bin/agent/collectors/proxnode | jq '.services[] | select(.active == true)'

# Диски с высокой утилизацией (>80%)
./bin/agent/collectors/proxnode | jq '.disks[] | select((.used_gb / .size_gb * 100) > 80)'

Устранение неполадок

Частые проблемы

  1. "no cluster data found"

    • Проверьте, что система является Proxmox VE нодой
    • Убедитесь в доступности файла corosync.conf
    • Проверьте права доступа к файлам конфигурации
  2. "failed to parse corosync.conf"

    • Проверьте формат файла corosync.conf
    • Убедитесь, что в файле есть cluster_name и cluster_uuid
  3. "cluster version not found"

    • Убедитесь, что установлен Proxmox VE
    • Проверьте доступность команды pveversion
  4. Пустые данные о ресурсах

    • Проверьте доступность системных команд
    • Убедитесь в правильности конфигурации системы

Отладка

# Проверка доступности команд
which pveversion systemctl ps getent nvidia-smi lspci df

# Проверка файлов конфигурации
ls -la /etc/corosync/corosync.conf /etc/pve/corosync.conf

# Проверка статуса сервисов
systemctl status pve-cluster corosync pveproxy pvedaemon

# Проверка системных ресурсов
cat /proc/loadavg /proc/meminfo /proc/stat /proc/uptime

# Проверка дисков
df -h

# Проверка GPU
nvidia-smi

Безопасность

  • Коллектор требует права на чтение системных файлов конфигурации
  • Не передает пароли или секретные ключи
  • Собирает только публичную информацию о ноде
  • Не выполняет привилегированные операции

Производительность

  • Время выполнения: ~5-15 секунд
  • Интервал сбора: рекомендуется 5 минут (300s)
  • Потребление ресурсов: минимальное
  • Собирает только локальную информацию о ноде

Совместимость

  • Proxmox VE: 6.0+
  • Ноды: все типы нод Proxmox VE
  • Диски: все типы устройств (sda, nvme, vda и др.)
  • Сети: все типы интерфейсов (eth, ens, enp, vmbr и др.)
  • GPU: NVIDIA (через nvidia-smi), AMD/Intel (через lspci)