# Коллектор 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