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

345 lines
13 KiB
Markdown
Raw 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.

# Коллектор macos
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
## Описание
Коллектор `macos` собирает специфичные для macOS метрики через sysctl и system_profiler. Предоставляет детальную информацию о железе, системе и производительности macOS системы.
## Поддерживаемые платформы
- **macOS**: Полная поддержка
- **Linux/Windows**: Не поддерживается (возвращает пустой JSON)
## Собираемые данные
### Информация о системе
```json
{
"system": {
"hostname": "MacBook-Pro", // Имя хоста
"os_version": "macOS 14.0", // Версия macOS
"build_version": "23A344", // Версия сборки
"kernel_version": "Darwin 23.0.0", // Версия ядра
"uptime_seconds": 86400, // Время работы в секундах
"boot_time": "2024-01-01T00:00:00Z", // Время загрузки
"timezone": "Europe/Moscow" // Часовой пояс
}
}
```
### Информация о железе
```json
{
"hardware": {
"model": "MacBook Pro", // Модель Mac
"model_identifier": "MacBookPro18,1", // Идентификатор модели
"serial_number": "FVF123456789", // Серийный номер
"chip": "Apple M1 Pro", // Чип
"cpu": { // Информация о CPU
"name": "Apple M1 Pro", // Название CPU
"cores": 10, // Количество ядер
"performance_cores": 8, // Ядра производительности
"efficiency_cores": 2, // Энергоэффективные ядра
"frequency_mhz": 3200 // Частота в МГц
},
"memory": { // Информация о памяти
"total_gb": 16, // Общая память в ГБ
"type": "LPDDR5", // Тип памяти
"speed_mhz": 6400 // Скорость памяти в МГц
},
"storage": [ // Информация о хранилище
{
"name": "APPLE SSD AP1024N", // Название накопителя
"size_gb": 1024, // Размер в ГБ
"type": "SSD", // Тип накопителя
"interface": "PCIe", // Интерфейс
"serial": "C1234567890" // Серийный номер
}
],
"graphics": [ // Информация о графике
{
"name": "Apple M1 Pro", // Название GPU
"type": "Integrated", // Тип GPU
"memory_mb": 0 // Память GPU в МБ (0 для integrated)
}
]
}
}
```
### Информация о сети
```json
{
"network": {
"interfaces": [ // Сетевые интерфейсы
{
"name": "en0", // Имя интерфейса
"type": "Ethernet", // Тип интерфейса
"status": "Active", // Статус интерфейса
"speed_mbps": 1000, // Скорость в Мбит/с
"mac_address": "00:11:22:33:44:55", // MAC адрес
"ip_addresses": [ // IP адреса
"192.168.1.100"
]
},
{
"name": "en1",
"type": "Wi-Fi",
"status": "Active",
"speed_mbps": 866,
"mac_address": "00:11:22:33:44:56",
"ip_addresses": [
"192.168.1.101"
]
}
],
"wifi": { // Информация о Wi-Fi
"ssid": "MyNetwork", // Имя сети
"security": "WPA2", // Тип безопасности
"signal_strength": -45, // Сила сигнала в dBm
"channel": 6, // Канал
"frequency_mhz": 2437 // Частота в МГц
}
}
}
```
### Информация о батарее
```json
{
"battery": {
"present": true, // Присутствует ли батарея
"charge_percent": 85, // Заряд в процентах
"cycle_count": 150, // Количество циклов
"condition": "Normal", // Состояние батареи
"power_source": "Battery Power", // Источник питания
"time_remaining": "3:45", // Оставшееся время
"voltage": 12.5, // Напряжение в В
"current": -1500, // Ток в мА (отрицательный = разряд)
"temperature": 25.0 // Температура в градусах Цельсия
}
}
```
### Информация о производительности
```json
{
"performance": {
"cpu_usage_percent": 25.5, // Использование CPU в процентах
"memory": { // Информация о памяти
"used_gb": 8.5, // Использованная память в ГБ
"free_gb": 7.5, // Свободная память в ГБ
"cached_gb": 2.0, // Кэшированная память в ГБ
"swap_used_gb": 0.5, // Использованный swap в ГБ
"pressure": "Normal" // Давление памяти
},
"disk": { // Информация о диске
"read_bytes_per_sec": 1024000, // Скорость чтения в байт/с
"write_bytes_per_sec": 512000, // Скорость записи в байт/с
"read_ops_per_sec": 100, // Операций чтения в секунду
"write_ops_per_sec": 50 // Операций записи в секунду
},
"network": { // Сетевая активность
"bytes_in_per_sec": 2048000, // Входящий трафик в байт/с
"bytes_out_per_sec": 1024000, // Исходящий трафик в байт/с
"packets_in_per_sec": 1000, // Входящих пакетов в секунду
"packets_out_per_sec": 800 // Исходящих пакетов в секунду
}
}
}
```
### Информация о приложениях
```json
{
"applications": {
"running_apps": 25, // Количество запущенных приложений
"total_apps": 150, // Общее количество приложений
"memory_intensive_apps": [ // Приложения с высоким потреблением памяти
{
"name": "Safari", // Имя приложения
"pid": 1234, // PID процесса
"memory_mb": 512, // Память в МБ
"cpu_percent": 15.5 // Использование CPU в процентах
}
]
}
}
```
## Конфигурация
### config.yaml
```yaml
collectors:
macos:
enabled: true
type: exec
key: macos
interval: "60s" # 1 минута
timeout: "8s"
exec: "./collectors/macos"
platforms: [darwin]
```
### Переменные окружения
- `COLLECTOR_TIMEOUT`: Таймаут выполнения коллектора (по умолчанию 8s)
## Требования
### Системные требования
- macOS система
- Доступ к системным командам
- Права на чтение системной информации
### Команды
Коллектор использует следующие команды (должны быть доступны):
- `sysctl` - системные параметры
- `system_profiler` - профилировщик системы
- `ioreg` - реестр I/O
- `pmset` - управление питанием
- `networksetup` - настройки сети
- `system_profiler SPHardwareDataType` - информация о железе
- `system_profiler SPSoftwareDataType` - информация о ПО
- `system_profiler SPNetworkDataType` - информация о сети
- `system_profiler SPStorageDataType` - информация о хранилище
## Примеры использования
### Проверка работы коллектора
```bash
# Запуск коллектора напрямую
./bin/agent/collectors/macos
# Запуск через агент
make run
```
### Фильтрация данных
```bash
# Информация о системе
./bin/agent/collectors/macos | jq '.system'
# Информация о железе
./bin/agent/collectors/macos | jq '.hardware'
# Информация о CPU
./bin/agent/collectors/macos | jq '.hardware.cpu'
# Информация о памяти
./bin/agent/collectors/macos | jq '.hardware.memory'
# Информация о хранилище
./bin/agent/collectors/macos | jq '.hardware.storage'
# Сетевые интерфейсы
./bin/agent/collectors/macos | jq '.network.interfaces'
# Wi-Fi информация
./bin/agent/collectors/macos | jq '.network.wifi'
# Информация о батарее
./bin/agent/collectors/macos | jq '.battery'
# Производительность
./bin/agent/collectors/macos | jq '.performance'
# Использование CPU
./bin/agent/collectors/macos | jq '.performance.cpu_usage_percent'
# Использование памяти
./bin/agent/collectors/macos | jq '.performance.memory'
# Сетевая активность
./bin/agent/collectors/macos | jq '.performance.network'
# Приложения
./bin/agent/collectors/macos | jq '.applications'
# Приложения с высоким потреблением памяти
./bin/agent/collectors/macos | jq '.applications.memory_intensive_apps'
```
## Устранение неполадок
### Частые проблемы
1. **"No data collected"**
- Убедитесь, что система macOS
- Проверьте доступность системных команд
- Убедитесь в правильности прав доступа
2. **"Permission denied"**
- Запустите с правами `sudo`
- Или предоставьте необходимые права
3. **"Command not found"**
- Убедитесь, что системные команды доступны
- Проверьте PATH для команд
### Отладка
```bash
# Проверка системных команд
which sysctl system_profiler ioreg pmset networksetup
# Проверка информации о системе
sysctl -n kern.hostname
sysctl -n kern.osproductversion
sysctl -n kern.osproductversion
# Проверка информации о железе
system_profiler SPHardwareDataType
# Проверка информации о ПО
system_profiler SPSoftwareDataType
# Проверка информации о сети
system_profiler SPNetworkDataType
# Проверка информации о хранилище
system_profiler SPStorageDataType
# Проверка батареи
pmset -g batt
# Проверка сетевых интерфейсов
networksetup -listallhardwareports
```
## Безопасность
- Коллектор требует права на чтение системной информации
- Не передает пароли или секретные ключи
- Собирает только публичную информацию о системе
- Не выполняет привилегированные операции
## Производительность
- Время выполнения: ~2-8 секунд
- Интервал сбора: рекомендуется 1 минута (60s)
- Потребление ресурсов: минимальное
- Собирает только локальную информацию о системе
## Совместимость
- **macOS**: 10.15+ (Catalina и новее)
- **Архитектуры**: x86_64, ARM64 (Apple Silicon)
- **Модели**: MacBook, iMac, Mac Pro, Mac mini, Mac Studio
- **Чипы**: Intel, Apple M1, M1 Pro, M1 Max, M2, M2 Pro, M2 Max