Логи
Журнал запросов на странице /logs — колонки, фильтры, живой режим, детали запроса и экспорт в CSV.
Страница Логи — журнал каждого запроса, а не свод. Для графиков и рейтингов по периоду — Использование.
Как и везде в Hubris, здесь не хранится содержимое запросов — только метаданные (модель, токены, стоимость, статус). Карточка деталей запроса так прямо и говорит: «Мы храним только метаданные запроса. Сами сообщения, промпты и ответы модели не записываются и недоступны для просмотра.».
Колонки
| Колонка | Что в ней |
|---|---|
| Дата | Время запроса по Москве |
| Модель | Лого вендора + модель; значок рядом появляется, если запрос шёл через цепочку роутинга |
| Приложение | Кто вызвал — по имени/адресу, которые прислал клиент, либо канал (API/MCP) |
| Вход / Выход | Токены запроса и ответа |
| Стоимость | Итоговая цена в ₽; значок рядом — если часть входа пришла из кеша |
| Скорость | Токенов в секунду на генерации ответа |
| Причина | Итог запроса одной категорией: готово, таймаут, нет средств, лимит запросов, ошибка запроса или ошибка модели |
| API-ключ | Каким ключом сделан запрос; пусто — если без ключа (сайт, чат) |
| Статус | HTTP-код ответа |
Имя приложения в логах
В колонке «Приложение» Hubris показывает то, чем вы представились. Порядок такой:
- Заголовок
X-Title— если он есть, в логах будет ровно его значение. - Канал MCP — запросы через MCP-сервер подписываются сами.
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-статусов и кодов из колонки «Статус».
Обновлено: