- Добавлен новый коллектор 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
302 lines
9.1 KiB
Markdown
302 lines
9.1 KiB
Markdown
# Коллектор 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**: все дистрибутивы
|
||
- **Оборудование**: серверы, рабочие станции, ноутбуки
|