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

302 lines
9.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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