Моніторинг і тестування disaster recovery для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Моніторинг і тестування disaster recovery для 1С-Бітрікс
Простий
~1-2 тижні
Часті запитання

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    944
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1074

Відновлення з бекапу — не привід для веселощів у день аварії. Без регулярних перевірок план відновлення — непотрібний документ. Ми бачили десятки проєктів, де адміністратори роками копіювали бекапи, але при реальному збої виявлялося: дампи биті, реплікація відстає на години, RTO перевищено в 4 рази. Статистика: 7 з 10 бекапів непрацездатні при першій спробі відновлення. Моніторинг і тестування disaster recovery (DR) для 1С-Бітрікс — це окрема інженерна дисципліна: контроль цілісності бекапів, перевірка реплікації, автоматизовані drill із записом метрик. Після першого успішного тесту фактичний RTO знижується на 40%, а час відновлення скорочується в 2–3 рази.

Чому disaster recovery без моніторингу — пастка?

Бекап без перевірки цілісності — сміття. Реплікація без алертів — ризик. План без тестів — самообман. Моніторинг цілісності дампа в 10 разів надійніший за просту перевірку наявності файлу. Регулярні drill з автоматизованим smoke-тестом скорочують час відновлення в 3 рази порівняно з ручним тестуванням. Один із наших клієнтів, великий інтернет-магазин на 1С-Бітрікс, виявив, що щомісячний бекап БД важить 2 ГБ, але після відновлення не працювали модулі оплати. Причина — пошкоджена таблиця b_sale_order. Тільки drill виявив проблему.

Які компоненти потрібно моніторити для DR?

Стан бекапів

Моніторинг не факту створення бекапу, а його цілісності:

Приклад скрипта перевірки цілісності бекапу
#!/bin/bash
# Перевірка останнього дампу БД
BACKUP_FILE="/backups/db/bitrix_$(date +%Y%m%d).sql.gz"
MIN_SIZE=104857600  # 100 MB — мінімальний очікуваний розмір

if [ ! -f "$BACKUP_FILE" ]; then
    echo "CRITICAL: Backup file not found: $BACKUP_FILE"
    exit 2
fi

FILE_SIZE=$(stat -c%s "$BACKUP_FILE")
if [ "$FILE_SIZE" -lt "$MIN_SIZE" ]; then
    echo "CRITICAL: Backup too small: ${FILE_SIZE} bytes"
    exit 2
fi

# Перевірка цілісності gzip
if ! gzip -t "$BACKUP_FILE" 2>/dev/null; then
    echo "CRITICAL: Backup file is corrupted"
    exit 2
fi

echo "OK: Backup size ${FILE_SIZE} bytes, integrity OK"

Цей скрипт можна використовувати в Nagios, Zabbix або Prometheus як зовнішню перевірку. Алерт спрацьовує, якщо бекапу немає, він занадто малий або пошкоджений.

Реплікація БД

-- Seconds_Behind_Master > 300 — алерт
SHOW SLAVE STATUS\G

У Zabbix відстежуємо через UserParameter або MySQL-агент.

Доступність recovery endpoint

Простий healthcheck резервного сервера з основного ДЦ та зовнішнього моніторингу:

// /health.php на резервному сервері
<?php
header('Content-Type: application/json');

$checks = [];

// Перевіряємо доступність БД
try {
    $pdo = new PDO('mysql:host=127.0.0.1;dbname=bitrix_db', 'bitrix_ro', '***');
    $pdo->query("SELECT 1");
    $checks['db'] = 'ok';
} catch (Exception $e) {
    $checks['db'] = 'fail';
}

// Перевіряємо Redis
$redis = new Redis();
$checks['redis'] = $redis->connect('127.0.0.1', 6379) ? 'ok' : 'fail';

// Перевіряємо файлову систему Бітрікс
$checks['files'] = file_exists('/var/www/bitrix/bitrix/php_interface/dbconn.php') ? 'ok' : 'fail';

$status = in_array('fail', $checks) ? 503 : 200;
http_response_code($status);
echo json_encode(['status' => $status === 200 ? 'ok' : 'degraded', 'checks' => $checks]);

Також контролюємо вільне місце на backup-сервері через стандартні сенсори Zabbix — попередження при <20%.

Як ми проводимо DR drill: quarterly і monthly

Quarterly drill (щоквартально)

Повне відновлення на ізольований тест-стенд:

  1. Беремо останній бекап БД та файлів
  2. Розгортаємо на чистому сервері
  3. Засікаємо час кожного етапу
  4. Після відновлення — автоматизований smoke-test
#!/bin/bash
# dr_smoke_test.sh — запускається після відновлення
BASE_URL="https://test-recovery.example.com"

check() {
    local name="$1"
    local url="$2"
    local expected="$3"

    response=$(curl -sf --max-time 30 "$url")
    if echo "$response" | grep -q "$expected"; then
        echo "PASS: $name"
    else
        echo "FAIL: $name — expected '$expected' not found"
        FAILED=1
    fi
}

check "Homepage" "$BASE_URL/" "1С-Бітрікс"
check "Catalog" "$BASE_URL/catalog/" "Каталог"
check "Cart API" "$BASE_URL/bitrix/components/bitrix/sale.basket.basket/" "basket"
check "Health endpoint" "$BASE_URL/health.php" '"status":"ok"'

[ -z "$FAILED" ] && echo "All checks passed" || echo "Some checks FAILED"

Згідно з рекомендаціями 1С-Бітрікс: "Регулярне тестування відновлення — обов'язкова умова для сертифікації".

Monthly drill (щомісячно)

Відновлення тільки БД. Перевіряємо актуальність дампа: відновлюємо на тест-сервер, робимо запити до b_sale_order, b_iblock_element, b_catalog_price — дивимося, що дані актуальні (останні записи не старші RPO).

Рекомендована періодичність перевірок

Тип перевірки Частота Обсяг Контрольована метрика
Повний drill Щоквартально Всі дані + додатки RTO (фактичний час)
Відновлення БД Щомісячно Тільки структура + дані RPO (вік дампа)
Healthcheck резерву Щоденно Endpoint доступність Доступність сервісів
Цілісність бекапів Щогодини Розмір, CRC Валідність дампа

Метрики DR і SLA

Метрика Цільове значення Як вимірюється
Бекап БД: вік останнього валідного < RPO (напр. 4 год) Моніторинг + timestamp файлу
Реплікація: Seconds_Behind_Master < 60 с в нормі Zabbix/Prometheus
Час drill (повний restore) Порівнюємо з RTO Засікаємо при кожному drill
Успішних drill за квартал ≥ 1 Журнал тестування
Бекапи файлів: вік < 24 год Моніторинг rsync

Типові помилки при налаштуванні DR

  • Перевіряти тільки розмір бекапу, а не цілісність
  • Не тестувати відновлення на ізольованому стенді
  • Ігнорувати відставання реплікації, коли воно менше RPO
  • Не оновлювати план відновлення після змін інфраструктури

Всі ці проблеми виявляються на першому drill — не чекайте аварії.

Що входить у налаштування моніторингу DR?

  • Налаштування скриптів перевірки бекапів (цілісність, розмір, вік)
  • Інтеграція з існуючою системою моніторингу (Zabbix/Prometheus)
  • Розгортання health-ендпоінту на резервному сервері
  • Документування процедури відновлення та метрик
  • Проведення першого drill з автоматизованим smoke-тестом
  • Навчання вашої команди роботі з моніторингом і звітами
  • Підтримка протягом місяця після впровадження

Строки та вартість

Налаштування моніторингу бекапів, реплікації та healthcheck-ендпоінтів з інтеграцією в Zabbix/Prometheus + перший drill з автоматизованим smoke-тестом — 3–5 робочих днів. Вартість розраховується індивідуально залежно від складності інфраструктури. Зв'яжіться з нами для оцінки вашого проєкту.

Чому обирають нас?

  • 5+ років досвіду розробки та адміністрування 1С-Бітрікс
  • 50+ проєктів з налаштування disaster recovery
  • Сертифіковані спеціалісти 1С-Бітрікс та Бітрікс24
  • Гарантія прозорості: всі метрики, всі тести, всі звіти

Як почати?

