Проект: {PROJECT_NAME}
Последнее обновление: {ДАТА}
# Ежедневно в 4:00 - бэкап БД
0 4 * * * /opt/{PROJECT_NAME}/scripts/backup-db.sh
# Ежедневно в 5:00 - очистка старых логов
0 5 * * * find /var/log/{PROJECT_NAME}/ -name "*.log" -mtime +30 -delete
# Ежедневно в 6:00 - очистка временных файлов
0 6 * * * find /tmp/{PROJECT_NAME}/ -mtime +7 -delete
# 1. Проверить статус приложения
systemctl status {PROJECT_NAME}
# Ожидаем:
# ● {PROJECT_NAME}.service - {Description}
# Loaded: loaded
# Active: active (running)
# 2. Проверить логи на ошибки
journalctl -u {PROJECT_NAME} --since today | grep -i error
# Ожидаем: Нет критичных ошибок
# 3. Проверить место на диске
df -h
# Ожидаем: < 80% использования
# 4. Проверить память
free -h
# Ожидаем: Достаточно свободной RAM
# 5. Health check
curl http://localhost:{PORT}/health
# Ожидаем: {"status": "ok"}
# 1. Проверить размер БД
du -sh /var/lib/postgresql/data # PostgreSQL
du -sh data/*.sqlite # SQLite
# 2. Анализ производительности БД
sudo -u postgres psql {DB_NAME} -c "SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size FROM pg_tables ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC LIMIT 10;"
# 3. Проверить медленные запросы
sudo -u postgres psql {DB_NAME} -c "SELECT query, calls, total_time, mean_time FROM pg_stat_statements ORDER BY mean_time DESC LIMIT 10;"
# 4. Обновить статистику БД (PostgreSQL)
sudo -u postgres psql {DB_NAME} -c "VACUUM ANALYZE;"
# 5. Проверить ротацию логов
ls -lh /var/log/{PROJECT_NAME}/
# 6. Проверить бэкапы
ls -lh /backup/ | tail -10
# Проверить обновления безопасности
apt list --upgradable | grep -i security
# Проверить неудачные попытки входа
grep "Failed password" /var/log/auth.log | tail -20
# Проверить открытые порты
ss -tulpn | grep LISTEN
# 1. Обновить зависимости (dev окружение сначала!)
pip list --outdated
pip install --upgrade {ПАКЕТ}
# Node.js
npm outdated
npm update
# 2. Проверить уязвимости
pip install safety
safety check
npm audit
npm audit fix
# 3. Обновить систему
apt update
apt list --upgradable
apt upgrade # В maintenance window!
# 1. Очистка старых бэкапов (оставить последние 30 дней)
find /backup/ -name "*.sql" -mtime +30 -delete
# 2. Очистка старых логов (оставить 90 дней)
find /var/log/{PROJECT_NAME}/ -name "*.log.*" -mtime +90 -delete
# 3. Очистка временных файлов
find /tmp/ -mtime +30 -delete
# 4. Очистка старых данных в БД (если применимо)
# Например, удалить обработанные заказы старше 6 месяцев
psql {DB_NAME} -c "DELETE FROM archived_orders WHERE created_at < NOW() - INTERVAL '6 months';"
# 1. Размер компонентов
du -sh /opt/{PROJECT_NAME}/*
# 2. Top процессы по CPU
ps aux --sort=-%cpu | head -10
# 3. Top процессы по памяти
ps aux --sort=-%mem | head -10
# 4. Сетевые соединения
netstat -an | grep ESTABLISHED | wc -l
# 5. Uptime
uptime
# 1. Создать тестовый бэкап
./scripts/backup-db.sh
# 2. Развернуть на тестовом сервере из бэкапа
scp /backup/latest.sql test-server:/tmp/
ssh test-server "psql -U user -d test_db < /tmp/latest.sql"
# 3. Проверить работоспособность
curl http://test-server:{PORT}/health
# 4. Задокументировать результаты
# 1. Проверить все пользователи системы
cat /etc/passwd
# 2. Проверить SSH ключи
ls -la ~/.ssh/
# 3. Проверить firewall правила
ufw status verbose
# 4. Проверить SSL сертификаты (срок действия)
echo | openssl s_client -servername {DOMAIN} -connect {DOMAIN}:443 2>/dev/null | openssl x509 -noout -dates
# 5. Проверить пароли (не устарели ли)
# См. SECRETS.md
# 1. Load testing (см. TESTING.md)
locust -f tests/performance/locustfile.py --users 100
# 2. Анализ результатов
# - RPS (requests per second)
# - Latency (p50, p95, p99)
# - Error rate
# 3. Сравнить с прошлым кварталом
# Есть ли деградация?
# Uptime
systemctl status {PROJECT_NAME} | grep Active
# Restart count
journalctl -u {PROJECT_NAME} | grep -c "Started"
# Ошибки за последний час
journalctl -u {PROJECT_NAME} --since "1 hour ago" | grep -ic error
# CPU
top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'
# Memory
free -h | awk '/^Mem:/ {print $3 "/" $2}'
# Disk
df -h / | awk 'NR==2 {print $5}'
# Load average
uptime | awk -F'load average:' '{print $2}'
# PostgreSQL connections
sudo -u postgres psql -c "SELECT count(*) FROM pg_stat_activity;"
# БД размер
sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('{DB_NAME}'));"
# Медленные запросы (> 1сек)
sudo -u postgres psql {DB_NAME} -c "SELECT count(*) FROM pg_stat_statements WHERE mean_time > 1000;"
| Метрика | Норма | Предупреждение | Критично |
|---|---|---|---|
| CPU | < 70% | 70-85% | > 85% |
| Memory | < 80% | 80-90% | > 90% |
| Disk | < 80% | 80-90% | > 90% |
| DB connections | < 50 | 50-80 | > 80 |
| Error rate | < 1% | 1-5% | > 5% |
| Response time | < 500ms | 500-1000ms | > 1000ms |
# Автоматическая ротация (logrotate)
cat > /etc/logrotate.d/{PROJECT_NAME} << 'LOGROTATE'
/var/log/{PROJECT_NAME}/*.log {
daily
rotate 30
compress
delaycompress
notifempty
create 0640 {USER} {GROUP}
sharedscripts
postrotate
systemctl reload {PROJECT_NAME} > /dev/null 2>&1 || true
endscript
}
LOGROTATE
# Ручная очистка старых логов
find /var/log/{PROJECT_NAME}/ -name "*.log.*.gz" -mtime +90 -delete
# Очистка /tmp
find /tmp/{PROJECT_NAME}/ -type f -mtime +7 -delete
find /tmp/{PROJECT_NAME}/ -type d -empty -delete
# Очистка кеша (если есть)
rm -rf /var/cache/{PROJECT_NAME}/*
-- Архивирование старых данных
-- Переместить обработанные заказы в архив
INSERT INTO archived_orders
SELECT * FROM orders
WHERE status = 'completed' AND created_at < NOW() - INTERVAL '6 months';
DELETE FROM orders
WHERE status = 'completed' AND created_at < NOW() - INTERVAL '6 months';
-- Очистка устаревших сессий
DELETE FROM sessions WHERE expires_at < NOW();
-- Очистка логов приложения (если хранятся в БД)
DELETE FROM app_logs WHERE created_at < NOW() - INTERVAL '3 months';
-- VACUUM для освобождения места
VACUUM FULL ANALYZE;
# 1. Создать бэкап ПЕРЕД обновлением
./scripts/backup-db.sh
tar -czf /backup/app-before-update-$(date +%Y%m%d).tar.gz /opt/{PROJECT_NAME}/
# 2. Обновить зависимости
pip install --upgrade -r requirements.txt
# 3. Применить миграции БД
alembic upgrade head
# 4. Перезапустить приложение
systemctl restart {PROJECT_NAME}
# 5. Проверить работоспособность
sleep 5
curl http://localhost:{PORT}/health
systemctl status {PROJECT_NAME}
# 6. Мониторить логи 10 минут
journalctl -u {PROJECT_NAME} -f
# 1. Остановить приложение
systemctl stop {PROJECT_NAME}
# 2. Восстановить код
tar -xzf /backup/app-before-update-{DATE}.tar.gz -C /
# 3. Откатить миграции БД
alembic downgrade -1
# 4. Запустить
systemctl start {PROJECT_NAME}
# 5. Проверить
curl http://localhost:{PORT}/health
## {ДАТА} - {ТИП_ПРОФИЛАКТИКИ}
**Исполнитель:** {ИМЯ}
**Время:** {ВРЕМЯ_НАЧАЛА} - {ВРЕМЯ_ОКОНЧАНИЯ}
### Выполненные работы
- [ ] Проверка статуса приложения
- [ ] Анализ логов
- [ ] Очистка данных
- [ ] {ДРУГИЕ_РАБОТЫ}
### Обнаруженные проблемы
- {ПРОБЛЕМА_1} - решена / запланирована
- {ПРОБЛЕМА_2}
### Метрики
- CPU: {ЗНАЧЕНИЕ}%
- Memory: {ЗНАЧЕНИЕ}%
- Disk: {ЗНАЧЕНИЕ}%
- БД размер: {ЗНАЧЕНИЕ}GB
### Действия
- {ДЕЙСТВИЕ_1}
- {ДЕЙСТВИЕ_2}
### Следующая профилактика
{ДАТА_СЛЕДУЮЩЕЙ}
Срочная профилактика если:
Действия:
Последнее обновление: {ДАТА}
Ответственный за профилактику: {ИМЯ}