Настройка Synthetic Monitoring для сайта

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка Synthetic Monitoring для сайта
Простая
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Настройка синтетического мониторинга

Синтетический мониторинг имитирует действия пользователя в браузере по расписанию — из разных географических точек. В отличие от ping-мониторинга, проверяет реальные сценарии: вход в аккаунт, загрузка данных, заполнение формы.

Datadog Synthetic Tests

# Создание browser test через API
import datadog
from datadog import api

datadog.initialize(
    api_key='YOUR_DATADOG_API_KEY',
    app_key='YOUR_DATADOG_APP_KEY'
)

test = api.Synthetics.create_test({
    'name': 'Login Flow - Production',
    'type': 'browser',
    'status': 'live',
    'locations': [
        'aws:eu-west-1',
        'aws:us-east-1',
        'aws:ap-southeast-1',
    ],
    'options': {
        'tick_every': 900,  # каждые 15 минут
        'min_failure_duration': 300,  # алерт после 5 минут сбоя
        'min_location_failed': 1,
        'retry': {'count': 2, 'interval': 300},
        'monitor_options': {
            'notify_audit': False,
            'renotify_interval': 60,
        }
    },
    'config': {
        'start_url': 'https://mysite.com/login',
        'steps': [
            {
                'type': 'typeText',
                'name': 'Enter email',
                'params': {
                    'element': {'type': 'css', 'value': 'input[name="email"]'},
                    'value': '[email protected]'
                }
            },
            {
                'type': 'typeText',
                'name': 'Enter password',
                'params': {
                    'element': {'type': 'css', 'value': 'input[name="password"]'},
                    'value': '{{ MONITOR_PASSWORD }}'  # Из secret
                }
            },
            {'type': 'click', 'params': {'element': {'type': 'css', 'value': '[type=submit]'}}},
            {
                'type': 'assertElementPresent',
                'name': 'Dashboard loaded',
                'params': {'element': {'type': 'css', 'value': '[data-testid="dashboard"]'}}
            }
        ]
    },
    'message': 'Login flow failed! @pagerduty-production'
})

Checkly: code-first синтетический мониторинг

// checkly.config.ts
import { defineConfig } from 'checkly';
import { Frequency } from 'checkly/constructs';

export default defineConfig({
  projectName: 'My Site',
  logicalId: 'my-site',
  repoUrl: 'https://github.com/myorg/my-site',
  checks: {
    activated: true,
    muted: false,
    runtimeId: '2024.02',
    frequency: Frequency.EVERY_10M,
    locations: ['eu-west-1', 'us-east-1'],
    tags: ['production'],
    browserChecks: {
      testMatch: '**/__checks__/**/*.check.ts',
    },
  },
});
// __checks__/login.check.ts
import { BrowserCheck, Frequency } from 'checkly/constructs';
import { expect, test } from '@playwright/test';

export const loginCheck = new BrowserCheck('login-flow', {
  name: 'Login Flow',
  frequency: Frequency.EVERY_10M,
  locations: ['eu-west-1', 'us-east-1', 'ap-southeast-1'],
  code: {
    entrypoint: './login.spec.ts',
  },
});
// __checks__/login.spec.ts
import { test, expect } from '@playwright/test';

test('Login flow works', async ({ page }) => {
  await page.goto('https://mysite.com/login');

  await page.fill('[name="email"]', process.env.MONITOR_EMAIL!);
  await page.fill('[name="password"]', process.env.MONITOR_PASSWORD!);
  await page.click('[type="submit"]');

  await expect(page).toHaveURL(/\/dashboard/);
  await expect(page.locator('h1')).toContainText('Dashboard');
});
# Деплой checks из CI
npx checkly deploy --preview
npx checkly deploy  # Production

Grafana + k6: синтетические нагрузочные тесты

// k6/synthetic-load.js
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  scenarios: {
    synthetic_monitoring: {
      executor: 'constant-arrival-rate',
      rate: 1,           // 1 итерация в минуту
      timeUnit: '1m',
      duration: '24h',   // Непрерывно
      preAllocatedVUs: 2,
    },
  },
  thresholds: {
    http_req_duration: ['p(95)<2000'],  // 95% запросов < 2s
    http_req_failed: ['rate<0.01'],     // < 1% ошибок
  },
};

export default function () {
  // Homepage
  let res = http.get('https://mysite.com');
  check(res, {
    'homepage status 200': (r) => r.status === 200,
    'homepage < 2s': (r) => r.timings.duration < 2000,
  });

  sleep(10);

  // API health
  res = http.get('https://api.mysite.com/health');
  check(res, {
    'api healthy': (r) => r.status === 200 && r.json('status') === 'ok',
  });
}

Алерты и эскалация

# Grafana Alerting: оповещения при сбое
alert_rules:
  - name: Synthetic Monitor Failure
    condition: "avg(synthetic_check_success) < 0.9"
    for: 5m
    annotations:
      summary: "Synthetic monitor failing for {{ $labels.check_name }}"
    labels:
      severity: critical
    notifications:
      - pagerduty
      - slack-ops-channel

Метрики синтетического мониторинга:

  • Доступность (uptime %) из каждого региона
  • TTFB (Time to First Byte)
  • Время загрузки страницы
  • Время выполнения пользовательского сценария
  • Количество последовательных отказов до алерта

Настройка Checkly с браузерными checks из 3 регионов и Slack/PagerDuty алертами — 1–2 рабочих дня.