# Коллектор sensors **Автор:** Сергей Антропов **Сайт:** https://devops.org.ru ## Описание Коллектор `sensors` собирает данные с датчиков температуры, напряжения и вентиляторов через lm-sensors и IPMI. Предоставляет детальную информацию о состоянии системы и ее компонентов. ## Поддерживаемые платформы - **Linux**: Полная поддержка - **macOS/Windows**: Не поддерживается (возвращает пустой JSON) ## Собираемые данные ### Информация о датчиках ```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 информация ```json { "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" } ] } } ``` ### Статистика ```json { "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 ```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` - обнаружение датчиков ## Примеры использования ### Проверка работы коллектора ```bash # Запуск коллектора напрямую ./bin/agent/collectors/sensors # Запуск через агент make run ``` ### Фильтрация данных ```bash # Все датчики ./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 ### Отладка ```bash # Проверка установки 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**: все дистрибутивы - **Оборудование**: серверы, рабочие станции, ноутбуки