Этот скрипт отслеживает состояние виртуальной машины (ВМ) в Yandex Cloud с помощью пинга и автоматически запускает её через API, если она становится недоступной.
- Python 3.8+
- Сервисный аккаунт Yandex Cloud с ролью
compute.operatorилиcompute.admin. - Авторизованный ключ сервисного аккаунта в формате JSON.
- Клонируйте репозиторий или скопируйте файлы.
- Установите зависимости:
pip install -r requirements.txt
- Создайте файл
.envна основе.env.exampleи заполните данные:INSTANCE_ID: ID вашей виртуальной машины (можно найти в консоли YC).TARGET_IP: IP-адрес или хост для проверки доступности.KEY_FILE: Путь к JSON-ключу сервисного аккаунта.
- Запустите скрипт для проверки:
python monitor.py
Вы можете настроить следующие параметры в файле .env:
PING_INTERVAL: Частота проверки в секундах (по умолчанию 60).MAX_FAILURES: Количество неудачных попыток до запуска ВМ (по умолчанию 3).
Для запуска в фоновом режиме, который продолжит работу после закрытия терминала:
nohup python monitor.py > monitor.log 2>&1 &Чтобы остановить процесс:
pkill -f monitor.pyСоздайте файл сервиса /etc/systemd/system/yc-pinger.service:
[Unit]
Description=Yandex Cloud VM Pinger
After=network.target
[Service]
Type=simple
User=ваш_пользователь
WorkingDirectory=/path/to/yc-susp-pinger
ExecStart=/usr/bin/python3 monitor.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetЗамените ваш_пользователь и /path/to/yc-susp-pinger на актуальные значения.
Команды для управления:
# Перезагрузить конфигурацию
sudo systemctl daemon-reload
# Включить автозагрузку при старте системы
sudo systemctl enable yc-pinger
# Запустить сервис
sudo systemctl start yc-pinger
# Проверить статус
sudo systemctl status yc-pinger