Налаштування Synthetic Monitoring для сайту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування Synthetic Monitoring для сайту
Проста
від 1 робочого дня до 3 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування синтетичного моніторингу

Синтетичний моніторинг імітує дії користувача в браузері за розкладом з різних географічних точок. На відміну від ping-моніторингу, він перевіряє реальні сценарії: вхід в акаунт, завантаження даних, заповнення форм.

Datadog Synthetic Tests

# Створити браузерний тест через 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 }}'  # З секрету
                }
            },
            {'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: код-перший синтетичний моніторинг

// 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 з браузерними перевірками з 3 регіонів та Slack/PagerDuty сигналами — 1–2 робочих дні.