Экспорт и импорт мониторов через CSV
До сих пор единственным способом перенести в PingZen пятьдесят мониторов было создать пятьдесят мониторов руками. А единственным способом сделать бэкап конфигурации мониторинга… ну, его не было.
Обе проблемы теперь решены: два API-эндпоинта и два MCP-инструмента.
Экспорт: вся конфигурация одним файлом
GET /api/v1/monitors/export/csvОдин запрос выгружает все ваши мониторы — по всем воркспейсам — в обычный CSV-файл, который открывается в Excel, Google Sheets или LibreOffice. Нужен только один воркспейс? Добавьте ?workspace_id=<id>.
Файл содержит полную конфигурацию: URL, протокол, интервал проверок, таймауты, настройки ретраев, keyword-проверки, ожидаемые DNS-записи, пороги SSL — каждую настройку каждого поддерживаемого протокола. В каждой строке есть колонка workspace с именем воркспейса, поэтому файл остаётся осмысленным и вне вашего аккаунта.
Две вещи намеренно никогда не покидают систему:
- Секреты. Пароли, токены и учётные данные прокси исключены на уровне колонок. CSV-файл пересылают, прикладывают к письмам и загружают куда попало — ваши учётные данные не должны путешествовать вместе с ним. (StatusCake делает так же со своими экспортами, и мы считаем это единственным разумным дефолтом.)
- Формулы. Значения ячеек, которые могли бы выполниться как формулы электронных таблиц (префиксы
=,+,-,@), нейтрализуются — открывать файл в Excel безопасно, даже если имя монитора пытается схитрить.
Импорт: из любой таблицы — или от конкурента
POST /api/v1/monitors/import/csvЗагружаете CSV — получаете мониторы. Очевидный сценарий — восстановить собственный экспорт, но парсер намеренно всеяден:
- Наш формат экспорта — восстанавливается без потерь.
- Файлы bulk-upload из UptimeRobot — колонки
Type,Friendly Name,URL/IP,Interval,Keyword Value,Portпонимаются как есть.Pingстановится ICMP,Port— TCP с портом, добавленным к хосту,Keyword— HTTP-проверкой с keyword-условием. - Экспорты StatusCake — включая их формат с разделителем
;и колонкиWebsiteName/WebsiteURL/CheckRate/FindString. - Файл, набранный руками — обязательна только колонка
url. Имя по умолчанию берётся из хоста, протокол — из схемы URL, всё остальное — разумные дефолты.
Ничего не создаётся, пока вы не скажете
Добавьте ?dry_run=true — эндпоинт провалидирует каждую строку и покажет, что произошло бы: создано, пропущено, ошибка и почему — не тронув ваш аккаунт. Запустили, прочитали отчёт, повторили без флага.
Одна плохая строка не убивает весь батч
Импорт построчный по замыслу. В строке 17 опечатка в URL? Вы получите запись об ошибке для строки 17 с точным сообщением валидации — а остальные 499 строк всё равно импортируются. Мониторы, которые уже существуют (тот же URL и протокол в целевом воркспейсе), по умолчанию пропускаются, поэтому повторный импорт бэкапа идемпотентен. Нужны дубликаты? ?on_duplicate=create.
Каждый созданный монитор проходит ровно тот же конвейер, что и созданный вручную: та же валидация, та же защита от SSRF, те же лимиты тарифа и немедленная первая проверка здоровья.
Для AI-агентов: два новых MCP-инструмента
Та же функциональность появилась в нашем MCP-сервере (v0.17.0) как export_monitors_csv и import_monitors_csv — LLM-агент, подключённый к PingZen, может делать бэкапы и миграции конфигураций в диалоге: «выгрузи мой продакшн-воркспейс», «импортируй эти 30 сайтов из таблицы».
Одна деталь безопасности, которая нам важна: для агентов dry-run включён по умолчанию. Агент, вызвавший import_monitors_csv без явного dry_run: false, получает отчёт-предпросмотр, а не запись. Агент показывает вам, что произойдёт; настоящий импорт запускается только после осознанного запроса.
Миграция с UptimeRobot за два шага
- В UptimeRobot экспортируйте мониторы в CSV.
- Отправьте этот файл
POST-ом на/api/v1/monitors/import/csv?dry_run=true, проверьте отчёт и повторите безdry_run.
Никакого переименования колонок, никакого переформатирования. То же самое работает для файлов StatusCake и HetrixTools.
Лимиты и детали
- До 500 строк / 1 МБ на один запрос импорта.
- Экспортируемый файл — UTF-8 с BOM: Excel корректно открывает кириллические имена мониторов.
- Разделители
,и;определяются автоматически. - Списковые значения (ожидаемые DNS-записи, кастомные DNSBL-серверы) можно писать как JSON или просто через точку с запятой; HTTP-заголовки — JSON-объект в ячейке.
- Работает с JWT или API-ключом, как и остальной API мониторов.
Полный справочник колонок — в одном запросе: выгрузите свои мониторы и посмотрите на строку заголовков. Формат экспорта и есть формат импорта.