### Конфигурация Автор: Сергей Антропов, сайт: https://devops.org.ru Основной файл конфигурации: `bin/agent/config.yaml`. Путь можно переопределить переменной окружения `CONFIG_PATH`. Ключевые секции: - `mode`: режим вывода (`stdout` | `kafka` | `auto`) - `log_level`: уровень логирования (`error` | `info` | `debug`) - `kafka`: параметры продюсера (если используется `mode: kafka`) - `collectors`: список коллекторов и их расписание Пример полного файла `config.yaml`: ```yaml mode: auto # stdout | kafka | auto log_level: info kafka: enabled: false brokers: ["kafka:9092"] topic: "sensus.metrics" client_id: "sensusagent" enable_tls: false timeout: "5s" collectors: system: enabled: true type: exec key: system interval: "30s" timeout: "8s" exec: "./collectors/system" platforms: [linux] uptime: enabled: false type: exec key: uptime interval: "10s" timeout: "5s" exec: "./collectors/uptime" platforms: [darwin, linux, windows] macos: enabled: false type: exec key: macos interval: "30s" timeout: "10s" exec: "./collectors/macos" platforms: [darwin] sample: enabled: false type: exec key: sample interval: "30s" timeout: "5s" exec: "./collectors/sample.sh" platforms: [darwin, linux] hba: enabled: true type: exec key: hba interval: "60s" timeout: "10s" exec: "./collectors/hba" platforms: [linux] ``` Пояснения по полям коллектора: - `enabled`: включить/выключить коллектор - `type`: тип коллектора, `exec` — внешний бинарь/скрипт - `key`: ключ верхнего уровня в итоговом JSON - `interval`: минимальный интервал между запусками (Go duration) - `timeout`: максимальное время выполнения (Go duration) - `exec`: относительный путь к исполняемому файлу в каталоге `bin/agent/collectors` - `platforms`: список платформ, на которых допустим запуск (`linux`, `darwin`, `windows`) Переменные окружения: - `CONFIG_PATH` — путь к `config.yaml` - `LOG_LEVEL` — уровень логирования (`error`, `info`, `debug`) Kafka (подробности): - `kafka.enabled`: включает отправку в Kafka - `kafka.brokers`: список брокеров вида `host:port` - `kafka.topic`: топик для публикации - `kafka.client_id`: идентификатор клиента - `kafka.sasl_user` / `kafka.sasl_pass`: параметры SASL/PLAIN (опционально) - `kafka.enable_tls`: включение TLS (опционально) - `kafka.timeout`: таймаут отправки Пример конфигурации с Kafka и SASL/PLAIN: ```yaml mode: kafka log_level: info kafka: enabled: true brokers: ["kafka-1:9093", "kafka-2:9093"] topic: "sensus.metrics" client_id: "sensusagent" sasl_user: "metrics_user" sasl_pass: "${KAFKA_SASL_PASS}" # рекомендуется через переменные окружения enable_tls: true timeout: "5s" collectors: system: enabled: true type: exec key: system interval: "30s" timeout: "8s" exec: "./collectors/system" platforms: [linux] ``` Замечания по безопасности: - Никогда не храните пароли в открытом виде в репозитории - Используйте переменные окружения и секреты CI/CD - Минимизируйте разрешения пользователя Kafka и используйте отдельный `topic` Советы по конфигурации: - Для тяжелых коллекторов увеличивайте `interval` и `timeout` - При использовании Kafka установите `kafka.enabled: true` и корректные `brokers`/`topic` - Следите, чтобы ключи `key` у разных коллекторов не пересекались