Настройка агента
Агент 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 на лету; перезапуск требуется всегда.
Добавление плагина к существующей установке
- Убедитесь, что файл плагина существует в
/opt/statusradar/plugins/(например,mysql_plugin.py). Повторный запуск установщика с плагином вPLUGINS=скачает его за вас, либо скачайте его вручную сhttps://statusradar.dev/agent/plugins/<name>_plugin.py. - Добавьте имя плагина в строку
PLUGINS=вconfig.env. - Добавьте переменные плагина (см. справочную таблицу) в
config.env. - Перезапустите агент.
Установщик автоматически сохраняет переменные 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
Затем проверьте панель управления — время последнего обновления сервера должно сдвинуться, а метрики любого вновь включённого плагина должны появиться в течение одного интервала сбора.
Дальнейшие шаги
- Расположение файла конфигурации
- Базовая структура
- Основные настройки
- `API_TOKEN`
- `API_URL`
- `INTERVAL`
- `PLUGINS`
- Как systemd загружает конфигурацию
- Изменение настроек
- Добавление плагина к существующей установке
- Справочник переменных окружения плагинов
- Redis
- MySQL / MariaDB
- PostgreSQL
- MongoDB
- Nginx
- Apache
- PHP-FPM
- Memcached
- RabbitMQ
- Elasticsearch
- Meilisearch
- Varnish
- HAProxy
- Docker
- VictoriaMetrics
- mdadm
- Безопасность
- Примеры файлов `config.env`
- Веб-сервер (Nginx + PHP-FPM + Redis)
- Сервер базы данных (PostgreSQL + Redis)
- Хост контейнеров (Docker + Nginx)
- Проверка изменений
- Дальнейшие шаги