Настройка агента

Агент StatusRadar настраивается через единственный shell-файл окружения по пути /opt/statusradar/config.env. YAML-конфигурации нет — агент читает свои настройки из переменных окружения, а systemd загружает config.env в сервис через EnvironmentFile=.

Автоматический установщик создаёт config.env за вас. Чтобы изменить любую настройку позже, отредактируйте этот файл и перезапустите агент.

Расположение файла конфигурации

/opt/statusradar/config.env

Это обычный shell-файл вида KEY=value (по одной переменной на строку, кавычки необязательны, без пробелов вокруг =). Всё, что нужно агенту или его плагинам, задаётся здесь.

Базовая структура

Минимальный config.env выглядит так:

# /opt/statusradar/config.env
API_TOKEN=your-agent-token-here
API_URL=https://api.statusradar.dev
INTERVAL=300

# Comma-separated list of enabled plugins (optional)
PLUGINS=redis,nginx

# Plugin settings — only the ones your enabled plugins need
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
NGINX_STATUS_URL=http://127.0.0.1/nginx_status

Основные настройки

Эти четыре переменные управляют самим агентом. Первые три установщик прописывает всегда.

API_TOKEN

Обязательно. Ваш уникальный токен аутентификации агента. Получите его на странице добавления сервера в панели управления.

API_TOKEN=abc123def456ghi789jkl012mno345pqr678

Безопасность: Храните этот токен в секрете. Любой, у кого он есть, может отправлять метрики в ваш аккаунт. Установщик ограничивает доступ к config.env через chmod 600 — оставьте его таким.

Агент аутентифицируется в API с помощью заголовка Authorization: Bearer <API_TOKEN>.

API_URL

Необязательно. По умолчанию: https://api.statusradar.dev. Конечная точка API StatusRadar. Оставьте значение по умолчанию, если только вы не используете self-hosted-инстанс.

API_URL=https://api.statusradar.dev

INTERVAL

Необязательно. По умолчанию: 300 (5 минут). Как часто, в секундах, агент собирает и отправляет метрики. Минимальное допустимое значение — 60.

INTERVAL=300

Рекомендации по интервалу:

Сценарий Рекомендуемый интервал
Production-серверы 300 (5 минут)
Разработка / staging 600 (10 минут)
Высокочастотный мониторинг 60 (1 минута, минимум)

Меньшие интервалы повышают накладные расходы на сбор и объём хранимых данных. Не опускайтесь ниже 60 секунд без реальной необходимости.

PLUGINS

Необязательно. Список плагинов сервисов для включения, разделённый запятыми. Если он пуст, агент сообщает только основные системные метрики (CPU, память, диск, сеть).

PLUGINS=redis,mysql,nginx,docker

Загружаются только перечисленные здесь плагины. Каждый включённый плагин читает свои переменные из config.env (см. справочную таблицу ниже). Файлы плагинов также должны существовать в /opt/statusradar/plugins/ — установщик скачивает те, что вы указали в PLUGINS.

Как systemd загружает конфигурацию

Агент работает как systemd-сервис statusradar-agent. Его юнит-файл (/etc/systemd/system/statusradar-agent.service) загружает config.env и передаёт основные настройки агенту в командной строке:

[Service]
Type=simple
User=root
WorkingDirectory=/opt/statusradar
EnvironmentFile=/opt/statusradar/config.env
ExecStart=/usr/bin/python3 /opt/statusradar/statusradar-agent.py --token ${API_TOKEN} --api-url ${API_URL} --interval ${INTERVAL}
Restart=always
RestartSec=30
StandardOutput=append:/var/log/statusradar/agent.log
StandardError=append:/var/log/statusradar/agent.log

Важно понимать две вещи:

  • EnvironmentFile=/opt/statusradar/config.env экспортирует каждую переменную из файла в окружение агента. Именно так переменные плагинов, например REDIS_HOST или MYSQL_USER, попадают к плагинам — они читаются из окружения процесса, а не из какого-либо объекта конфигурации.
  • В ExecStart явно упоминаются только ${API_TOKEN}, ${API_URL} и ${INTERVAL}. Все остальные переменные потребляются плагинами через окружение, поэтому добавлять их в ExecStart не нужно.

Примечание: StandardOutput=append: требует systemd 240 или новее. На более старых системах (CentOS/RHEL 7) установщик вместо этого пишет StandardOutput=journal и StandardError=journal, а логи попадают в journalctl -u statusradar-agent.

Изменение настроек

Чтобы изменить любую настройку — интервал, пароль плагина или добавить новый плагин — отредактируйте config.env и перезапустите сервис:

