- Добавлен сбор информации о виртуальных машинах и контейнерах Proxmox - Генерация уникального vm_id на основе cluster_uuid + vmid (16 символов SHA256) - Убрана информация о VM из коллектора proxcluster - Обновлена документация по коллектору GPU - Исправлен возврат пустого массива вместо null для vms Автор: Сергей Антропов, сайт: https://devops.org.ru
68 lines
3.2 KiB
Markdown
68 lines
3.2 KiB
Markdown
### Коллекторы
|
||
|
||
Автор: Сергей Антропов, сайт: 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 устройствах с агрегированной статистикой
|
||
|