Sapportly Agent — бинарник supportly-agent на вашем сервере. Он шлёт heartbeat и выполняет проверки из SAPPORTLY_AGENT_CHECKS. Мониторы сначала создаются в панели — агент сам их не подтягивает.
Быстрый старт
- В панели: Обзор → Инциденты → Наблюдение → Новый агент. Скопируйте токен
agt_…— он показывается один раз. - Создайте монитор в той же вкладке и скопируйте его
monitor_id. - Соберите бинарник из репозитория:
cargo build --release -p supportly-agent(backend/crates/supportly-agent). - Задайте переменные и запустите:
export SAPPORTLY_API_URL=https://staging-api.sapportly.pro
export SAPPORTLY_AGENT_TOKEN=agt_ваш_токен
export SAPPORTLY_AGENT_INTERVAL_SECS=60
export SAPPORTLY_AGENT_CHECKS='[{"monitor_id":"...","type":"http","target":"https://example.com/health"}]'
./supportly-agentПосле запуска агент появится в списке как online. Проверки идут только из SAPPORTLY_AGENT_CHECKS: без JSON агент живёт heartbeat’ом, но мониторы не выполняет.
Переменные
| Переменная | Нужна | По умолчанию |
|---|---|---|
SAPPORTLY_AGENT_TOKEN | да | токен agt_… |
SAPPORTLY_API_URL | нет | https://api.sapportly.pro |
SAPPORTLY_AGENT_INTERVAL_SECS | нет | 60 (диапазон 15–3600) |
SAPPORTLY_AGENT_TIMEOUT_SECS | нет | 10 (диапазон 1–120) |
SAPPORTLY_AGENT_CHECKS | нет | [] — JSON с monitor_id, type, target |
Systemd (Linux)
JSON с кавычками в Environment= systemd ломает. Положите переменные в файл:
SAPPORTLY_API_URL=https://staging-api.sapportly.pro
SAPPORTLY_AGENT_TOKEN=agt_...
SAPPORTLY_AGENT_INTERVAL_SECS=60
SAPPORTLY_AGENT_CHECKS=[{"monitor_id":"...","type":"http","target":"https://example.com/health"}][Unit]
Description=Sapportly Agent
After=network-online.target
[Service]
EnvironmentFile=/etc/sapportly/agent.env
ExecStart=/usr/local/bin/supportly-agent
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetDocker
Отдельного публичного образа sapportly/agent нет. Бинарник есть в образе сервера или монтируется с хоста после cargo build.
docker run -d --name sapportly-agent \
-e SAPPORTLY_API_URL=https://staging-api.sapportly.pro \
-e SAPPORTLY_AGENT_TOKEN=agt_... \
-e SAPPORTLY_AGENT_INTERVAL_SECS=60 \
-e SAPPORTLY_AGENT_CHECKS='[{"monitor_id":"...","type":"http","target":"https://example.com/health"}]' \
sapportly/backend:latest supportly-agentКаждая проверка получает уникальный event_id. API сохраняет его вместе с результатом и игнорирует повтор того же события, чтобы одна проверка не увеличивала порог инцидента дважды. Старые агенты без event_id остаются совместимы.
Безопасность
- Токен агента — как API-ключ: храните в secrets manager, не в git.
- Отзыв агента в панели сразу блокирует heartbeat и check-results.
- Агент ходит только в публичные маршруты приёма агента (
/v1/agent/*), не с JWT панели.
Связанные разделы
- Мониторы — HTTP/TCP проверки и инциденты
- Панель оператора — Обзор → Инциденты