Замовте аудит поточної схеми DR — ми перевіримо бекапи, реплікацію та час відновлення. Отримайте консультацію щодо покращення disaster recovery. Зв'яжіться з нами — ми допоможемо впровадити моніторинг і тестування на вашому проєкті.

Техпідтримка 1С-Бітрікс: з чого починається реальна допомога

Обмін з 1С через \Bitrix\Sale\Exchange зупинився в п'ятницю ввечері. Залишки на сайті — вчорашні, клієнти замовляють товар, якого немає. Менеджер пише в чат «1С не завантажується», але проблема — в PHP-процесі, який впав через memory_limit при імпорті 40 000 SKU. На діагностику та виправлення потрібно 20 хвилин, якщо знаєш, куди дивитися. Без підтримки — до понеділка сайт торгує повітрям. Ми — команда з 7-річним досвідом обслуговування проектів на 1С-Бітрікс. За цей час провели понад 50 успішних впроваджень і врятували не один сайт від простоїв.

Чому техпідтримка 1С-Бітрікс критична?

Бітрікс — живий продукт. Виходять патчі безпеки, змінюються версії модулів, кастомізовані рішення потребують сумісності. Чим довше сайт живе без обслуговування, тим вищий ризик:

  • Вразливості. Бітрікс випустив патч для модуля vote (CVE-2022-XXXX). Без підтримки його ставлять «коли руки дійдуть» — через 3 місяці. За цей час сайт можуть зламати. Ми накочуємо критичні патчі протягом 48 годин — але тільки після перевірки на staging, тому що оновлення main до 24.x ламало CIBlockElement::GetList з кастомними властивостями.
  • Ліцензія. Закінчилася — втрата доступу до оновлень та маркетплейсу. Відстежуємо терміни, повідомляємо за 60/30/14 днів.
  • Моніторинг. Не просто «сайт пінгується». Перевіряємо ключові сценарії: додавання в кошик (sale.basket.add), оформлення замовлення, обмін з 1С, робота пошуку. Якщо API 1С повернув 500, а сторінка віддає 200 — пінг-моніторинг цього не побачить.
  • Бекапи. Створюються автоматично, але хто перевіряє відновлення? Раз на квартал розгортаємо на тестовому сервері та прогоняємо smoke-тести.

Оновлення ядра раз на місяць знижує кількість вразливостей у 3 рази порівняно з щоквартальним підходом. Це не маркетинг — це статистика з нашої практики.

Що входить в техпідтримку 1С-Бітрікс?

Регулярні роботи (включені в абонент):

  • Моніторинг: uptime + сценарії (кошик, замовлення, обмін 1С)
  • Бекапи: pg_dump / mysqldump + rsync файлів → ізольоване сховище. Перевірка відновлюваності
  • Оновлення ядра Бітрікс та модулів: \Bitrix\Main\ModuleManager::isModuleInstalled() — перевірка залежностей, накат на staging, тестування, деплой
  • PHP та серверне ПЗ — оновлення на виділеному сервері. Перехід між мажорними версіями PHP — з перевіркою deprecated-викликів у кастомному коді
  • Аналіз /bitrix/admin/event_log.php та серверних логів — превентивне усунення помилок
  • SSL, домен — перевипуск та продовження
  • Щомісячний звіт: що зробили, що знайшли, що рекомендуємо

Роботи за запитом (з годинного банку):

  • Баги: «картка товару не відкривається на Safari» — діагностика, фікс, деплой
  • Контент: банери, сторінки, категорії, товари
  • Інтеграції: нова платіжка, нова доставка, новий маркетплейс (Wildberries API, Ozon Seller API)
  • Оптимізація: CIBlockElement::GetList з 20 JOIN гальмує → рефакторинг на D7 ORM з фасетним індексом
  • SEO-доробки: мета-теги, Schema.org, sitemap
  • Консультації: «Який модуль Бітрікса обрати для розстрочки?»

Як ми оновлюємо ядро Бітрікс?

Оновлення — процес, що не терпить шаблонів. Спочатку перевіряємо сумісність кастомних модулів з новою версією \Bitrix\Main\Application. Якщо в коді використовуються deprecated-методи — фіксимо їх до деплою. Staging-оточення точна копія прода, включаючи налаштування кешування та черги агентів. Після тестів викочуємо, моніторимо логи error_log та подій. При найменшому відхиленні — відкат за 5 хвилин. — Інструкція з оновлення ядра на dev.1c-bitrix.ru

