Логи контейнеров онлайн

Логи Docker онлайн в Наблюдателе открываются прямо в браузере: не нужно заходить на сервер по SSH, вспоминать имя контейнера и запускать docker logs -f или kubectl logs -f. Откройте вкладку «Консоль» стека, выберите контейнер — и строки пойдут вживую, с подсветкой уровней и поиском.

Живые логи читает агент стека в тот момент, когда вы их открыли. Полные логи Наблюдатель не хранит: в облако постоянно уходят только распознанные ошибки и исключения. Ниже — где смотреть логи, как искать по ним и что делать, если поток не подключается.

Где смотреть логи Docker онлайн

Живые логи есть в трёх местах:

Где Что показывает при открытии Сколько строк держит на экране
Вкладка «Консоль» стека последние 300 строк выбранного контейнера, дальше — новые до 2000
Вкладка «Консоль» на странице контейнера последние 200 строк, дальше — новые до 1000
Страница инцидента контейнера последние 200 строк до 400

Вкладка «Консоль» стека удобна, когда нужно быстро переключаться между контейнерами: слева список с поиском «Поиск контейнера», справа — «Консоль: <имя контейнера>». Статус потока виден в углу: «live» — строки идут, «подключение...» — агент открывает поток, «недоступно» — подключиться не удалось.

Консоль работает и для Docker Compose, и для подов Kubernetes. Агент в Docker Compose показывает логи только контейнеров своего compose-проекта, в Kubernetes — подов своего namespace.

Как искать в логах

Над лентой — панель инструментов:

  • Фильтр по уровню: «Все», «Error», «Warn», «Info», «Debug», «Trace», «Other». Рядом с каждым — сколько таких строк сейчас на экране. Уровень распознаётся в обычных текстовых логах и в JSON-логах.
  • Поиск «Поиск в логах»: совпадения подсвечиваются, показан счётчик вида 3/12. Enter — к следующему совпадению, Shift+Enter — к предыдущему, Esc — очистить поиск. Ctrl+F (на Mac — Cmd+F) ставит курсор в поиск. Пока идёт поиск, лента не прыгает к новым строкам.
  • «Очистить» убирает накопленные строки с экрана. Поток при этом не останавливается — новые строки продолжат приходить.

Строки со стеком исключения выделяются фоном, время из строки лога выносится в отдельную колонку.

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

Живые метрики контейнера

На странице контейнера во вкладке «Метрики» период «Сейчас» включает живой поток от агента: CPU, память, сеть, диск и число процессов обновляются раз в секунду. Кнопка «Стоп» замораживает значения на экране, «Запустить» — подключается снова. Индикатор в шапке показывает «Live-метрики активны» или «Live на паузе».

Для подов Kubernetes живого потока нагрузки нет: кластер отдаёт потребление срезами раз в ~15 секунд, графики строятся по ним. История метрик контейнера за прошлые периоды хранится 30 дней — подробнее в статье Контейнеры и поды.

Живые метрики есть и у серверов — на странице сервера, см. мониторинг сервера.

Хранятся ли логи

Нет. Агент постоянно читает stdout и stderr контейнеров, но в Наблюдатель отправляет только распознанные ошибки и исключения — они собираются во вкладке «Ошибки» стека со стеком вызовов и счётчиком повторов. Как это работает и как писать логи, чтобы ошибки разбирались хорошо, — в статье Мониторинг ошибок.

Остальные строки видны только вживую, пока открыта консоль. Закрыли вкладку — поток остановился, на серверах Наблюдателя ничего не осталось.

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

Маскирование персональных данных

Персональные данные в живых логах скрывает сам агент — ещё на вашем сервере, до отправки в браузер. Нужен агент 0.9.0 или новее.

Что Пример Что видно в консоли
Пароли, токены, ключи API, Authorization, cookie password=…, Bearer eyJ… ***
Email ivan.petrov@mail.ru i***@m***.ru
Телефон, ИНН, СНИЛС +7 912 345-67-89 *********89
Номер карты 4111 1111 1111 1111 411111******1111
ФИО, паспорт — по имени поля first_name="Иван" И***
IP клиента — по имени поля client_ip=95.31.18.119 95.31.18.0/24

Поэтому найти строку лога по email или телефону нельзя — в консоли их нет. IP-адреса сервисов в тексте ошибок (dial tcp 10.0.0.8:5432) не маскируются: без них сбой не разобрать. Те же правила действуют для ошибок, трасс и событий — подробнее в статье Как работает агент.

Почему логи не подключаются

Если консоль пишет «недоступно» или «Нет live-логов. Контейнер может быть остановлен или недоступен агенту»:

  • Контейнер остановлен или удалён. У остановленного контейнера новых строк нет. Статус контейнера видно в карточке.
  • Агент не на связи. Живые логи идут через агента стека. Проверьте, что он запущен и в шапке стека кнопка «Агент» не красная. Как проверить подключение — в статьях про Docker Compose и Kubernetes.
  • Устаревший агент. Обновите его по инструкции Обновление агента.
  • Контейнер из другого compose-проекта. Агент видит только свой проект; для другого нужен свой стек.

Пока живой поток недоступен, на странице контейнера остаются последние сохранённые метрики.

Логи через ИИ-ассистента

ИИ-ассистент тоже умеет читать последние строки контейнера через подключённого агента и искать в них нужное — например, request id или trace id — среди последних 5000 строк. Достаточно спросить: «покажи последние ошибки в логах api в prod» или «найди в логах worker запрос с id 7f3a…».

Что дальше

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

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

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

Нашли неточность или не хватает ответа? Напишите на hello@nablserver.ru