Ответ
Я писал Bash-скрипты для автоматизации рутинных операционных задач, что является основой для построения более сложных CI/CD-пайплайнов.
1. Скрипты для мониторинга и алертинга:
- Мониторинг логов на предмет ошибок: Скрипт, который парсит логи приложения и отправляет алерт в Slack/Telegram, если обнаруживается критическая ошибка или паттерн, указывающий на сбой.
#!/bin/bash LOG_FILE="/var/log/myapp/app.log" ERROR_PATTERN="CRITICAL|OutOfMemoryError" if tail -n 100 "$LOG_FILE" | grep -q "$ERROR_PATTERN"; then MESSAGE="$(hostname): Critical error found in $LOG_FILE" # Отправка в Slack через webhook curl -X POST -H 'Content-type: application/json' --data "{"text":"$MESSAGE"}" "$SLACK_WEBHOOK_URL" fi
2. Скрипты для управления резервными копиями:
-
Инкрементный бэкап с ротацией и проверкой целостности: Скрипт, который создает timestamp-архив данных, проверяет его с помощью
tar -tf, копирует на удаленный S3-бакет через AWS CLI или rsync-сервер, и удаляет архивы старше N дней.#!/bin/bash BACKUP_DIR="/backups" SOURCE_DIR="/data" S3_BUCKET="s3://my-backups" TIMESTAMP=$(date +%Y%m%d_%H%M%S) ARCHIVE_NAME="backup_$TIMESTAMP.tar.gz" tar -czf "$BACKUP_DIR/$ARCHIVE_NAME" "$SOURCE_DIR" && aws s3 cp "$BACKUP_DIR/$ARCHIVE_NAME" "$S3_BUCKET/" && find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +7 -delete
3. Скрипты для деплоя и обслуживания:
- Graceful-рестарт приложения с проверкой здоровья: Скрипт, который останавливает приложение, обновляет код из Git, устанавливает зависимости и запускает его с последующей проверкой, что оно отвечает на health-check эндпоинт.
- Сбор и агрегация системных метрик: Скрипт, который с помощью
vmstat,iostat,dfсобирает ключевые метрики (CPU, memory, disk I/O, space) и записывает их в формате, пригодном для ingestion в Prometheus (например, в файл, который читает node_exporter).
Общие принципы: Все скрипты включали обработку ошибок (set -euo pipefail), логирование действий, валидацию входных параметров и конфигурацию через переменные окружения или конфигурационные файлы для удобства поддержки.