Проекты, стеки и серверы

В Наблюдателе три основных понятия: проект, стек и сервер. От того, как вы разложите по ним свои окружения, зависит, кто получает уведомления, какие графики лежат рядом и что видно на карте проекта. В этой статье — что значит каждое понятие, как устроить мониторинг для частых случаев и что создать под конкретную задачу.

Коротко

  • Проект — то, что вы мониторите целиком: продукт, клиент или команда. В проекте задаются участники, каналы уведомлений и правила.
  • Стек — одно окружение приложения внутри проекта: production, staging, локальная машина. Это один Docker Compose или один namespace Kubernetes со своим агентом.
  • Сервер — машина целиком: процессор, память, диски, сеть. Сервер живёт отдельно от проектов и подключается к нужным.

Пример: проект «Интернет-магазин», в нём стеки prod и staging. У каждого стека указан сервер, на котором он работает, и оба сервера подключены к проекту.

Что такое проект

Проект объединяет всё, что относится к одному продукту, и задаёт общие правила:

  • Участники и роли. Владелец добавляет людей по email и назначает роль. «Просмотр» — видеть данные. «Редактор» — ещё и настраивать проект: стеки, проверки сайтов, уведомления. Добавлять и удалять участников может только владелец, и только тех, у кого уже есть аккаунт. Подробнее — Участники проекта.
  • Уведомления. Каналы (Telegram, MAX, почта) и правила («контейнер упал», «сайт недоступен», «диск заполнен») задаются на весь проект. Они действуют на все его стеки и серверы, а сообщения уходят в одни и те же каналы. В новом проекте основные правила создаются сразу.
  • Сводка. На странице проекта видно состояние всех его стеков, а «Карта проекта» показывает серверы, стеки и связи между ними — см. Карта проекта.

Настройки проекта открываются кнопкой «Управление». В них вкладки «Основные», «Уведомления», «Правила», «Серверы», а у владельца ещё «Участники».

Главное правило. Проект — это граница «кому и куда писать». Если события двух систем должны приходить разным людям или в разные чаты, это два проекта.

Что такое стек

Стек — место, где работает приложение. В нём собирается всё об этом окружении:

  • сервисы и контейнеры или поды: статусы, падения, перезапуски, нехватка памяти, CPU и память;
  • ошибки приложения из логов;
  • трассы запросов и медленные запросы к базе;
  • события и логи, которые приложение отправляет само, и свои метрики;
  • HTTP-проверки сайтов и API;
  • S3-хранилища: появляются ли бекапы.

У стека свой агент — небольшой контейнер рядом с приложением: в том же docker-compose.yml или в том же namespace Kubernetes. Он видит контейнеры своего окружения и принимает от приложения трассы, события и метрики.

Зачем делить на стеки, а не держать всё в одном:

  • Окружения не смешиваются. Ошибки, трассы и графики staging не путаются с production. У каждого стека свой статус и своя лента событий, а в уведомлении указано, из какого стека событие.
  • Один агент на окружение. Один compose-проект или namespace — один стек и один агент.

Правила уведомлений при этом общие для проекта. Сузить правило можно до сервиса, контейнера или сервера, но не до стека.

Стек можно завести и только ради проверок сайтов или S3: их выполняет сам Наблюдатель, без агента. Агента можно поставить позже.

Что такое сервер

Сервер — это машина, а не приложение. Его агент ставится прямо в систему как служба и следит за ресурсами: загрузкой процессора по ядрам и процессами, памятью и swap, дисками, сетью, нехваткой памяти на уровне системы.

  • Сервер принадлежит тому, кто его создал, и может быть подключён к нескольким проектам — например, общая машина, где работают два продукта. Подключить сервер к проекту может владелец проекта: «Управление» → «Серверы» → «Привязать».
  • Сервер в проекте попадает под правила уведомлений проекта: «диск заполнен», «память на исходе».
  • У стека можно указать, на каких серверах он работает. Это поле «Серверы» в настройках стека. Compose-стек обычно работает на одном сервере, стек Kubernetes — на узлах кластера. Тогда сбои стека связываются с машиной: контейнеры падают по OOM — видно память и swap сервера, ошибки записи — его диски. Если на машине стоит агент сервера и имя совпадает однозначно, Наблюдатель связывает стек с сервером сам: в ленте стека появляется событие «Стек связан с сервером», а у сервера в шапке стека — пометка «авто». Кнопка «Связать» остаётся для неоднозначных случаев. В проекте с редакторами сам связывается только сервер, уже подключённый к проекту, — новый сервер подключает владелец.

Стек и сервер дополняют друг друга

Агент стека видит контейнеры, но не диски и не процессы машины. Агент сервера видит машину и сетевые соединения контейнеров на ней, но не знает, какой контейнер к какому сервису относится. На одной машине можно поставить оба. Тогда Наблюдатель прослеживает цепочку целиком: «сервис падает ← база тормозит ← на сервере кончился диск», а на карте видны связи даже с сервисами без трассировки — базами и очередями (нужны агенты 0.14+). Подробнее — Мониторинг серверов.

Как разложить окружения: частые случаи

Ситуация Как сделать
Один продукт, production и staging один проект, стеки prod и staging
Уведомления staging не должны приходить в рабочий чат staging — отдельный проект, например «Магазин — тест», со своими каналами или без уведомлений
Отладка на своём ноутбуке отдельный проект «Магазин — локально», см. Локальная разработка
На одном сервере несколько docker-compose-проектов разных продуктов у каждого свой стек со своим агентом в своём проекте; у каждого стека указать этот сервер
Kubernetes, приложения в разных namespace стек на каждый namespace, который нужно видеть
Несколько клиентов у подрядчика или агентства проект на клиента: свои участники и свои каналы уведомлений
Нужно только знать, что сайт отвечает проект и стек с HTTP-проверкой, агент не нужен
Кончается место, тормозит машина сервер с агентом

Что создать под задачу

Вы хотите Что создать Где подробнее
Знать, что сайт или API упал или отвечает медленно HTTP-проверку в стеке HTTP-проверки
Видеть падения контейнеров, перезапуски, нехватку памяти стек с агентом Docker Compose, Kubernetes
Видеть ошибки приложения стек с агентом Ошибки приложений
Понять, почему медленно стек с агентом и трассировку Трассировка, Запросы к базе
Следить за очередями, задачами, бизнес-показателями стек с агентом и источник метрик Свои метрики
Искать по журналу запросов, входам, платежам стек с агентом и поток событий Потоки событий
Следить за дисками, памятью и процессором машины сервер с агентом Агент на сервере Linux
Проверять, что бекапы доходят до S3 S3-хранилище в стеке Бекапы в S3
Получать уведомления в Telegram, MAX или на почту каналы и правила проекта Каналы, Правила

Как устроить это через ИИ-ассистента

ИИ-ассистент знает эти правила и сам предложит, как разложить ваши окружения: опишите, что у вас есть («два docker-compose на одном сервере, production и staging, в рабочий чат — только production»). С ключом «Редактирование и удаление» он создаст проекты, стеки и серверы вместе с агентами и свяжет стеки с серверами. Подробнее — MCP-сервер.

Что дальше

Попробуйте Наблюдатель

Первый сервер или стек подключается за пару минут. Бесплатно в раннем доступе.

Создать аккаунт

Нашли неточность или не хватает ответа? Напишите в поддержку