hubris

Логи

Журнал запросов на странице /logs — колонки, фильтры, живой режим, детали запроса и экспорт в CSV.

Страница Логи — журнал каждого запроса, а не свод. Для графиков и рейтингов по периоду — Использование.

Как и везде в Hubris, здесь не хранится содержимое запросов — только метаданные (модель, токены, стоимость, статус). Карточка деталей запроса так прямо и говорит: «Мы храним только метаданные запроса. Сами сообщения, промпты и ответы модели не записываются и недоступны для просмотра.».

Колонки

КолонкаЧто в ней
ДатаВремя запроса по Москве
МодельЛого вендора + модель; значок рядом появляется, если запрос шёл через цепочку роутинга
ПриложениеКто вызвал — по имени/адресу, которые прислал клиент, либо канал (API/MCP)
Вход / ВыходТокены запроса и ответа
СтоимостьИтоговая цена в ₽; значок рядом — если часть входа пришла из кеша
СкоростьТокенов в секунду на генерации ответа
ПричинаИтог запроса одной категорией: готово, таймаут, нет средств, лимит запросов, ошибка запроса или ошибка модели
API-ключКаким ключом сделан запрос; пусто — если без ключа (сайт, чат)
СтатусHTTP-код ответа

Имя приложения в логах

В колонке «Приложение» Hubris показывает то, чем вы представились. Порядок такой:

  1. Заголовок X-Title — если он есть, в логах будет ровно его значение.
  2. Канал MCP — запросы через MCP-сервер подписываются сами.
  3. User-Agent — распознаём известные инструменты (Claude Code, n8n, Cline, LangChain и другие) и семейство клиента для остальных.

Отсюда практическое следствие: если вы ходите в API из своего кода или из универсальной HTTP-ноды конструктора, добавьте заголовок X-Title — иначе в логах окажется имя библиотеки, которой вы отправляли запрос (axios, httpx, Go), одинаковое у всех ваших сценариев.

curl https://api.hubris.pw/v1/chat/completions \
  -H "Authorization: Bearer sk-gw-..." \
  -H "X-Title: Бот отдела продаж" \
  -H "HTTP-Referer: https://example.com" \
  -H "Content-Type: application/json" \
  -d '{"model":"anthropic/claude-haiku-4.5","messages":[{"role":"user","content":"Привет"}]}'

X-Title — это имя в списке и в фильтре, HTTP-Referer — адрес, по которому в карточке запроса появится ссылка и значок сайта. Оба заголовка необязательны и содержат только то, что вы сами прислали: содержимое запроса в логи не попадает никогда.

Разным сценариям удобно давать разные имена — тогда фильтр по приложению показывает расход каждого по отдельности.

Период и живой режим

Пресеты: последние 15/30 минут, час, 3 часа, день, 2 дня, неделя, месяц, год — либо «Произвольный диапазон…» (до 365 дней, «С» не может быть позже «По»).

Для коротких пресетов (до часа включительно) доступен живой режим: таблица сама обновляется каждые 5 секунд, рядом с периодом — бейдж «Live» с обратным отсчётом. Он выключается сам при переключении на более длинный период и при уходе со вкладки браузера. Пока живой режим включён, бесконечная подгрузка строк ниже не работает — сначала выключите его.

Фильтр

Кнопка «Фильтр» открывает панель с категориями: Модель, Цепочка, API-ключ, Проект, Приложение, Модальность, Статус, Оплата (бесплатные / платные), Кеш (с кешем / без кеша). В каждой категории выбирается одно значение — это не мультивыбор и не режим «исключить», а быстрый способ сузить журнал до одного среза за раз. Активные фильтры показаны чипами под шапкой таблицы, каждый снимается кликом; при нескольких — кнопка «Сбросить всё».

Детали запроса

Клик по строке открывает карточку «Детали запроса»: полный ID модели, метрики (латентность, скорость, стоимость, разбивка токенов кольцевой диаграммой, стриминг да/нет, канал), таймлайн ответа, сведения о модели (контекст, модальность — и, если запрос шёл через цепочку роутинга, какие шаги были пропущены и почему), приложение и ключ, а также точная причина завершения ответа модели (например «Завершено» или «Лимит токенов» — это отдельное, более детальное поле, чем колонка «Причина» в таблице), а для неуспешных запросов — текст ошибки и HTTP-код. Внизу — сворачиваемый технический JSON записи с кнопкой копирования, а в футере — переход «Предыдущий» / «Следующий» по уже загруженным строкам.

Экспорт CSV

Кнопка «Экспорт» скачивает CSV за выбранный период. Учитываются период, а из фильтров — модель, ключ или проект, статус и приложение; фильтры «Цепочка», «Модальность», «Оплата» и «Кеш» на состав выгрузки не влияют, так что в файле может оказаться больше строк, чем видно в таблице с этими фильтрами. Строк больше 100 000 — сузьте период, выгрузка с таким объёмом не начнётся.

Бесконечная прокрутка

Строки подгружаются по 50 при прокрутке до конца списка. Смена периода или фильтра начинает список заново. Если ничего не нашлось: «Запросов не найдено. Попробуйте расширить период или сбросить фильтры.».

Что дальше

  • Использование — графики и рейтинги по периоду вместо построчного журнала.
  • Роутинг — что означает значок цепочки у модели и как отфильтровать журнал по цепочке.
  • Коды ошибок — расшифровка HTTP-статусов и кодов из колонки «Статус».

Обновлено: