Мониторинг свободного места на диске в EC2 с помощью CloudWatch
Коротко о терминах
- EC2 — виртуальная машина в AWS.
- CloudWatch — сервис мониторинга и тревог в AWS.
- Metric — показатель (метрика) в CloudWatch.
- Alarm — тревога, которая срабатывает при нарушении порога метрики.
Требования
- Ubuntu на EC2 (инструкции адаптированы под Ubuntu).
- Доступ в AWS Console и права на создание Access Key/Secret Key для пользователя IAM.
- Разрешения для отправки пользовательских метрик в CloudWatch.
Установка и настройка CloudWatch
- Подключитесь к инстансу, который будете мониторить, и обновите пакеты:
apt-get update
apt-get upgrade- Установите библиотеки, которые нужны скрипту:
apt-get install libwww-perl libdatetime-perl- Скачайте и распакуйте официальный пакет мониторинга:
cd /opt/
wget http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip
unzip CloudWatchMonitoringScripts-1.2.1.zip
rm CloudWatchMonitoringScripts-1.2.1.zip
cd aws-scripts-mon- Создайте конфигурационный файл с учётными данными AWS:
cp awscreds.template awscreds.conf- Получите Access key и Secret key в AWS Console: Services -> All AWS Services -> IAM (или https://console.aws.amazon.com/iam/home).
- Перейдите в Users -> выберите пользователя -> User Actions -> Manage Access Keys -> Create Access Key.
ВНИМАНИЕ: секретный ключ отображается только один раз. Сохраните его.
- Отредактируйте awscreds.conf и добавьте ключи:
nano awscreds.confВставьте:
AWSAccessKeyId=XXXXXXXXXXXXXXX
AWSSecretKey=YYYYYYYYYYYYYYYYYYСохраните и закройте файл (Ctrl+O, затем Ctrl+X).
Настройка мониторинга свободного места на диске
Далее настроим cron, чтобы скрипт регулярно отправлял метрики в CloudWatch. В примере проверка каждые 5 минут.
nano /etc/cron.d/cloudwatch-monitorДобавьте:
*/5 * * * * root /opt/aws-scripts-mon/mon-put-instance-data.pl --disk-space-avail --disk-path=/ --disk-path=/var --from-cron
chmod +x /etc/cron.d/cloudwatch-monitor
/etc/init.d/cron restartВ примере мониторятся файловые системы root (/) и /var. Вы можете указать другие пути.
Добавление метрики и создание тревоги в AWS Console
- Зайдите в AWS Console -> Services -> All AWS Services -> CloudWatch -> Metrics -> Linux System Metrics.
- Если cron работает и скрипт отправляет данные, вы увидите метрику с именем “DiskSpaceAvailabe” для каждого указанного пути.
- Создайте Alarm: выберите метрику, задайте порог, период и действие (например, отправка уведомления в SNS).
Важно: проверьте, в каких единицах отображается метрика в вашей консоли (байты или проценты). Это влияет на порог тревоги.
Примеры и рекомендации по порогам и поведению тревоги
- Для систем с логами в /var установите отдельную тревогу для /var, чтобы отделять проблемы логирования от корневой файловой системы.
- Рекомендуемые параметры тревоги (пример): Threshold = 10% свободного места OR Threshold = 5 GB свободного места; Period = 300s; Evaluation Periods = 2.
- При критичных системах стоит отправлять уведомление в SNS и автоматически запускать runbook/авто-скрипт для очистки логов или расширения диска.
Поиск и устранение проблем (troubleshooting)
- Нет метрик в CloudWatch: убедитесь, что cron запущен и скрипт имеет права на выполнение. Проверьте логи cron и права на /opt/aws-scripts-mon/mon-put-instance-data.pl.
- Неверные учётные данные: проверьте awscreds.conf и корректность Access/Secret ключей.
- Проблемы с сетью: инстанс должен иметь доступ к API CloudWatch (проверьте маршрутизацию и политики безопасности).
- Разница единиц: если метрика отображается в байтах, а вы ожидаете проценты — проверьте опции скрипта и метрики в консоли.
Альтернативные подходы
- CloudWatch Agent (унифицированный агент) — официальное решение, которое собирает больше метрик и проще масштабируется.
- AWS Systems Manager (SSM) — можно запускать скрипты и собирать данные централизованно.
- Собственные агенты с отправкой пользовательских метрик — подходит при необходимости кастомных измерений.
Плюсы официального скрипта: простота и минимальные зависимости. Минусы: ограничённая гибкость по сравнению с CloudWatch Agent.
Пошаговая методология внедрения (мини-SOP)
- Тест на dev/stage: установите скрипт на тестовый инстанс.
- Проверка отправки метрик: дождитесь появления метрик в CloudWatch.
- Настройка тревог в CloudWatch с уведомлением в SNS.
- Тест срабатывания: искусственно заполните диск, проверьте срабатывание Alarm и получение уведомлений.
- Ролл-аут на прод: поэтапный развёртывание с мониторингом результатов.
Рольные чек-листы
- DevOps:
- Установить пакет и cron.
- Проверить права доступа и сеть.
- Настроить Alarm и SNS.
- Секьюрити:
- Убедиться, что Access/Secret не доступны посторонним.
- Ограничить права IAM до необходимых.
- Владелец приложения:
- Определить допустимый уровень свободного места и действия при срабатывании.
Критерии приёмки
- Метрики DiskSpaceAvailabe появляются в CloudWatch для всех указанных путей.
- Alarm срабатывает при искусственном снижении свободного места.
- Уведомления успешно доставляются в SNS/Email/Slack.
Простая карта решений (Mermaid)
flowchart TD
A[Нет метрик в CloudWatch?] -->|Да| B{cron запущен?}
B -->|Нет| C[Включить cron и проверить /var/log/syslog]
B -->|Да| D{Учётные данные верны?}
D -->|Нет| E[Проверить awscreds.conf и ключи в IAM]
D -->|Да| F{Сеть доступна к CloudWatch?}
F -->|Нет| G[Проверить Security Group и маршрутизацию]
F -->|Да| H[Посмотреть логи скрипта и права на файл]Краткий словарь
- DiskSpaceAvailabe — пользовательская метрика, отправляемая скриптом для указанной точки монтирования.
Итог
Настройка отправки метрик свободного места с помощью официального скрипта AWS — быстрый и надёжный способ добавить мониторинг дискового пространства для Ubuntu EC2. Для промышленных окружений рассмотрите переход на CloudWatch Agent и интеграцию с автоматическими действиями при срабатывании тревог.
Summary:
- Установите скрипт и добавьте awscreds.conf.
- Добавьте cron для регулярной отправки метрик.
- Создайте Alarm в CloudWatch и протестируйте срабатывание.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента