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

9.1 KiB
Raw Permalink Blame History

Коллектор sensors

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

Описание

Коллектор sensors собирает данные с датчиков температуры, напряжения и вентиляторов через lm-sensors и IPMI. Предоставляет детальную информацию о состоянии системы и ее компонентов.

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

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

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

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

{
  "sensors": {
    "temperature": [                         // Датчики температуры
      {
        "name": "coretemp-isa-0000",         // Имя датчика
        "adapter": "ISA adapter",            // Адаптер
        "sensors": [
          {
            "label": "Core 0",               // Метка датчика
            "value": 45.0,                   // Значение в градусах Цельсия
            "unit": "°C",                    // Единица измерения
            "status": "ok"                   // Статус датчика
          },
          {
            "label": "Core 1",
            "value": 47.0,
            "unit": "°C",
            "status": "ok"
          }
        ]
      },
      {
        "name": "nvidia-pci-0100",
        "adapter": "PCI adapter",
        "sensors": [
          {
            "label": "GPU Core",
            "value": 65.0,
            "unit": "°C",
            "status": "ok"
          }
        ]
      }
    ],
    "voltage": [                             // Датчики напряжения
      {
        "name": "coretemp-isa-0000",
        "adapter": "ISA adapter",
        "sensors": [
          {
            "label": "Vcore",
            "value": 1.2,
            "unit": "V",
            "status": "ok"
          }
        ]
      }
    ],
    "fan": [                                 // Датчики вентиляторов
      {
        "name": "nct6775-isa-0290",
        "adapter": "ISA adapter",
        "sensors": [
          {
            "label": "fan1",
            "value": 1200,
            "unit": "RPM",
            "status": "ok"
          },
          {
            "label": "fan2",
            "value": 800,
            "unit": "RPM",
            "status": "ok"
          }
        ]
      }
    ]
  }
}

IPMI информация

{
  "ipmi": {
    "available": true,                       // Доступен ли IPMI
    "temperature": [                         // IPMI датчики температуры
      {
        "name": "CPU Temp",
        "value": 45.0,
        "unit": "°C",
        "status": "ok"
      },
      {
        "name": "System Temp",
        "value": 35.0,
        "unit": "°C",
        "status": "ok"
      }
    ],
    "voltage": [                             // IPMI датчики напряжения
      {
        "name": "12V",
        "value": 12.1,
        "unit": "V",
        "status": "ok"
      },
      {
        "name": "5V",
        "value": 5.0,
        "unit": "V",
        "status": "ok"
      }
    ],
    "fan": [                                 // IPMI датчики вентиляторов
      {
        "name": "FAN1",
        "value": 1200,
        "unit": "RPM",
        "status": "ok"
      }
    ]
  }
}

Статистика

{
  "stats": {
    "temperature_sensors": 8,                // Количество датчиков температуры
    "voltage_sensors": 4,                    // Количество датчиков напряжения
    "fan_sensors": 3,                        // Количество датчиков вентиляторов
    "ipmi_available": true,                  // Доступен ли IPMI
    "ipmi_temperature_sensors": 2,           // Количество IPMI датчиков температуры
    "max_temperature": 65.0,                 // Максимальная температура
    "min_temperature": 25.0,                 // Минимальная температура
    "avg_temperature": 42.5,                 // Средняя температура
    "max_fan_speed": 1200,                   // Максимальная скорость вентилятора
    "min_fan_speed": 800,                    // Минимальная скорость вентилятора
    "avg_fan_speed": 1000                    // Средняя скорость вентилятора
  }
}

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

config.yaml

collectors:
  sensors:
    enabled: true
    type: exec
    key: sensors
    interval: "60s"     # 1 минута
    timeout: "8s"
    exec: "./collectors/sensors"
    platforms: [linux]

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

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

Требования

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

  • Linux система с датчиками
  • Установленный lm-sensors
  • Опционально: IPMI tools для серверного оборудования
  • Права на чтение информации о датчиках

Команды

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

  • sensors - утилита lm-sensors
  • ipmitool - утилита IPMI (опционально)
  • sensors-detect - обнаружение датчиков

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

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

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

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

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

# Все датчики
./bin/agent/collectors/sensors | jq '.sensors'

# Только температура
./bin/agent/collectors/sensors | jq '.sensors.temperature'

# Только напряжение
./bin/agent/collectors/sensors | jq '.sensors.voltage'

# Только вентиляторы
./bin/agent/collectors/sensors | jq '.sensors.fan'

# IPMI информация
./bin/agent/collectors/sensors | jq '.ipmi'

# Статистика
./bin/agent/collectors/sensors | jq '.stats'

# Максимальная температура
./bin/agent/collectors/sensors | jq '.stats.max_temperature'

# Средняя температура
./bin/agent/collectors/sensors | jq '.stats.avg_temperature'

# Датчики с высокой температурой (>60°C)
./bin/agent/collectors/sensors | jq '.sensors.temperature[].sensors[] | select(.value > 60)'

# Медленные вентиляторы (<1000 RPM)
./bin/agent/collectors/sensors | jq '.sensors.fan[].sensors[] | select(.value < 1000)'

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

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

  1. "No sensors found"

    • Убедитесь, что lm-sensors установлен
    • Запустите sensors-detect для обнаружения датчиков
    • Проверьте права доступа к датчикам
  2. "Permission denied"

    • Запустите с правами sudo
    • Или добавьте пользователя в группу sensors
  3. "IPMI not available"

    • Установите ipmitool
    • Проверьте доступность IPMI интерфейса
    • Убедитесь в правильности конфигурации IPMI

Отладка

# Проверка установки lm-sensors
sensors --version

# Проверка доступности датчиков
sensors

# Обнаружение датчиков
sudo sensors-detect

# Проверка IPMI
ipmitool sensor list

# Проверка прав доступа
ls -la /sys/class/hwmon/

# Проверка модулей ядра
lsmod | grep -i sensor

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

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

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

  • Время выполнения: ~2-8 секунд
  • Интервал сбора: рекомендуется 1 минута (60s)
  • Потребление ресурсов: минимальное
  • Собирает только локальную информацию о датчиках

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

  • Датчики: CPU, GPU, материнская плата, диски
  • Типы: температура, напряжение, вентиляторы, ток
  • Интерфейсы: lm-sensors, IPMI
  • Linux: все дистрибутивы
  • Оборудование: серверы, рабочие станции, ноутбуки