Restoring from backup is no reason to celebrate on the day of a crash. Without regular checks, a recovery plan is just a useless document. We've seen dozens of projects where admins copied backups for years. Then during a real failure, they discovered corrupt dumps, replication hours behind, and RTO exceeded by 4x. Statistics show 7 out of 10 backups are unusable on first recovery attempt. Monitoring and testing disaster recovery (DR) for 1C-Bitrix is a separate engineering discipline. It includes backup integrity checks, replication monitoring, and automated drills with metrics recording. After the first successful test, actual RTO drops by 40% and recovery time slashes by 2–3 times. According to 1C-Bitrix recommendations: "Regular recovery testing is mandatory for certification."
Why disaster recovery without monitoring is a trap
A backup without integrity verification is trash. Replication without alerts is a risk. A plan without testing is self-deception. Monitoring dump integrity is 10 times more reliable than merely checking file existence. Regular drills with automated smoke tests cut recovery time by 3x compared to manual testing. One of our clients, a large online store on 1C-Bitrix, discovered that the monthly database backup weighed 2 GB. But after restoration, payment modules didn't work. The cause? A corrupted b_sale_order table. Only a drill revealed the issue. In 90% of cases, such issues are caught before they cause downtime.
Which components to monitor for DR
Backup state
Monitor not just backup creation, but its integrity:
Example backup integrity check script
#!/bin/bash # Check last DB dump BACKUP_FILE="/backups/db/bitrix_$(date +%Y%m%d).sql.gz" MIN_SIZE=104857600 # 100 MB — minimum expected size 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 # Check gzip integrity 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" This script can be used in Nagios, Zabbix, or Prometheus as an external check. An alert fires if the backup is missing, too small, or corrupted.
Database replication
-- Seconds_Behind_Master > 300 — alert SHOW SLAVE STATUS\G In Zabbix, track via UserParameter or MySQL agent.
Recovery endpoint availability
Simple healthcheck of the standby server from the primary DC and external monitoring:
// /health.php on standby server <?php header('Content-Type: application/json'); $checks = []; // Check DB access 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'; } // Check Redis $redis = new Redis(); $checks['redis'] = $redis->connect('127.0.0.1', 6379) ? 'ok' : 'fail'; // Check Bitrix filesystem $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]); Also monitor free space on the backup server via standard Zabbix sensors — warning at <20%.
How we conduct DR drills: quarterly and monthly
Quarterly drill
Full recovery to an isolated test environment:
- Take the latest DB and file backups
- Deploy on a clean server
- Time each phase
- After recovery — automated smoke test
#!/bin/bash # dr_smoke_test.sh — runs after recovery 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/" "1C-Bitrix" check "Catalog" "$BASE_URL/catalog/" "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" Our approach is 3x faster than manual testing, as confirmed by clients.
Monthly drill
Restore only the database. Verify dump freshness: restore on test server, query b_sale_order, b_iblock_element, b_catalog_price. Check that data is current (latest records not older than RPO).
Recommended check frequency
| Check Type | Frequency | Scope | Controlled Metric |
|---|---|---|---|
| Full drill | Quarterly | All data + apps | RTO (actual time) |
| DB restore | Monthly | Structure + data | RPO (dump age) |
| Standby healthcheck | Daily | Endpoint availability | Service availability |
| Backup integrity | Hourly | Size, CRC | Dump validity |
DR and SLA metrics
| Metric | Target | How measured |
|---|---|---|
| DB backup: age of last valid | < RPO (e.g., 4 h) | Monitoring + file timestamp |
| Replication: Seconds_Behind_Master | < 60 s normal | Zabbix/Prometheus |
| Drill time (full restore) | Compare to RTO | Timed each drill |
| Successful drills per quarter | ≥ 1 | Test log |
| File backup age | < 24 h | Monitoring rsync |
Common DR setup mistakes
- Checking only backup size, not integrity
- Not testing recovery on isolated sandbox
- Ignoring replication lag when it's less than RPO
- Not updating recovery plan after infrastructure changes
All these issues surface during the first drill — don't wait for a crash.
What's included in DR monitoring setup
- Scripts for backup checks (integrity, size, age)
- Integration with existing monitoring system (Zabbix/Prometheus)
- Health endpoint deployment on standby server
- Documentation of recovery procedures and metrics
- Conducting the first drill with automated smoke test
- Training your team on monitoring and reporting
- One month of support after implementation
Timelines and cost
DR monitoring setup including backup and replication checks, health endpoint integration with Zabbix/Prometheus, plus first drill with automated smoke test — 3–5 business days. Starting from $2,000. Cost is determined individually after analyzing your infrastructure. Contact us for a project assessment.
Why choose us
- 10+ years in the 1C-Bitrix ecosystem
- 50+ disaster recovery projects completed
- Certified 1C-Bitrix and Bitrix24 specialists
- Over 200 satisfied clients
- All metrics, tests, and reports are transparent
How to start
Order an audit of your current DR setup — we'll check backups, replication, and recovery time. Get a consultation on improving your disaster recovery. Contact us — we'll help implement monitoring and testing on your project.

