- Добавлен новый коллектор 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
79 lines
4.6 KiB
Markdown
79 lines
4.6 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, сеть, диски, обновления) - 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) - сбор времени работы системы
|
||
|