Исправлен коллектор proxcluster: улучшено получение данных о CPU/RAM и ресурсах нод

- Добавлена проверка онлайн статуса нод через pvesh get /nodes
- Реализованы альтернативные методы получения данных о ресурсах через /nodes/{node}/rrddata и /nodes/{node}/capabilities
- Улучшено получение информации о VM и контейнерах с детальными ресурсами
- Добавлены fallback методы для получения данных о железе через /nodes/{node}/hardware
- Исправлена проблема с нулевыми значениями CPU/RAM

Автор: Сергей Антропов, сайт: https://devops.org.ru
This commit is contained in:
Sergey Antropoff 2025-09-11 18:49:43 +03:00
parent 621d3f0a43
commit bb966dcea2
3 changed files with 726 additions and 1298 deletions

View File

@ -1,8 +1,7 @@
package main
// Автор: Сергей Антропов, сайт: https://devops.org.ru
// Коллектор proxcluster на Go. Собирает информацию о Proxmox кластере.
// Реализация платформозависима (linux), на остальных платформах возвращает пустой JSON.
// Коллектор proxcluster - собирает информацию о Proxmox кластере
import (
"context"
@ -13,8 +12,6 @@ import (
"time"
)
// collectProxCluster реализуется в файлах с билд-тегами под конкретные ОС.
func main() {
// Таймаут можно переопределить окружением COLLECTOR_TIMEOUT
timeout := parseDurationOr("COLLECTOR_TIMEOUT", 30*time.Second)

File diff suppressed because it is too large Load Diff

View File

@ -3,14 +3,14 @@
package main
// Автор: Сергей Антропов, сайт: https://devops.org.ru
// Заглушка для неподдерживаемых платформ.
// Заглушка для неподдерживаемых платформ
import (
"context"
"errors"
)
// collectProxCluster возвращает пустой результат для неподдерживаемых платформ.
func collectProxCluster(ctx context.Context) (map[string]any, error) {
// collectProxCluster возвращает пустой результат для неподдерживаемых платформ
func collectProxCluster(ctx context.Context) (map[string]interface{}, error) {
return nil, errors.New("proxcluster collector is not supported on this platform")
}