Настройка Synthetic Monitoring (регулярные проверки критических путей)
Synthetic Monitoring — это имитация действий реального пользователя по расписанию. Скрипт открывает браузер, проходит через сценарий (например, оформление заказа), и записывает: работает ли каждый шаг, сколько занял, где появились ошибки. Это обнаруживает проблемы до того, как их заметят пользователи.
Разница с uptime мониторингом
Простой ping на GET / — это не synthetic monitoring. Он проверяет, что сервер отвечает. Synthetic monitoring проверяет, что бизнес-функции работают:
- Пользователь может зарегистрироваться
- Поиск возвращает результаты
- Добавление в корзину работает
- Платёжная форма открывается
Критические пути для мониторинга
Приоритет — пути, от которых зависит выручка и удержание:
E-commerce:
- Поиск товара → страница товара → добавить в корзину → начать checkout
- Логин → личный кабинет → история заказов
- Регистрация нового пользователя
SaaS приложение:
- Логин → дашборд → ключевая функция
- Создание нового объекта (проект/документ/задача)
- API эндпоинты (для B2B клиентов)
Контент-сайт:
- Поиск → результаты → статья
- Форма подписки на рассылку
- Форма обратной связи
Playwright-based synthetic monitoring с Checkly
// checkly: checkout-flow.spec.js
const { chromium } = require('playwright')
const { expect } = require('@playwright/test')
async function checkoutFlow() {
const browser = await chromium.launch()
const page = await browser.newPage()
try {
// Шаг 1: Открыть каталог
await page.goto('https://example.com/catalog')
await expect(page.locator('.product-grid')).toBeVisible()
// Шаг 2: Открыть первый товар
await page.locator('.product-card').first().click()
await expect(page.locator('[data-testid="product-title"]')).toBeVisible()
// Шаг 3: Добавить в корзину
await page.locator('[data-testid="add-to-cart"]').click()
await expect(page.locator('[data-testid="cart-count"]')).toContainText('1')
// Шаг 4: Перейти в корзину
await page.goto('https://example.com/cart')
await expect(page.locator('.cart-items')).toContainText('1 товар')
console.log('Checkout flow: PASS')
} finally {
await browser.close()
}
}
Datadog Synthetic Tests
# Создать Synthetic Browser Test через API
import requests
test_config = {
"name": "Checkout Flow - Production",
"type": "browser",
"config": {
"request": {
"url": "https://example.com",
"method": "GET"
}
},
"options": {
"tick_every": 300, # Каждые 5 минут
"min_failure_duration": 120,
"min_location_failed": 2,
"retry": {"count": 2, "interval": 300}
},
"locations": [
"aws:eu-west-1",
"aws:us-east-1",
"aws:ap-northeast-1"
],
"status": "live",
"tags": ["team:frontend", "env:production"]
}
requests.post(
"https://api.datadoghq.com/api/v1/synthetics/tests/browser",
headers={"DD-API-KEY": API_KEY, "DD-APPLICATION-KEY": APP_KEY},
json=test_config
)
Playwright + GitHub Actions: self-hosted synthetic monitoring
Для минимального бюджета — GitHub Actions Cron:
# .github/workflows/synthetic-monitoring.yml
name: Synthetic Monitoring
on:
schedule:
- cron: '*/5 * * * *' # Каждые 5 минут
workflow_dispatch:
jobs:
check-critical-paths:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Playwright
run: npx playwright install chromium
- name: Run synthetic checks
env:
APP_URL: ${{ vars.PRODUCTION_URL }}
TEST_USER_EMAIL: ${{ secrets.SYNTHETIC_USER_EMAIL }}
TEST_USER_PASSWORD: ${{ secrets.SYNTHETIC_USER_PASSWORD }}
run: npx playwright test tests/synthetic/
- name: Notify on failure
if: failure()
run: |
curl -X POST "$SLACK_WEBHOOK" \
-d '{"text": "Synthetic monitoring FAILED: checkout flow"}'
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
Ограничение: GitHub Actions Cron не гарантирует точное время запуска — задержка до 5-15 минут. Для точного 1-минутного мониторинга нужен managed сервис.
Управление тестовыми данными
Синтетические тесты требуют тестовые аккаунты и данные:
- Отдельный
[email protected]пользователь с production-аккаунтом - Платёжный метод: тестовая карта Stripe (4242 4242 4242 4242)
- Заказы от синтетического пользователя помечать тегом, исключать из бизнес-аналитики
- Регулярно очищать тестовые данные (корзина, черновики)
Метрики и алерты
Ключевые метрики synthetic monitoring:
- Availability % — процент успешных прогонов
- Step duration — время каждого шага в отдельности
- Total flow duration — общее время сценария
- First failure step — на каком шаге сломалось
Алерт: если 2 из 3 проверок из разных регионов завершились ошибкой → critical alert в PagerDuty.
Сроки реализации
- Checkly / Datadog Synthetic (managed) — 2-3 дня на сценарии
- GitHub Actions cron + Playwright — 2-3 дня
- Тестовые аккаунты + очистка данных — 1 день
- Алерты + интеграция с incident management — 1 день







