- Добавлен новый коллектор 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
11 KiB
11 KiB
Коллектор 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 VEsystemctl
- управление сервисамиps
- список процессовgetent
- разрешение имен хостовnvidia-smi
- информация о NVIDIA GPUlspci
- информация о PCI устройствах (для AMD/Intel GPU)df
- информация о дискахcat /proc/loadavg
- средняя нагрузкаcat /proc/meminfo
- информация о памятиcat /proc/stat
- статистика CPUcat /proc/uptime
- время работы системы
Уникальные идентификаторы
node_uid
Генерируется на основе:
cluster_uuid
кластераnode_id
ноды
Формула: SHA256(cluster_uuid + ":" + node_id)[:16]
(первые 16 символов SHA256 хеша)
cluster_id
Генерируется на основе:
cluster_name
из corosync.confcluster_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)'
Устранение неполадок
Частые проблемы
-
"no cluster data found"
- Проверьте, что система является Proxmox VE нодой
- Убедитесь в доступности файла corosync.conf
- Проверьте права доступа к файлам конфигурации
-
"failed to parse corosync.conf"
- Проверьте формат файла corosync.conf
- Убедитесь, что в файле есть cluster_name и cluster_uuid
-
"cluster version not found"
- Убедитесь, что установлен Proxmox VE
- Проверьте доступность команды pveversion
-
Пустые данные о ресурсах
- Проверьте доступность системных команд
- Убедитесь в правильности конфигурации системы
Отладка
# Проверка доступности команд
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)