Исправлен коллектор 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 package main
// Автор: Сергей Антропов, сайт: https://devops.org.ru // Автор: Сергей Антропов, сайт: https://devops.org.ru
// Коллектор proxcluster на Go. Собирает информацию о Proxmox кластере. // Коллектор proxcluster - собирает информацию о Proxmox кластере
// Реализация платформозависима (linux), на остальных платформах возвращает пустой JSON.
import ( import (
"context" "context"
@ -13,8 +12,6 @@ import (
"time" "time"
) )
// collectProxCluster реализуется в файлах с билд-тегами под конкретные ОС.
func main() { func main() {
// Таймаут можно переопределить окружением COLLECTOR_TIMEOUT // Таймаут можно переопределить окружением COLLECTOR_TIMEOUT
timeout := parseDurationOr("COLLECTOR_TIMEOUT", 30*time.Second) 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 package main
// Автор: Сергей Антропов, сайт: https://devops.org.ru // Автор: Сергей Антропов, сайт: https://devops.org.ru
// Заглушка для неподдерживаемых платформ. // Заглушка для неподдерживаемых платформ
import ( import (
"context" "context"
"errors" "errors"
) )
// collectProxCluster возвращает пустой результат для неподдерживаемых платформ. // collectProxCluster возвращает пустой результат для неподдерживаемых платформ
func collectProxCluster(ctx context.Context) (map[string]any, error) { func collectProxCluster(ctx context.Context) (map[string]interface{}, error) {
return nil, errors.New("proxcluster collector is not supported on this platform") return nil, errors.New("proxcluster collector is not supported on this platform")
} }