---
title: "Аналитика и выгрузки"
id: "1311"
type: "page"
slug: "analytics"
published_at: "2026-08-15T21:48:58+00:00"
modified_at: "2026-11-06T09:29:17+00:00"
url: "https://pastukhov.com/agents/multiagent/docs/analytics/"
markdown_url: "https://pastukhov.com/agents/multiagent/docs/analytics.md"
excerpt: "Отчёт аналитики никуда не делся — но отдельного экрана «Аналитика» в Мультиагенте больше нет. Его…"
---

# Аналитика и выгрузки

[https://pastukhov.com/agents/multiagent/docs/analytics/.md](https://pastukhov.com/agents/multiagent/docs/analytics/.md)

Отчёт аналитики никуда не делся — но отдельного экрана «Аналитика» в Мультиагенте больше нет. Его содержимое переехало туда, где им пользуются каждый день: на экраны «Токены», «Стоимость», «Скорость» и «Чаты» в разделе «Менеджмент» (подробнее — на странице [Токены, стоимость и скорость](/agents/multiagent/docs/tokens)
). Сам отчёт остался общим источником данных: из него берут числа значок в шапке, таблицы чатов и все машинные адреса, о которых эта страница.

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

## Метрики для Prometheus

Те же цифры, что на экранах, отдаются по адресу `/metrics` в формате, который понимает Prometheus и совместимые с ним системы. Ответ собирается из той же копии данных, что читают экраны, поэтому расхождений между панелью и внешними рядами нет; историю копит сам сборщик — Мультиагент ничего не считает постоянно.

- графики — стоимость, токены по видам, модели, сообщения, промпты, коммиты, часы суток и дни недели, распределения и итоги за всё время;
- живое состояние — работает ли агент, сколько чатов идёт, сколько агентов на каждом сервере и во флоте;
- подписи у каждого ряда — агент, его номер, сервер (фабрика) и флот; у флотов — отдельные ряды-сводки по тем же цифрам.

Адрес молчит, пока не заданы обе переменные окружения — `MULTIAGENT_METRICS_USERNAME` и `MULTIAGENT_METRICS_PASSWORD`: без них ответ — «не найдено», с неверной парой — отказ со стандартным запросом пароля. Пароль можно задать и отпечатком (SHA-256), а не открытым текстом. Переменные читаются на каждом запросе, так что включить или выключить сбор можно без перезапуска, и вход в панель для сбора не нужен — это отдельная пара.

Две настройки меняют форму данных: `MULTIAGENT_METRICS_GRANULARITY` — шаг точки (по умолчанию `daily`, ещё `hourly`, `weekly`, `monthly`) и `MULTIAGENT_METRICS_LOOKBACK_DAYS` — глубина истории в днях (по умолчанию 30). Границы суток считаются по часовому поясу системы, поэтому цифры совпадают с экранами.

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

```
scrape_configs:
  - job_name: multiagent
    scrape_interval: 60s
    basic_auth:
      username: prometheus
      password: <пароль из переменной>
    static_configs:
      - targets: ["multiagent:8080"]
    metrics_path: /metrics
```

Настраивать вручную ничего не нужно, если поставить на фабрику службу **Prometheus** из библиотеки инструментов: она сама получает адрес и учётные данные приложения этой фабрики и собирает его метрики — подробнее на странице [Инструменты](/agents/multiagent/docs/tools)
.

## GraphQL: тот же отчёт для своих приложений

Второй машинный адрес — `/graphql`. Он отдаёт тот же отчёт аналитики, что и экраны, но в виде структурированных данных: сводка, разбивка расходов, счётчики работы, все графики по времени, разрезы по модели, агенту и фабрике, профили по часам и дням недели, распределения и строки недавних чатов. Ответы считаются тем же кодом, что и на экранах, поэтому цифры совпадают по определению.

- только чтение: в схеме нет ни одной операции, которая что-то меняет;
- самоописание: схему можно получить запросом или файлом `/graphql/schema` — внешняя программа соберёт запрос сама;
- условия отчёта: один агент, метки, флот, период и шаг времени; по умолчанию удалённые на агенте чаты не попадают в ответ;
- не только отчёт: отдельными полями доступны флоты, фабрики и агенты со своей аналитикой, а также сводка для значка в шапке;
- большие числа не теряются: токены и другие крупные счётчики передаются без потери точности.

Доступ тоже отдельный: пока не заданы `MULTIAGENT_GRAPHQL_USERNAME` и `MULTIAGENT_GRAPHQL_PASSWORD`, адрес отвечает «не найдено»; без верной пары — отказ со стандартным запросом пароля. Пароль принимается и отпечатком SHA-256, и открытым текстом, а меняется без перезапуска.

```
curl -u portal:<пароль> -X POST https://multiagent.example.com/graphql \
  -H 'Content-Type: application/json' \
  -d '{"query":"{ analytics(filter:{granularity: DAILY}) { overview { totalCost totalOutputTokens } } }"}'
```

## Архив в ClickHouse

Опционально Мультиагент ведёт долговременный архив аналитики в ClickHouse — на случай, когда нужна история глубже года. Для этого задайте переменную окружения `MULTIAGENT_CLICKHOUSE_URL` — база и таблица `chat_analytics` создадутся автоматически. После этого раз в минуту статистика копии чатов (снимки, обновлённые с прошлой загрузки) дописывается в архив, так что историю можно анализировать внешними инструментами.

Кнопка **«Дозагрузить статистику в ClickHouse»** появляется, только когда архив настроен, и загружает всё, чего в нём не хватает (например, после долгого простоя).

ClickHouse — необязательное дополнение к базе, а не её замена: экраны по-прежнему считают по локальным таблицам, поэтому недоступность архива некритична и ничего не ломает.

Балансы и квоты LLM-аккаунтов анализируются отдельно — см. [Аккаунты](/agents/multiagent/docs/accounts)
.

[← Оглавление документации](/agents/multiagent/docs)
