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

13 KiB
Raw Blame History

Коллектор 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/O
  • pmset - управление питанием
  • 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'

Устранение неполадок

Частые проблемы

  1. "No data collected"

    • Убедитесь, что система macOS
    • Проверьте доступность системных команд
    • Убедитесь в правильности прав доступа
  2. "Permission denied"

    • Запустите с правами sudo
    • Или предоставьте необходимые права
  3. "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