SensusAgent/docs/collectors.md
Sergey Antropoff 5fa101dfff feat: добавлен коллектор proxvmservices для обнаружения сервисов на VM
- Создан новый коллектор proxvmservices для обнаружения и мониторинга сервисов
- Поддержка PostgreSQL с Patroni (кластер, репликация, конфигурация)
- Поддержка etcd кластера (члены, лидер, здоровье)
- Поддержка остальных сервисов: Redis, ClickHouse, RabbitMQ, Kafka, MongoDB, Kubernetes
- Добавлен в Makefile и конфигурацию агента
- Обновлены групповые переменные Ansible для включения в группу proxvms
- Исправлены проблемы с шаблонами Ansible (конфигурация и systemd unit)
- Создана подробная документация
- Протестирован на удаленных серверах через Ansible

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-09-15 17:04:47 +03:00

83 lines
5.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, сеть, диски, обновления) - 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 ⭐
- **proxvmservices** - обнаружение и мониторинг сервисов на VM (PostgreSQL, etcd, Redis, ClickHouse, RabbitMQ, Kafka, MongoDB, Kubernetes) - 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/контейнеров
- [proxvmservices](collectors/proxvmservices.md) - обнаружение и мониторинг сервисов на 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) - сбор времени работы системы