### Обзор Автор: Сергей Антропов, сайт: https://devops.org.ru SensusAgent — модульный агент сбора метрик и инвентарных данных. Агент запускает встроенные и внешние (exec) коллекторы по расписанию, объединяет их JSON-вывод в единый документ и публикует в выбранный канал вывода (stdout, Kafka или auto-режим). Основные возможности: - Запуск коллекторов как внешних исполняемых файлов из `bin/agent/collectors` и как встроенных Go-бинарей - Единый JSON-формат вывода для удобной интеграции - Гибкая конфигурация через `bin/agent/config.yaml` и переменные окружения - Кроссплатформенная сборка через Docker и Makefile (без локальной Go-сборки) - Деплой и удаление через Ansible (`make deploy`, `make delete`, а также варианты с systemd) - Гибкая конфигурация коллекторов через Ansible группы - Команды обновления (`make update-service`, `make update`) Архитектура и компоненты репозитория: - `src/core/*` — ядро агента (конфигурация, реестр коллекторов, раннер, логирование, вывод) - `src/collectors/*` — исходники Go-коллекторов (сборка в `bin/agent/collectors`) - `bin/agent` — исполняемые файлы и конфиги агента (`config.yaml`, собранные коллекторы) - `runner/*` — сценарии Ansible для деплоя/удаления (и для systemd), групповые переменные и шаблоны - `docs/*` — документация проекта Поток выполнения: 1. Агент загружает конфигурацию из `bin/agent/config.yaml` (путь можно переопределить `CONFIG_PATH`) 2. Инициализирует логирование по уровню `LOG_LEVEL` 3. Регистрирует и планирует запуск коллекторов согласно их `interval` и `timeout` 4. Исполняет коллектора (встроенные или `type: exec`), читает JSON из stdout 5. Объединяет данные в общий JSON-документ и публикует в stdout или Kafka (в зависимости от `mode`) Режимы вывода (`mode`): - `stdout` — печать JSON в стандартный вывод - `kafka` — отправка в Kafka-топик - `auto` — автоматически выбирает канал (например, stdout, если Kafka отключена) Переменные окружения (основные): - `CONFIG_PATH` — путь к конфигурации (по умолчанию `./bin/agent/config.yaml`) - `LOG_LEVEL` — уровень логирования (`error`, `info`, `debug`) Поддерживаемые платформы: - Linux (агент и коллекторы) - macOS (часть коллекторов и сборок) - Windows (ограниченно для некоторых коллекторов) См. также: - Конфигурация: `docs/config.md` - Коллекторы: `docs/collectors.md` - Сборка/запуск: `docs/build_and_run.md` - Деплой: `docs/deploy.md` - Гибкая конфигурация коллекторов: `docs/ansible_groups.md`