- Создан новый коллектор proxvmservices для обнаружения и мониторинга сервисов - Поддержка PostgreSQL с Patroni (кластер, репликация, конфигурация) - Поддержка etcd кластера (члены, лидер, здоровье) - Поддержка остальных сервисов: Redis, ClickHouse, RabbitMQ, Kafka, MongoDB, Kubernetes - Добавлен в Makefile и конфигурацию агента - Обновлены групповые переменные Ansible для включения в группу proxvms - Исправлены проблемы с шаблонами Ansible (конфигурация и systemd unit) - Создана подробная документация - Протестирован на удаленных серверах через Ansible Автор: Сергей Антропов Сайт: https://devops.org.ru
5.2 KiB
5.2 KiB
Коллекторы
Автор: Сергей Антропов, сайт: 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
):
#!/usr/bin/env sh
set -eu
echo '{"sample": {"ok": true, "ts": '"$(date +%s)"'}}'
Пример описания коллектора в bin/agent/config.yaml
:
collectors:
system:
enabled: true
type: exec
key: system
interval: "30s"
timeout: "8s"
exec: "./collectors/system"
platforms: [linux]
Сборка Go-коллекторов через Makefile (в Docker):
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 - сбор информации о Proxmox кластере
- gpu - сбор информации о GPU устройствах с агрегированной статистикой
- proxnode - сбор информации о Proxmox ноде
- proxvms - сбор информации о виртуальных машинах и контейнерах Proxmox
- proxvmsystem - системные метрики с machine_uid для Proxmox VM/контейнеров
- proxvmservices - обнаружение и мониторинг сервисов на VM
- system - сбор системных метрик
- docker - сбор информации о Docker контейнерах
- hba - сбор информации о RAID/HBA контроллерах
- sensors - сбор данных датчиков
- kubernetes - сбор метрик Kubernetes кластера
- macos - сбор специфичных для macOS метрик
- uptime - сбор времени работы системы