SensusAgent/docs/collectors.md
Sergey Antropoff 621d3f0a43 feat: добавлена информация о VM в коллектор GPU
- Добавлен сбор информации о виртуальных машинах и контейнерах Proxmox
- Генерация уникального vm_id на основе cluster_uuid + vmid (16 символов SHA256)
- Убрана информация о VM из коллектора proxcluster
- Обновлена документация по коллектору GPU
- Исправлен возврат пустого массива вместо null для vms

Автор: Сергей Антропов, сайт: https://devops.org.ru
2025-09-11 16:14:42 +03:00

68 lines
3.2 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, сеть, диски, обновления)
- **uptime** - время работы системы
- **macos** - специфичные для macOS метрики
- **hba** - информация о HBA адаптерах
- **sensors** - данные датчиков температуры/напряжения
- **docker** - информация о Docker контейнерах
- **gpu** - информация о GPU устройствах
- **kubernetes** - метрики Kubernetes кластера
- **proxcluster** - информация о Proxmox кластере ⭐
### Документация коллекторов
- [proxcluster](collectors/proxcluster.md) - сбор информации о Proxmox кластере
- [gpu](collectors/gpu.md) - сбор информации о GPU устройствах с агрегированной статистикой