# Коллектор proxnode **Автор:** Сергей Антропов **Сайт:** https://devops.org.ru ## Описание Коллектор `proxnode` собирает подробную информацию о Proxmox ноде, включая системные ресурсы, сервисы, диски, сетевые интерфейсы и другую важную информацию о состоянии ноды. ## Поддерживаемые платформы - **Linux**: Полная поддержка - **macOS/Windows**: Не поддерживается (возвращает пустой JSON) ## Собираемые данные ### Основная информация о ноде ```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 продукта } ``` ### Информация об операционной системе ```json { "os": { "kernel": "Linux 5.15.108-1-pve", // Версия ядра "pve_version": "7.4-3", // Версия Proxmox VE "uptime_sec": 523423 // Время работы в секундах } } ``` ### Информация о железе ```json { "hardware": { "cpu_model": "Intel(R) Xeon(R) Gold 6226R", // Модель процессора "cpu_cores": 32, // Количество ядер "sockets": 2, // Количество сокетов "threads": 64, // Количество потоков "memory_total_mb": 262144 // Общая память в МБ } } ``` ### Использование ресурсов ```json { "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м) } } ``` ### Сетевая информация ```json { "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 адрес } ] } ``` ### Информация о дисках ```json { "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" // Статус } ] } ``` ### Статус сервисов ```json { "services": [ {"name": "pve-cluster", "active": true}, // Сервис кластера {"name": "pvedaemon", "active": true}, // Демон Proxmox {"name": "pveproxy", "active": true}, // Прокси Proxmox {"name": "corosync", "active": true} // Corosync ] } ``` ### Информация о GPU ```json { "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 ```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 хеша) Это обеспечивает уникальность идентификаторов для каждого кластера и ноды, даже если имена совпадают. ## Примеры использования ### Проверка работы коллектора ```bash # Запуск коллектора напрямую ./bin/agent/collectors/proxnode # Запуск через агент make run ``` ### Фильтрация данных ```bash # Основная информация о ноде ./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. **Пустые данные о ресурсах** - Проверьте доступность системных команд - Убедитесь в правильности конфигурации системы ### Отладка ```bash # Проверка доступности команд 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)