- Добавлен новый коллектор 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
345 lines
13 KiB
Markdown
345 lines
13 KiB
Markdown
# Коллектор 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
|