- Добавлен новый коллектор 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
13 KiB
13 KiB
Коллектор macos
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Описание
Коллектор macos
собирает специфичные для macOS метрики через sysctl и system_profiler. Предоставляет детальную информацию о железе, системе и производительности macOS системы.
Поддерживаемые платформы
- macOS: Полная поддержка
- Linux/Windows: Не поддерживается (возвращает пустой 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" // Часовой пояс
}
}
Информация о железе
{
"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)
}
]
}
}
Информация о сети
{
"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 // Частота в МГц
}
}
}
Информация о батарее
{
"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 // Температура в градусах Цельсия
}
}
Информация о производительности
{
"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 // Исходящих пакетов в секунду
}
}
}
Информация о приложениях
{
"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
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/Opmset
- управление питаниемnetworksetup
- настройки сетиsystem_profiler SPHardwareDataType
- информация о железеsystem_profiler SPSoftwareDataType
- информация о ПОsystem_profiler SPNetworkDataType
- информация о сетиsystem_profiler SPStorageDataType
- информация о хранилище
Примеры использования
Проверка работы коллектора
# Запуск коллектора напрямую
./bin/agent/collectors/macos
# Запуск через агент
make run
Фильтрация данных
# Информация о системе
./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'
Устранение неполадок
Частые проблемы
-
"No data collected"
- Убедитесь, что система macOS
- Проверьте доступность системных команд
- Убедитесь в правильности прав доступа
-
"Permission denied"
- Запустите с правами
sudo
- Или предоставьте необходимые права
- Запустите с правами
-
"Command not found"
- Убедитесь, что системные команды доступны
- Проверьте PATH для команд
Отладка
# Проверка системных команд
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