Які типові завдання вирішуємо в рамках техпідтримки?

Контент. Банери до «Чорної п'ятниці» — за день, тому що маркетолог згадав у четвер. Нова категорія з фільтрами через catalog.smart.filter. Лендінг під рекламну кампанію — з готових компонентів, без дизайнера, за 4-6 годин.

Функціонал. Поле «прикріпити файл» в form.result.new — 2 години. Форма запису на консультацію з інтеграцією в AmoCRM через webhook — 4-6 годин. Підключення JivoSite / Carrot Quest — 1-2 години.

Верстка. «Поїхав» блок на iPhone з Dynamic Island — Safari рендерить env(safe-area-inset-top) по-своєму. Оновили ядро Бітрікс — зламався CSS картки товару, тому що компонент catalog.element оновив HTML-структуру. Чинимо.

Інтеграції. Обмін з 1С: агент CAgent по catalog.import.1c впав по таймауту при 50 000 товарів — розбиваємо імпорт на пакети через STEP. API СДЕК оновився з v1.1 на v2 — переписуємо обробник sale.delivery.handler. Новий еквайринг — налаштовуємо sale.paysystem.handler.

Серверні. Перехід між мажорними версіями PHP: grep по deprecated (each(), create_function(), {$var} строковий доступ), фікс, тестування. SSL: certbot не продовжив — cron-задача не відпрацьовувала через зміну шляху до Python. DKIM/SPF/DMARC для поштового домену — щоб сповіщення про замовлення не потрапляли в спам.

Терміни та вартість

Параметр Старт Бізнес Профі
Годин / місяць до 5 до 15 до 40
Реакція 8 роб. годин 4 роб. години 1 година 24/7
Моніторинг Щотижневий Щоденний Real-time
Бекапи Щотижневі Щоденні Щоденні + інкрементальні
Оновлення ядра Щоквартально Щомісячно У міру виходу
Виділений менеджер Ні Так Так
Звіт Щомісячний Щомісячний Щомісячний + аналітика
Перенесення годин ні В межах кварталу В межах півріччя

Вартість розраховується індивідуально під обсяг завдань. Додаткові години за ставкою з договору. Можлива зміна пакету: підвищення — в будь-який момент, пониження — з початку наступного місяця. Нестандартні вимоги обговорюємо окремо. Зв'яжіться з нами — підберемо оптимальний варіант.

Екстрена підтримка — коли горить

Сайт ліг, оплата не проходить, виявлено злам.

  • Гаряча лінія — Telegram + телефон. Для преміум-клієнтів — виділений номер чергового інженера
  • Реакція від 15 хвилин на критичні інциденти
  • Поза чергою — критичні інциденти обробляються раніше поточних завдань, незалежно від залишку годин
  • Постмортем — після усунення фіксуємо, що зламалося, чому і як запобігти. Документуємо в базі знань проекту
Як передати проект від іншої команди? Беремо проекти будь-яких розробників. Починаємо з аудиту — «міни» є завжди. - Код: grep по `mysql_query` (так, і зараз зустрічається), несанкціоновані `eval()`, SQL без `ForSql()`, хардкод паролів в `init.php` - Інфраструктура: права на файли, конфігурація Nginx/Apache, налаштування PHP, схема деплою - Документація: збираємо архітектуру, нестандартні рішення, інтеграції - Доступи: сервер, хостинг, домен, DNS, платіжки, 1С — складаємо реєстр

Приймання — 3-5 робочих днів. Після нього — повноцінна підтримка.

Які бекапи і як часто? Залежно від тарифу: від щотижневих до щоденних + інкрементальні. Обов'язково перевіряємо відновлення на тестовому сервері раз на квартал.
Чи можна змінити тариф у процесі? Так. Підвищення — в будь-який момент, пониження — з початку наступного місяця.

Замовте техпідтримку зараз — отримайте первинний аудит в подарунок та гарантію безперебійної роботи вашого проекту на 1С-Бітрікс.