# 1. Edit the file (as root)
sudo nano /opt/statusradar/config.env

# 2. Restart the agent so it picks up the changes
sudo systemctl restart statusradar-agent

# 3. Confirm it started cleanly
sudo systemctl status statusradar-agent
sudo journalctl -u statusradar-agent -n 50 --no-pager

Агент не перечитывает config.env на лету; перезапуск требуется всегда.

Добавление плагина к существующей установке

  1. Убедитесь, что файл плагина существует в /opt/statusradar/plugins/ (например, mysql_plugin.py). Повторный запуск установщика с плагином в PLUGINS= скачает его за вас, либо скачайте его вручную с https://statusradar.dev/agent/plugins/<name>_plugin.py.
  2. Добавьте имя плагина в строку PLUGINS= в config.env.
  3. Добавьте переменные плагина (см. справочную таблицу) в config.env.
  4. Перезапустите агент.

Установщик автоматически сохраняет переменные Redis, Docker, VictoriaMetrics и RabbitMQ, когда вы передаёте их при установке. Для любого другого плагина добавьте его переменные в config.env вручную и перезапустите агент.

Справочник переменных окружения плагинов

Каждый плагин настраивается целиком через переменные окружения в config.env. В таблице ниже указано точное имя переменной, которое читает каждый плагин, и значение по умолчанию, на которое опирается агент, если переменная не задана.

Redis

Переменная По умолчанию Описание
REDIS_HOST localhost Хост Redis
REDIS_PORT 6379 Порт Redis
REDIS_PASSWORD (пусто) Пароль Redis, если задан requirepass
REDIS_DB 0 Номер базы данных для подключения

MySQL / MariaDB

Переменная По умолчанию Описание
MYSQL_HOST localhost Хост MySQL/MariaDB
MYSQL_PORT 3306 Порт
MYSQL_USER root Пользователь для мониторинга (используйте выделенную учётную запись только для чтения)
MYSQL_PASSWORD (пусто) Пароль
MYSQL_DATABASE (пусто) Необязательная база данных для подключения

PostgreSQL

Переменная По умолчанию Описание
POSTGRESQL_HOST localhost Хост PostgreSQL
POSTGRESQL_PORT 5432 Порт
POSTGRESQL_USER statusradar_monitor Пользователь для мониторинга
POSTGRESQL_PASSWORD (пусто) Пароль
POSTGRESQL_DATABASE postgres База данных для подключения

MongoDB

Переменная По умолчанию Описание
MONGODB_HOST localhost Хост MongoDB
MONGODB_PORT 27017 Порт
MONGODB_USER (пусто) Необязательное имя пользователя
MONGODB_PASSWORD (пусто) Необязательный пароль
MONGODB_DATABASE admin База данных для аутентификации

Nginx

Переменная По умолчанию Описание
NGINX_STATUS_URL http://127.0.0.1/nginx_status URL эндпоинта stub_status

Apache

Переменная По умолчанию Описание
APACHE_STATUS_URL http://127.0.0.1/server-status?auto URL машиночитаемого эндпоинта mod_status

PHP-FPM

Переменная По умолчанию Описание
PHP_FPM_STATUS_URL http://127.0.0.1:8080/status?json URL страницы статуса PHP-FPM (JSON)

Memcached

Переменная По умолчанию Описание
MEMCACHED_HOST localhost Хост Memcached
MEMCACHED_PORT 11211 Порт

RabbitMQ

Переменная По умолчанию Описание
RABBITMQ_HOST localhost Хост RabbitMQ
RABBITMQ_PORT 15672 Порт management API
RABBITMQ_USERNAME guest Management-пользователь
RABBITMQ_PASSWORD guest Management-пароль
RABBITMQ_VHOST / Виртуальный хост для проверки
RABBITMQ_USE_SSL false Использовать HTTPS для management API (true/false)

Elasticsearch

Переменная По умолчанию Описание
ELASTICSEARCH_HOST localhost Хост Elasticsearch
ELASTICSEARCH_PORT 9200 Порт
ELASTICSEARCH_PROTOCOL http http или https
ELASTICSEARCH_USER (пусто) Необязательное имя пользователя
ELASTICSEARCH_PASSWORD (пусто) Необязательный пароль

Meilisearch

Переменная По умолчанию Описание
MEILISEARCH_HOST localhost Хост Meilisearch
MEILISEARCH_PORT 7700 Порт
MEILISEARCH_PROTOCOL http http или https
MEILISEARCH_API_KEY (пусто) Master/API-ключ (на сервере должны быть включены метрики)

Varnish

