Проекты, стеки и серверы
В Наблюдателе три основных понятия: проект, стек и сервер. От того, как вы разложите по ним свои окружения, зависит, кто получает уведомления, какие графики лежат рядом и что видно на карте проекта. В этой статье — что значит каждое понятие, как устроить мониторинг для частых случаев и что создать под конкретную задачу.
Коротко
- Проект — то, что вы мониторите целиком: продукт, клиент или команда. В проекте задаются участники, каналы уведомлений и правила.
- Стек — одно окружение приложения внутри проекта: 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-сервер.
Что дальше
- Быстрый старт — создать первый проект и стек.
- Карта проекта — увидеть всю систему и слепые зоны.
- Участники проекта — пригласить команду и выдать роли.
Первый сервер или стек подключается за пару минут. Бесплатно в раннем доступе.
Нашли неточность или не хватает ответа? Напишите в поддержку