- Добавлен новый коллектор 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
9.1 KiB
9.1 KiB
Коллектор 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-sensorsipmitool
- утилита 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)'
Устранение неполадок
Частые проблемы
-
"No sensors found"
- Убедитесь, что lm-sensors установлен
- Запустите
sensors-detect
для обнаружения датчиков - Проверьте права доступа к датчикам
-
"Permission denied"
- Запустите с правами
sudo
- Или добавьте пользователя в группу
sensors
- Запустите с правами
-
"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: все дистрибутивы
- Оборудование: серверы, рабочие станции, ноутбуки