SensusAgent/docs/collectors.md
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

4.6 KiB
Raw Blame History

Коллекторы

Автор: Сергей Антропов, сайт: https://devops.org.ru

Коллектор — это модуль, который исполняется агентом по расписанию и выводит результат в формате JSON в stdout. Агент объединяет вывод всех активных коллекторов в один JSON-документ.

Размещение исходников и артефактов:

  • Исходники Go-коллекторов: src/collectors/<name>
  • Собранные бинарники/скрипты: bin/agent/collectors/<name>

Требования к коллектору:

  • Вывод строго в формате JSON в stdout (одна строка или валидный JSON-объект)
  • Отсутствие побочного вывода в stderr/stdout кроме JSON (для корректного парсинга)
  • Завершение за время, не превышающее timeout в конфигурации

Пример внешнего скрипта-коллектора (bin/agent/collectors/sample.sh):

#!/usr/bin/env sh
set -eu
echo '{"sample": {"ok": true, "ts": '"$(date +%s)"'}}'

Пример описания коллектора в bin/agent/config.yaml:

collectors:
  system:
    enabled: true
    type: exec
    key: system
    interval: "30s"
    timeout: "8s"
    exec: "./collectors/system"
    platforms: [linux]

Сборка Go-коллекторов через Makefile (в Docker):

make collectors        # текущая платформа
make collectors-linux  # linux/amd64
make collectors-darwin # darwin/arm64

Рекомендации по разработке:

  • Следуйте единому JSON-стилю и ключам, не допускайте дублирования имен ключей между коллекторами
  • Логирование делайте в stderr, чтобы не мешать JSON
  • Ограничивайте потребление ресурсов и время выполнения
  • На стороне агента используйте interval ≥ 10s для тяжелых коллекторов

Доступные коллекторы

Встроенные коллекторы

  • system - системные метрики (CPU, RAM, сеть, диски, обновления) - Linux
  • uptime - время работы системы - Linux/macOS
  • macos - специфичные для macOS метрики (sysctl + system_profiler) - macOS
  • hba - информация о RAID/HBA контроллерах и массивах - Linux
  • sensors - данные датчиков температуры/напряжения (lm-sensors, IPMI) - Linux
  • docker - информация о Docker контейнерах, сетях, томах и версиях - Linux/macOS
  • gpu - информация о GPU устройствах (NVIDIA/AMD) с агрегированной статистикой - Linux
  • kubernetes - метрики Kubernetes кластера через kubectl - Linux/macOS
  • proxcluster - информация о Proxmox кластере (ноды, хранилища, кворум) - Linux
  • proxnode - информация о Proxmox ноде (ресурсы, сервисы, диски) - Linux
  • proxvms - информация о виртуальных машинах и контейнерах Proxmox - Linux

Документация коллекторов

  • proxcluster - сбор информации о Proxmox кластере
  • gpu - сбор информации о GPU устройствах с агрегированной статистикой
  • proxnode - сбор информации о Proxmox ноде
  • proxvms - сбор информации о виртуальных машинах и контейнерах Proxmox
  • system - сбор системных метрик
  • docker - сбор информации о Docker контейнерах
  • hba - сбор информации о RAID/HBA контроллерах
  • sensors - сбор данных датчиков
  • kubernetes - сбор метрик Kubernetes кластера
  • macos - сбор специфичных для macOS метрик
  • uptime - сбор времени работы системы