Переменная По умолчанию Описание
VARNISH_NAME (пусто) Фильтр по имени поля статистики, передаваемый в varnishstat, если нужно сузить вывод
VARNISH_INSTANCE (пусто) Именованный инстанс Varnish (-n), если их у вас несколько

Плагин Varnish читает статистику, вызывая CLI varnishstat; обе переменные необязательны.

HAProxy

Переменная По умолчанию Описание
HAPROXY_STATS_URL http://localhost:9000/stats;csv CSV-эндпоинт статистики
HAPROXY_USERNAME (пусто) Имя пользователя для авторизации статистики, если она защищена
HAPROXY_PASSWORD (пусто) Пароль для авторизации статистики, если она защищена
HAPROXY_TIMEOUT 5 Тайм-аут запроса в секундах

Docker

Переменная По умолчанию Описание
DOCKER_SOCKET /var/run/docker.sock Путь к сокету демона Docker

VictoriaMetrics

Переменная По умолчанию Описание
VM_URL http://localhost:8428 Базовый URL VictoriaMetrics
VM_AUTH_TOKEN (пусто) Bearer-токен, если инстанс требует аутентификации

mdadm

Плагин mdadm читает статус программного RAID Linux из /proc/mdstat через CLI mdadm. У него нет переменных окружения — просто добавьте mdadm в PLUGINS= и убедитесь, что mdadm установлен.

Безопасность

Токен и любые пароли плагинов хранятся в config.env, поэтому защитите этот файл:

sudo chmod 600 /opt/statusradar/config.env
sudo chown root:root /opt/statusradar/config.env

Установщик устанавливает chmod 600 автоматически. Дополнительные рекомендации:

  • Используйте пользователей мониторинга только для чтения. Создавайте выделенные учётные записи баз данных с минимально необходимыми правами; никогда не используйте учётные данные root/admin. Например, для MySQL:

    CREATE USER 'monitor'@'localhost' IDENTIFIED BY 'secret';
    GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'monitor'@'localhost';
    FLUSH PRIVILEGES;

    А для PostgreSQL:

    CREATE USER statusradar_monitor WITH PASSWORD 'secret';
    GRANT pg_monitor TO statusradar_monitor;
  • Держите сервисы на localhost. Направляйте переменные плагинов на localhost/127.0.0.1, когда сервис работает на том же хосте. Для удалённых сервисов ограничьте доступ правилами firewall и используйте TLS там, где плагин его поддерживает (*_PROTOCOL=https, RABBITMQ_USE_SSL=true).

  • Включайте только используемые плагины. Каждый плагин добавляет примерно 5–10 МБ памяти и собственную работу по сбору; более короткий список PLUGINS= делает агент легче.

Примеры файлов config.env

Веб-сервер (Nginx + PHP-FPM + Redis)

# /opt/statusradar/config.env
API_TOKEN=your-agent-token-here
API_URL=https://api.statusradar.dev
INTERVAL=300

PLUGINS=nginx,php_fpm,redis

NGINX_STATUS_URL=http://127.0.0.1/nginx_status
PHP_FPM_STATUS_URL=http://127.0.0.1:9000/status?json

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=

Сервер базы данных (PostgreSQL + Redis)

# /opt/statusradar/config.env
API_TOKEN=your-agent-token-here
API_URL=https://api.statusradar.dev
INTERVAL=300

PLUGINS=postgresql,redis

POSTGRESQL_HOST=localhost
POSTGRESQL_PORT=5432
POSTGRESQL_USER=statusradar_monitor
POSTGRESQL_PASSWORD=secret
POSTGRESQL_DATABASE=postgres

REDIS_HOST=localhost
REDIS_PORT=6379

Хост контейнеров (Docker + Nginx)

# /opt/statusradar/config.env
API_TOKEN=your-agent-token-here
API_URL=https://api.statusradar.dev
INTERVAL=300

PLUGINS=docker,nginx

DOCKER_SOCKET=/var/run/docker.sock

NGINX_STATUS_URL=http://127.0.0.1/nginx_status

После создания или редактирования любого из этих файлов перезапустите агент:

sudo systemctl restart statusradar-agent

Проверка изменений

После перезапуска убедитесь, что агент загрузил новую конфигурацию:

# Service should be active (running)
sudo systemctl status statusradar-agent

# Recent log lines (or journalctl on older systemd)
sudo tail -n 50 /var/log/statusradar/agent.log
sudo journalctl -u statusradar-agent -n 50 --no-pager

Затем проверьте панель управления — время последнего обновления сервера должно сдвинуться, а метрики любого вновь включённого плагина должны появиться в течение одного интервала сбора.

Дальнейшие шаги