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

79 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Коллекторы
Автор: Сергей Антропов, сайт: 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`):
```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 ⭐
### Документация коллекторов
- [proxcluster](collectors/proxcluster.md) - сбор информации о Proxmox кластере
- [gpu](collectors/gpu.md) - сбор информации о GPU устройствах с агрегированной статистикой
- [proxnode](collectors/proxnode.md) - сбор информации о Proxmox ноде
- [proxvms](collectors/proxvms.md) - сбор информации о виртуальных машинах и контейнерах Proxmox
- [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) - сбор времени работы системы