Логи
Журнал запросов на странице /logs — колонки, строка «Итого», фильтры, живой режим, детали запроса и экспорт в CSV.
Страница Логи — журнал каждого запроса, а не свод. Для графиков и рейтингов по периоду — Использование.
Как и везде в Hubris, здесь не хранится содержимое запросов — только метаданные (модель, токены, стоимость, статус). Карточка деталей запроса так прямо и говорит: «Мы храним только метаданные запроса. Сами сообщения, промпты и ответы модели не записываются и недоступны для просмотра.».
Колонки

| Колонка | Что в ней |
|---|---|
| Дата | Время запроса по Москве |
| Модель | Лого вендора + модель; значок рядом появляется, если запрос шёл через цепочку роутинга |
| Приложение | Кто вызвал — по имени/адресу, которые прислал клиент, либо канал (API/MCP) |
| Вход / Выход | Токены запроса и ответа. Вход — весь промпт: новые токены вместе с прочитанными из кеша и записанными в кеш |
| Стоимость | Итоговая цена в ₽; значок рядом — если в запросе участвовал кеш, в подсказке вход разложен на новые токены, из кеша и записанные в кеш |
| Скорость | Токенов в секунду на генерации ответа |
| Причина | Итог запроса одной категорией: готово, таймаут, нет средств, лимит запросов, ошибка запроса или ошибка модели |
| API-ключ | Каким ключом сделан запрос; пусто — если без ключа (сайт, чат) |
| Статус | HTTP-код ответа |
Строка «Итого»
Внизу таблицы закреплена строка «Итого»: число запросов, из них с ошибкой, вход, выход, всего токенов и стоимость. Считается весь выбранный период с фильтрами, а не только подгруженные строки, поэтому числа не меняются от прокрутки и совпадают с суммами столбцов в выгрузке CSV. Наведите на сумму «Входа» — она разложится на новые токены, из кеша и записанные в кеш. В живом режиме «Итого» обновляется вместе со списком.
На телефоне таблица показана карточками: модель и цена, дата, приложение и ключ со статусом, вход, выход и скорость. Список прокручивается вместе со страницей, «Итого» прибито к низу экрана, нажатие на карточку открывает детали запроса.
Имя приложения в логах
В колонке «Приложение» Hubris показывает то, чем вы представились. Порядок такой:
- Заголовок
X-Title— если он есть, в логах будет ровно его значение. - Канал MCP — запросы через MCP-сервер подписываются сами.
User-Agent— распознаём известные инструменты (Claude Code, n8n, Cline, LangChain и другие) и семейство клиента для остальных.
Отсюда практическое следствие: если вы ходите в API из своего кода или из универсальной HTTP-ноды конструктора, добавьте заголовок X-Title — иначе в логах окажется имя библиотеки, которой вы отправляли запрос (axios, httpx, Go), одинаковое у всех ваших сценариев.
curl https://api.hubris2.ru/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 — сузьте период, выгрузка с таким объёмом не начнётся.
Одна строка файла — один запрос. Колонки по порядку:
| Колонка | Что в ней |
|---|---|
created_at | Время запроса в UTC |
model_id | Модель |
client_app, client_url | Приложение, из которого пришёл запрос, и его сайт |
api_key_prefix, api_key_name | Ключ; пусто, если запрос без ключа (чат, студии) |
prompt_tokens | Новые токены входа, без кеша |
completion_tokens | Токены ответа, вместе с рассуждениями |
cost_rub | Списано за запрос, ₽ |
latency_ms | Время ответа, мс |
stream | Стриминг: true или false |
status | Итог запроса: success — готово, client_error — ошибка запроса, upstream_error — ошибка модели, timeout, insufficient_balance — нет средств, rate_limit_blocked — лимит запросов |
cache_read_tokens | Токены входа, прочитанные из кеша |
cache_write_tokens | Токены входа, записанные в кеш |
input_tokens_total | Весь вход: новые + из кеша + запись в кеш. Это число стоит во «Входе» колонки «Вход / Выход» |
Чтобы посчитать весь расход токенов, складывайте input_tokens_total и completion_tokens: у агентов почти весь вход берётся из кеша, и prompt_tokens у них в разы меньше входа.
Бесконечная прокрутка
Строки подгружаются по 50 при прокрутке до конца списка. Смена периода или фильтра начинает список заново. Если ничего не нашлось: «Запросов не найдено. Попробуйте расширить период или сбросить фильтры.».
Что дальше
- Использование — графики и рейтинги по периоду вместо построчного журнала.
- Роутинг — что означает значок цепочки у модели и как отфильтровать журнал по цепочке.
- Коды ошибок — расшифровка HTTP-статусов и кодов из колонки «Статус».
Обновлено:
