Представим, что в вычислительном кластере из 1 000 серверов одна машина заражена неизвестным вирусом. Он не нагружает процессор, не генерирует подозрительный сетевой трафик и не оставляет следов в системных журналах. Только раз в сутки вирус незаметно повреждает один файл резервной копии.
Для поиска зараженного узла начинающий сисадмин Олег написал анализатор логов. Скрипт проверяет любое количество серверов одновременно, объединяя их журналы в единый пул. Результат проверки может быть только двух видов:
Status: 500 — если среди проверяемых серверов есть зараженный;
Status: 200 — если зараженного сервера в группе нет.
При этом анализатор нагружает сеть и системы хранения данных, поэтому его разрешено запускать не более 10 раз в сутки. Все проверки должны быть спланированы заранее и отправлены в расписание на весь день. Изменять состав очередной проверки после получения результатов предыдущей нельзя.
Задача
Помогите Олегу определить — предложите решение, которое позволит определить один зараженный сервер из 1 000 возможных за 10 запусков анализатора. Напишите код на Python, который по результатам проверок сможет определить номер зараженного узла.
Приглашаем на пятилетие «Тантор Лабс». 10 сентября - Tantor JAM 2026
Первый юбилей Tantor — пять лет с момента основания компании. За это время мы прошли путь от стартапа до технологического лидера, одного из ведущих российских разработчиков в области управления и хранения данных, создали собственную экосистему продуктов и собрали вокруг себя сообщество, которое сегодня во многом определяет развитие российского рынка СУБД.
Программу скоро представим. Среди главных премьер:
Новое поколение Платформы Tantor, основанное на AI-first подходе. Представим ИИ-администратора БД с целым роем специализированных ИИ-агентов, которые возьмут на себя рутинные операции по работе с СУБД.
Результаты испытаний МБД Tantor XData Gen3 на различных профилях нагрузки. Покажем, как enterprise-технологии, ранее доступные только в зарубежных решениях, — независимое масштабирование Compute и Storage, RDMA, распределенная файловая система и полноценный HTAP — становятся доступны в российском ПАКе.
Подробнее расскажем о Tantor Polar — новой распределенной СУБД, открывающей следующий этап развития российских PostgreSQL-технологий с полным сохранением совместимости с экосистемой Postgres.
Вас ждут выступления руководителей разработки, общение с инженерами, архитекторами, заказчиками и партнерами, а также праздничная программа в честь пятилетия компании.
Выберите, что прокачать: открытые уроки для IT-специалистов на неделю
Новая неделя — хороший повод закрыть конкретный пробел в знаниях, разобраться с рабочей задачей или попробовать направление, к которому давно присматривались.
Собрали открытые уроки по категориям, чтобы вы могли быстро найти подходящую тему.
Инфраструктура, DevOps и безопасность
27 июля в 20:00 — «K8S + Vault — как получать секреты?». Записаться
27 июля в 20:00 — «Использование GitLab CI для работы с Ansible». Записаться
30 июля в 20:00 — «Восстанавливаем RAID5 в Linux». Записаться
3 августа в 20:00 — «Что такое модуль ядра. Как его написать, собрать, запустить». Записаться
3 августа в 20:00 — «MPLS для корпоративных сетей: мифы, реальность и практика». Записаться
3 августа в 20:00 — «Какие результаты должен давать DevSecOps-проект бизнесу и команде». Записаться
Разработка
27 июля в 20:00 — «Разработка Embedded-устройств для IoT». Записаться
28 июля в 20:00 — «Что Golang даёт индустрии и что он может дать вам». Записаться
29 июля в 20:00 — «Собери себя сам: пишем трекер привычек на чистом JavaScript». Записаться
3 августа в 20:00 — «Оживляем код: первые шаги в ООП на Python». Записаться
3 августа в 20:00 — «Go: управляем памятью как профи. Массивы, слайсы и мапы». Записаться
AI и мультимодальные технологии
28 июля в 20:00 — «Стирание границ: нативная интеграция ASR, TTS и NLP в эпоху мультимодальных LLM». Записаться
Тестирование и развитие карьеры
30 июля в 20:00 — «API- и UI-тестирование с Playwright на Python». Записаться
30 июля в 20:00 — «Прохождение собеседования на нагрузочного тестировщика. Что интересует работодателя?». Записаться
Архитектура, корпоративные системы и интеграции
30 июля в 20:00 — «Функциональный архитектор 1С: как перестать быть „переводчиком требований“ и начать управлять системой». Записаться
3 августа в 20:00 — «Кастомизация компонентов в Битрикс24». Записаться
3 августа в 20:00 — «Использование брокера сообщений Apache Kafka в распределённых очередях». Записаться
Когда рабочая задача упирается в нехватку конкретных знаний, можно выбрать бесплатный урок по нужной теме, задать вопросы преподавателю-практику и проверить свой подход.
Это поможет точечно закрыть пробел и увереннее применять новые знания в работе.
Представлен открытый проект no‑gdid, который позволяет избежать слежки со стороны Microsoft через GDID (расшифровывается как Global Device Identifier, глобальный идентификатор устройства — это уникальный идентификатор, присваиваемый каждой установке Windows, который отслеживает телеметрию, специфичную для устройства).
Инструкция по использованию проекта gdid. Примечательно, что штатное отключение телеметрии не даёт заблокировать работу с GDID, который хранится на серверах Microsoft.
Ранее ФБР использовала идентификатор Windows 11 для ареста за распространение программы‑вымогателя.
Секреты в Kubernetes без ручного копирования: подключаем Vault через External Secrets Operator
Пока кластер небольшой, пароли, токены и ключи можно раскладывать по Kubernetes Secrets вручную. С ростом инфраструктуры этот подход быстро превращается в источник рисков: секреты дублируются, обновляются несинхронно, а их ротация требует всё больше действий и контроля.
27 июля в 20:00 на бесплатном уроке разберём, как связать Kubernetes с HashiCorp Vault и организовать централизованную доставку секретов в кластер. Основное внимание уделим External Secrets Operator и подходу dynamic secrets — чтобы чувствительные данные можно было получать и обновлять автоматически, без хранения лишних копий в манифестах и ручного переноса между системами.
Занятие проведёт преподаватель-практик, который покажет рабочую схему интеграции и примеры конфигураций, пригодные для адаптации под собственную инфраструктуру. Присоединяйтесь.
Другие полезные материалы собраны в дайджесте — там можно посмотреть все темы и выбрать занятие под текущую задачу.
Импортозамещение: «лишь бы российское» уже недостаточно
Наконец посчитали, что российский ИТ-рынок в 2025 году вырос на 13% и превысил 4 трлн рублей. Быстрее всего росли сегменты программного обеспечения и ИТ-услуг, а одним из главных драйверов оставалось импортозамещение.
Но сама цифра роста не означает, что заказчики готовы покупать любое решение с пометкой «российское». Часть динамики связана с ростом цен. При этом бюджеты стали жёстче, а крупные программы всё чаще разбивают на этапы. Рынок переходит от срочной замены зарубежных продуктов к промышленной эксплуатации отечественного стека.
Лицензия – только входной билет
Если ещё несколько лет назад основной вопрос звучал так: «Чем срочно заменить зарубежный продукт?», то сегодня заказчики оценивают уже не сам факт замены, а готовность решения к промышленной эксплуатации:
Как решение встроится в существующую инфраструктуру?
Кто отвечает за сопровождение при сбоях и обновлениях?
Как система восстанавливается после ошибочного изменения?
Можно ли масштабировать внедрение без роста операционных рисков?
Стоимость проекта определяется не только лицензией. Дальше – интеграция, тестирование, обучение команды, сопровождение разнородного стека, костыли, а возможно, и простои. Отдельная статья расходов – цена неудачного восстановления.
Каталог как проверка зрелости внедрения
Особенно хорошо зрелость внедрения проверяется на службе каталогов. Перенести пользователей, группы и политики в новый Linux-каталог недостаточно. До запуска нужно проверить не только авторизацию и интеграции, но и поведение системы после ошибки:
создание резервных копий и восстановление отдельных объектов и атрибутов;
сохранность прав доступа и членства в группах, корректность репликации;
мониторинг массовых и ошибочных изменений;
понятный порядок действий администратора после инцидента.
Простой тест часто показывает больше, чем длинная презентация: удалить тестовую группу, изменить несколько атрибутов, нарушить членство и пройти весь путь восстановления. Если этот сценарий не проверяли до запуска, его придётся осваивать уже во время простоя.
Иначе получается новый офис, в который уже перевели всех сотрудников, но забыли проверить, работает ли туалет. Формально переезд завершён. Эксплуатация говорит обратное.
Зрелое импортозамещение начинается не с выбора продукта, а с продуманного внедрения: проверки совместимости, распределения зон ответственности, отработанных сценариев восстановления и понимания цены ошибки.
Как управлять окружениями — venv / pip vs pipenv vs poetry?
Привет, Хабр! Продолжаем нашу рубрику с быстрыми ответами на некоторые часто встречающиеся вопросы. Сегодня разберем такую проблему: проекты постоянно ломаются из-за конфликтов зависимостей. Что выбрать для новых проектов и как сделать так, чтобы код работал одинаково, в том числе в CI?
Обычно начало всех проблем — смешение глобальных и локальных пакетов или отсутствие фиксированных версий библиотек. Главный совет: у каждого проекта должно быть собственное окружение с явно указанными зависимостями и сохраненным lock‑файлом в репозитории.
Если говорить о базе, то это связка venv и pip. Плюс она встроена в сам Python. Вы вручную создаете окружение, устанавливаете нужные пакеты и фиксируете их в requirements.txt.
Но подход со временем может стать неудобным — особенно когда в проекте десятки зависимостей и несколько разработчиков. Поэтому, на смену ручным методам пришел Poetry.
Сейчас это, пожалуй, наиболее сбалансированное решение: он создает и управляет окружениями, отслеживает версии, собирает wheel‑пакеты и умеет публиковать их в PyPI. Lock‑файл (poetry.lock) обеспечивает воспроизводимость сборок, а сам формат pyproject.toml — это стандарт. В итоге вы получаете чистое окружение, детерминированные зависимости и понятное поведение CI.
Отдельно стоит упомянуть uv — относительно новый инструмент, созданный командой Astral (авторы Ruff). Он написан на Rust и совместим с Python. По сути, это те же функции pip, venv и частично poetry, но быстрее. От Poetry он отличается отсутствием публикации пакетов, но при этом умеет сам устанавливать и менять версии Python через .python-version.
UV работает с pyproject.toml и имеет собственный uv.lock. Может использоваться вместе с Poetry, но лучше создавать единый uv.lock для строгой воспроизводимости. Для CI это удобно, вы пишите:
pip install uv
Далее есть два варианта:
uv venv — создает виртуальное окружение. Это аналог python3.13 -m venv .venv, но работает быстрее и с автоустановкой версии Python.
uv init — помимо .venv, добавляет шаблон проекта с pyproject.toml для зависимостей, Git-репозиторий и базовые файлы. Идеально для нового проекта.
И окружение в CI полностью совпадает с локальным, а билд воспроизводится без сюрпризов. Но чаще всего комбинируют два решения: Poetry для разработки и uv — для быстрых сборок и деплоймента.
Если хотите освоить инструменты Python, то в Академии Selectel у нас есть отдельная подборка статей. Там мы рассказываем, как настраивать инструменты, работать с базами данных, создавать программы с интерфейсом и использовать Python для парсинга.
Адриан Мастронарди (занимается созданием и управлением инженерными организациями, стоящими за выпуском ПО) выпустил книгу под названием «Полсекунды». В ней подробно рассматривается попытка создания бэкдора в xz в 2024 году. Книга распространяется бесплатно под (несвободной) некоммерческой лицензией CC, запрещающей создание производных работ.
Представлен проект «Контекстные бомбы: остановка ИИ‑атак на корню». «Теперь ИИ‑агенты могут самостоятельно проводить сложные кибератаки: получив доступ к базе, самые сильные модели могут повысить свои привилегии и похитить данные за считанные минуты. Модули Canary — ресурсы‑приманки, которые мы размещаем для обнаружения злоумышленников, — надёжно обнаруживают этих агентов в действии, но обнаружение атаки — это не то же самое, что ее предотвращение. Поэтому мы попробовали нечто более амбициозное: контекстную бомбу — короткий фрагмент текста, спрятанный в канарейке, который активирует защитные механизмы ИИ‑агента и останавливает его на корню. Контекстная бомба — короткий фрагмент текста, предназначенный для активации защитных механизмов атакующих ИИ‑агентов, размещаемый непосредственно на пути их атаки», — пояснили в команде Tracebit Research.
Эффективность этого проекта может варьироваться в зависимости от поставщика модели. Мы тестировали контекстные бомбы на пяти перспективных моделях, выполняющих атаку «красной команды» в реалистичной среде AWS. Развёртывание одной контекстной бомбы внутри среды (в качестве секрета AWS) оказало огромное влияние на остановку атакующих ИИ-атак. Например, эскалация привилегий администратора снизилась с 57% запусков до 5%.
Что делать, если Python-сервер падает из-за утечки памяти?
Привет, Хабр! Это наша экспериментальная рубрика, в которой мы даем новичкам быстрые ответы на четкие вопросы. Писать статью будет излишним, а некоторую пользу до аудитории донести, возможно, получится.
Итак, допустим, агент спустя время начинает расти по памяти и в итоге все падает. Где копать и как временно ограничить ущерб, пока ищете утечку?
Первое, что нужно сделать — измерить и локализовать. tracemalloc показывает, какие строки выделяют больше всего памяти, gc — количество объектов.
Часто проблема в неограниченных кэшах, списках или в C-расширениях. Сначала стоит включить tracemalloc, дать процессу поработать и снять снапшот:
import tracemalloc
tracemalloc.start()
# после нагрузки
snapshot = tracemalloc.take_snapshot()
top = snapshot.statistics('lineno')[:10]
for stat in top:
print(stat)
Параллельно делайте gc.collect() и логируйте число объектов len(gc.get_objects()), чтобы увидеть рост. На время расследования применяйте эксплуатационные меры: для WSGI-сервисов используйте Gunicorn с --max-requests и --max-requests-jitter, чтобы процессы периодически перезапускались и не накапливали мусор. А в контейнерах ставьте cgroup-пределы (--memory) и настраивайте restart-политику, чтобы платформа автоматически перезапускала упавшие поды.
Если утечка в C-расширении или сторонней библиотеке, то временно автоматический перезапуск и мониторинг позволяют сохранить сервис работоспособным, пока вы находите корень проблемы и исправляете код.
Если хотите освоить инструменты Python, то в Академии Selectel у нас есть отдельная подборка статей. Там мы рассказываем, как настраивать инструменты, работать с базами данных, создавать программы с интерфейсом и использовать Python для парсинга.
Проект tlosint-vm - виртуальная машину от Tracelabs OSINT, которая проверяет тысячи открытых источников по запросу:
сервис специально создали для соревнований OSINT‑исследователей и поиска пропавших пользователей в сети;
готовый стек: Shodan CLI, Sherlock (поиск по логинам и юзернеймам), PhoneInfoga (разведка по номерам телефонов), SpiderFoot и sn0int (автоматизированные OSINT‑фреймворки), theHarvester и h8mail (email), Sublist3r (поддомены), exiftool и steghide (метаданные и стеганография);
проработана приватность — как только пользователь выходит из сервиса, то система чистит все данные и куки;
внутрь также вшили хранилище Obsidian, где можно оставлять заметки во время поиска;
без ограничений, открытый проект, легальный поиск по открытым источникам.
Представлен открытый сервис NtWARden (Windows Analysis and Research Toolkit), который распознает любые вредоносы и проблемное ПО, даже если эти компоненты находятся глубоко в системе Windows.
Проект NtWARden:
сканирует процессы, службы, сеть, внутренние механизмы ядра;
обнаруживает скрытые вредоносы;
убивает майнеры и трояны;
показывает реальную картину нагрузки на процессор;
помогает контролировать, что находится в системе прямо сейчас: службы, сетевые соединения, скрытые процессы;
может подключиться к другому ПК и также отслеживать его процессы.
«1С-Коннект» обновил мессенджер, видеозвонки и заявки
В «1С-Коннекте» обновили функциональные возможности для коммуникаций, удаленной поддержки и работы с обращениями. Изменения затронули мессенджер, видеозвонки, файловый менеджер, удаленное подключение и заявки на обслуживание.
Раздел удаленного подключения по коду теперь доступен в приложении для компьютера всем пользователям сервиса. В работе с файлами появилась загрузка через drag-and-drop и сочетания Ctrl + C / Ctrl + V. Файловый менеджер также доработан: увеличена площадь рабочих зон, изменена геометрия окна, а путь к файлам сохраняется при повторном открытии.
В мессенджере появились реакции на сообщения, закрепление чатов и сообщений, расширенные настройки сортировки и фильтрации списков. В групповых чатах теперь можно назначать нескольких администраторов. Также обновлено представление контактов.
В видеозвонках улучшено управление микрофоном и добавлен полноэкранный режим при демонстрации экрана. В заявках на обслуживание пользователи могут отдельно настроить уведомления об изменениях заявки и переписке в комментариях.
Кроме того, усилены языковые модели в составе GPT-Ассистента и ИИ-сервисов.
Новые тарифы сервиса начнут действовать с 1 августа 2026 года. Подробнее — по ссылке
Как на собственных серверах настроить систему сбора и хранения данных с датчиков и снизить нагрузку на команду эксплуатации
Собрать данные с датчиков — это полбеды. Главная боль — заставить Kafka, PostgreSQL и ClickHouse стабильно работать в приватном облаке без выгорания команды на Day-2-операциях и ручном масштабировании stateful-сервисов.
На вебинаре покажем, как на Deckhouse Kubernetes Platform (DKP) и managed-сервисах упаковать IoT-сценарии и аналитический контур в единую платформу, чтобы снизить стоимость эксплуатации и уйти от DIY-подхода к data-инфраструктуре.
Разберём схему event-driven-платформы и разделение операционного и аналитического контуров.
Покажем live-demo: ingest событий с датчиков, потоковая обработка и вывод в дашборды.
Проверим, как паттерны из умного дома масштабируются до промышленного IoT на DKP.
Разберём жизненный цикл data-сервисов (backup, scaling, observability) и то, сколько времени занимает их обслуживание.
Бонусы: промокод на все курсы Deckhouse Академии.
Будет полезно DevOps и SRE-инженерам, инфраструктурным и платформенным командам, enterprise-архитекторам и всем, кто строит IoT- и data-платформы в private cloud или on-prem.
Спикер — Дмитрий Гайворонский, менеджер по развитию направления Deckhouse Data Orchestration.
Представлен открытый проект Ghostprovider — терминальный инструмент для быстрого запуска GitHub‑проектов у себя на localhost.
Принцип работы проекта: предоставляется ссылка на репозиторий, а инструмент сам анализирует проект: ищет Dockerfile, docker‑compose, package.json, requirements.txt, Go/Rust/Python/Node‑признаки, определяет тип приложения и пытается развернуть его в Docker. После запуска показывает локальный URL, контейнеры, логи и дает управлять сервисами прямо из TUI: старт, стоп, рестарт, удаление. По сути это автоматизированная оболочка над git clone, docker build, docker run и docker compose up, только с автоанализом проекта и удобным интерфейсом в терминале.
Важно: инструмент реально запускает код из чужих репозиториев, поэтому случайные проекты лучше гонять в VM/песочнице и внимательно смотреть Dockerfile/docker‑compose перед запуском. Сам Ghostprovider выглядит прозрачным, но риск всегда в том, что именно вы через него запускаете.
Искусственный интеллект перестал быть экспериментом — сегодня от него ждут конкретных результатов. При этом эффективность ИИ-инициатив ограничена возможностями инфраструктуры.
Мы упаковали наш опыт работы с десятками компаний из госсектора, финансов, ритейла, промышленности, НГХ и создали Сезон ИИ-инфры: пройдите весь путь к ИИ — от первичной оценки готовности инфраструктуры до конкретных решений и рекомендаций экспертов, которые внедряют ИИ в продакшн.
Что почитать по инфраструктуре: Docker, K8s, сети и защита серверов
Собрали свежие статьи из нашего блога — те, что легко затерялись в ленте, но которые стоит дочитать до конца. Если на неделе было не до Хабра, вот короткий дайджест с самым полезным.
Ваш docker-compose.yml сломается: 5 настроек, которые все забывают Локально всё крутится, на сервере неделю тоже — а потом Postgres съедает всю память, OOM-киллер убивает соседний сервис, а логи забивают диск. Всё лечится парой строк в compose-файле, но про них забывают: на машине разработчика они просто не проявляются. Разбираем пять настроек, без которых compose не доживёт до второй недели на проде.
Прощай, Fail2Ban: усиливаем защиту Netbird и Caddy с CrowdSec Fail2Ban десять лет был золотым стандартом, но он реактивен: чтобы он сработал, атакующему сначала нужно постучаться в ваш SSH пять раз. А что, если блокировать вредоносные IP ещё до того, как их трафик дойдёт до сервера? История о переходе на CrowdSec с пошаговыми примерами кода — и о том, как «шум» от атак упал на 99%.
Разбираемся с форвардингом IP-пакетов в сетевых уровнях L2 и L3 Чем коммутатор отличается от маршрутизатора, зачем нужен TTL, как устроена CAM-таблица и почему без ARP ваш пакет никогда не доедет до получателя. Спокойный разбор основ, который наводит порядок в голове — для тех, кто хочет наконец перестать путать L2 и L3.
Self-service деплой: как перестать ждать DevOps и ускорить команду Знакомая картина: разработчик полчаса висит в Slack, ожидая, пока кто-то накатит сборку на стенд. С ростом команды DevOps-инженер становится единственным шлюзом между кодом и продакшеном — и это горлышко съедает до 30% времени. Tech Lead рассказывает, как self-service платформа убирает узкое место, с кейсами Monzo и Spotify.
Kubernetes: архитектура и абстракции — полный гайд K8s называют стандартом, но понимание его механик встречается редко. Control Plane и Worker Nodes, Pod, Service, Deployment, Namespace — «прожиточный минимум» абстракций, без которых нельзя выходить в прод. Плюс отрезвляющая история о том, как Tinder год переезжал на кластер из 1000 узлов и что у них при этом ломалось.
От capabilities к AppArmor: что реально остановит атакующего в контейнере Уязвимость в веб-приложении, злоумышленник уже выполняет команды внутри контейнера — что именно его остановит? На одной и той же рабочей нагрузке показано, как последовательно срабатывают три слоя защиты: capabilities, seccomp и AppArmor. Где каждый помогает, где бессилен и почему работать они должны только вместе.
Хотите системно закрыть пробелы по инфраструктуре? Собрали большой дайджест по Linux, Docker, Kubernetes, CI/CD и сетевой безопасности: бесплатные уроки, практические гайды и курсы — всё в одном месте.
Как я в Zabbix мониторю аккаунт в REG.RU: баланс, неоплаченные счета и сроки всех услуг - через API reg.ru
Домен можно сторожить по WHOIS: взял имя, посмотрел дату, повесил триггер «истекает через 30 дней». Но WHOIS видит ровно один домен и ничего вокруг. Он не знает, что на счёте кончились деньги, что висит неоплаченный счёт, из-за которого услугу снимут раньше срока, что в том же аккаунте ещё десяток доменов, SSL и хостинг. Поэтому я опрашиваю не WHOIS, а биллинговый API самого регистратора - он отдаёт весь аккаунт целиком. Собрал из этого шаблон под Zabbix 7.0, MIT. Расскажу, как он устроен и что в нём, на мой взгляд, сделано правильно.
Архитектура Три HTTP-айтема ходят в api.reg.ru - список услуг, неоплаченные счета и баланс - и складывают сырой JSON. Дальше всё считается из него: dependent items тянут баланс, сумму и число счетов через JSONPath, а LLD разворачивает прототипы под каждую услугу (ненужные типы отсекаются макросом-регуляркой). Каждая цепочка начинается с error_handler - битый или пустой ответ API не роняет айтем, а подставляет безопасное значение. На весь аккаунт получается несколько запросов в час, а не отдельная проверка на каждую услугу.
Что считаю правильным дизайном - две цепочки зависимостей Первое - nodata. Когда API регистратора отваливается целиком, каждый триггер «нет данных» (услуги, счета, баланс) хочет сработать сам, и ты получаешь пачку алертов про одну причину. Я завязал nodata услуг и счетов на корневой «No data from balance API». Полный отвал API теперь - один алерт, а не три. Корень я специально оставил без зависимостей, чтобы случайно не завязали и его, - об этом есть комментарий прямо в шаблоне.
Второе - сроки. На каждую услугу не один триггер, а каскад: ИСТЕКЛА (Disaster) → ≤7 дней (High) → ≤14 (Warning) → ≤30 (Info). Каждый уровень зависит от более тяжёлого. Поэтому услуга, которой осталось три дня, даёт один алерт High - а не три штуки (Info, Warning, High) одновременно. По мере приближения срока ты видишь ровно один триггер нужной серьёзности.
Для работы API, необходимо прописать разершенные IP в кабинете https://www.reg.ru/user/account/settings/api/, в настройках API задать адьтернативный пароль, и сохранить в макрос хоста {$RR_PASSWORD} как Secret. Логин - {$RR_USERNAME}. Для рег.облако взять API в https://cloud.reg.ru/panel/settings и сохранить в {$RRC_API_KEY}
Итог Баланс, неоплаченные счета и сроки всех услуг - под алертами в одном дашборде, без отдельного демона-прослойки. В репозитории два шаблона: разобранный выше под api.reg.ru (домены, хостинг, SSL) и отдельный под облачный api.cloudvps.reg.ru - там к балансу и срокам добавлен мониторинг самих VPS: реглеты, снапшоты, сети. Шаблоны, README и changelog - GitHub, PR и issues welcome.
А чем вы следите за биллингом у провайдеров и регистраторов - дёргаете API, или живёте на письмах «ваша услуга истекает»?