Налаштування Synthetic Monitoring (регулярні перевірки критичних шляхів)
Synthetic Monitoring — імітація дій реального користувача за розписанням. Скрипт відкриває браузер, проходить через сценарій (наприклад, оформлення замовлення), та записує: працює ли кожен крок, скільки часу займає, де з'явилися помилки? Це виявляє проблеми до того, як їх помітять користувачі.
Різниця від uptime моніторингу
Простий ping на GET / — це не synthetic monitoring. Він перевіряє, що сервер відповідає. Synthetic monitoring перевіряє, що бізнес-функції працюють:
- Користувач може зареєструватися
- Пошук повертає результати
- Додавання в кошик працює
- Платіжна форма відкривається
Критичні шляхи для моніторингу
Пріоритет — шляхи, від яких залежить виручка та утримання:
E-commerce:
- Пошук товару → сторінка товару → додати в кошик → почати оформлення
- Логін → особистий кабінет → історія замовлень
- Реєстрація нового користувача
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 день
- Алерти + інтеграція з управлінням інцидентами — 1 день







