### Коллекторы Автор: Сергей Антропов, сайт: https://devops.org.ru Коллектор — это модуль, который исполняется агентом по расписанию и выводит результат в формате JSON в stdout. Агент объединяет вывод всех активных коллекторов в один JSON-документ. Размещение исходников и артефактов: - Исходники Go-коллекторов: `src/collectors/` - Собранные бинарники/скрипты: `bin/agent/collectors/` Требования к коллектору: - Вывод строго в формате JSON в stdout (одна строка или валидный JSON-объект) - Отсутствие побочного вывода в stderr/stdout кроме JSON (для корректного парсинга) - Завершение за время, не превышающее `timeout` в конфигурации Пример внешнего скрипта-коллектора (`bin/agent/collectors/sample.sh`): ```bash #!/usr/bin/env sh set -eu echo '{"sample": {"ok": true, "ts": '"$(date +%s)"'}}' ``` Пример описания коллектора в `bin/agent/config.yaml`: ```yaml collectors: system: enabled: true type: exec key: system interval: "30s" timeout: "8s" exec: "./collectors/system" platforms: [linux] ``` Сборка Go-коллекторов через Makefile (в Docker): ```bash 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 ⭐ - **proxvmsystem** - системные метрики с machine_uid для Proxmox VM/контейнеров - Linux ⭐ ### Документация коллекторов - [proxcluster](collectors/proxcluster.md) - сбор информации о Proxmox кластере - [gpu](collectors/gpu.md) - сбор информации о GPU устройствах с агрегированной статистикой - [proxnode](collectors/proxnode.md) - сбор информации о Proxmox ноде - [proxvms](collectors/proxvms.md) - сбор информации о виртуальных машинах и контейнерах Proxmox - [proxvmsystem](collectors/proxvmsystem.md) - системные метрики с machine_uid для Proxmox VM/контейнеров - [system](collectors/system.md) - сбор системных метрик - [docker](collectors/docker.md) - сбор информации о Docker контейнерах - [hba](collectors/hba.md) - сбор информации о RAID/HBA контроллерах - [sensors](collectors/sensors.md) - сбор данных датчиков - [kubernetes](collectors/kubernetes.md) - сбор метрик Kubernetes кластера - [macos](collectors/macos.md) - сбор специфичных для macOS метрик - [uptime](collectors/uptime.md) - сбор времени работы системы