Как заменить пять утилит мониторинга одним бинарником на Go

16 авг 2026
447
21
2
3 недели

maintenant hero

Если вы когда-нибудь поднимали собственный сервер для пет-проектов или небольшого продакшена, вы наверняка сталкивались с зоопарком утилит. Для проверки доступности сайтов ставят Uptime Kuma. Чтобы смотреть логи и статус контейнеров, запускают Dozzle или Portainer. За сроками жизни TLS-сертификатов следит отдельный скрипт, а для мониторинга фоновых cron-задач прикручивают внешний сервис. В итоге на сервер накатывается пачка разрозненных дашбордов, которые в сумме потребляют больше ресурсов, чем сами полезные сервисы.

Французский разработчик Бенжамен Тушар (kOlapsis) решил эту проблему радикально и выложил проект maintenant. Это легковесный инструмент мониторинга, упакованный в один бинарный файл, который заменяет сразу всю цепочку сервисов наблюдения.

Что умеет проект

Основная идея maintenant проста: один контейнер запускается рядом с вашим стеком и сразу начинает собирать метрики без ручной настройки.

Dashboard

Реклама

Программа подключается к сокету Docker или API Kubernetes и автоматически находит все запущенные контейнеры. Она группирует сервисы по проектам Docker Compose, отслеживает циклы перезапусков (restart loops), статус healthcheck и транслирует логи в реальном времени.

Containers

Endpoints

Конфигурация проверок вынесена прямо в лейблы контейнеров. Чтобы отслеживать HTTP или TCP эндпоинт, не нужно открывать интерфейс и заполнять формы. Достаточно прописать параметры в docker-compose.yml:

labels:
  maintenant.endpoint.http: "https://api:3000/health"
  maintenant.endpoint.interval: "15s"
  maintenant.endpoint.failure-threshold: "3"

Когда контейнер стартует, сервис сразу подхватывает настройки, начинает строить графики времени ответа и сохраняет историю доступности.

Certificates

Updates

Вот еще несколько полезных функций, упакованных в этот инструмент:

  • Мониторинг сертификатов. Сервис проверяет цепочки TLS и шлет алерты за 30, 14, 7, 3 и 1 день до истечения срока действия.
  • Контроль фоновых задач. Вы получаете уникальный URL для cron-скрипта, добавляете вызов через curl в конец скрипта, и система отслеживает время выполнения, коды возврата и пропущенные дедлайны.
  • Анализ безопасности сети. Утилита находит опасные конфигурации: биндинг портов на 0.0.0.0, открытые наружу базы данных, работу в режиме host network или запуск в привилегированном режиме.
  • Проверка обновлений образов. Программа опрашивает OCI-реестры, сравнивает дайджесты и формирует готовые команды для обновления и отката с учетом Compose-проектов.
  • Публичная страница статуса. Встроенная страница с поддержкой Server-Sent Events показывает текущее состояние компонентов в реальном времени.

Status Page OK

Status Page Degraded

Необычная деталь: в maintenant встроен сервер протокола Model Context Protocol (MCP). Это значит, что вы можете подключить к мониторингу AI-ассистента вроде Claude, чтобы запрашивать логи, статус контейнеров и текущие алерты на естественном языке.

Как устроен стек

Архитектура maintenant понравится тем, кто устал от тяжелых стеков с Prometheus и Grafana. Весь бэкенд написан на Go, а фронтенд на Vue 3 и Tailwind CSS вшит внутрь бинарника через embed.FS.

В качестве базы данных используется обычный SQLite в режиме WAL. Никаких внешних баз вроде Postgres или Redis поднимать не нужно. Потребление оперативной памяти держится в районе 17 мегабайт, поэтому инструмент спокойно работает на копеечных VPS или Raspberry Pi.

Интерфейс не опрашивает сервер постоянным поллингом. Все обновления приходят через Server-Sent Events (SSE).

У проекта нет встроенной системы пользователей и паролей. Разработчик сделал это намеренно: предполагается, что вы закроете панель через обратный прокси (Traefik, Nginx или Caddy) со связкой Authelia, Authentik или базовой авторизацией. При этом ручки для вебхуков и публичная страница статуса могут оставаться открытыми наружу.

Быстрый запуск

Развернуть мониторинг можно за полминуты через Docker Compose:

services:
  maintenant:
    image: ghcr.io/kolapsis/maintenant:latest
    ports:
      - "8080:8080"
    read_only: true
    security_opt:
      - no-new-privileges:true
    tmpfs:
      - /tmp:noexec,nosuid,size=64m
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /proc:/host/proc:ro
      - maintenant-data:/data
    environment:
      MAINTENANT_ADDR: "0.0.0.0:8080"
      MAINTENANT_DB: "/data/maintenant.db"
    restart: unless-stopped

volumes:
  maintenant-data:

Контейнер работает от непривилегированного пользователя nobody. Скрипт инициализации сам определяет группу сокета /var/run/docker.sock на хосте и подключается к нему в режиме чтения. Никаких правок внутри ваших контейнеров программа не делает.

Модели лицензирования

Базовая версия (Community Edition) распространяется под лицензией AGPL-3.0. Она бесплатна и покрывает нужды одного сервера: автопоиск контейнеров, метрики, проверки до 10 эндпоинтов, до 5 сертификатов и cron-задач, алерты в Discord и через вебхуки.

Security Posture

Для тех, кому нужны агенты на нескольких машинах (до 20 хостов через gRPC-стримы), неограниченное число проверок и сканирование CVE, автор предлагает пожизненную лицензию Personal за разовую оплату. Для команд есть подписка Pro с интеграцией Slack, Teams и цепочками эскалации алертов.

Кому проект пригодится

Maintenant отлично закрывает нишу, где тяжелый стек мониторинга избыточен, а настраивать связку из трех отдельных сервисов лень.

Если вы держите домашний сервер, пару VPS с микросервисами или управляете инфраструктурой небольшого стартапа, проект сэкономит кучу времени. Достаточно прописать пару строк в Compose-файлах, и вся базовая наблюдаемость уже работает. Исходники открыты на GitHub, так что протестировать инструмент на своих контейнерах можно прямо сейчас.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.