До основного вмісту

Моніторинг AI-агентів на VDS: Langfuse та метрики

AI-агенти на VDS · 19.04.2026 · 4 хв читання
Ілюстрація до статті «Моніторинг AI-агентів на VDS: Langfuse та метрики»

AI-агенти в продакшені потребують моніторингу: скільки токенів витрачається, як довго відповідає модель, які запити викликають помилки, наскільки коректні відповіді. Без моніторингу ви не знаєте про проблеми до скарг користувачів.

Langfuse — open-source AI observability

>docker run -d --name langfuse \
  -p 3000:3000 \
  -e DATABASE_URL=postgresql://postgres:password@host:5432/langfuse \
  -e NEXTAUTH_SECRET=random-secret \
  --restart always \
  langfuse/langfuse:latest

Інтеграція з LangChain

from langfuse.callback import CallbackHandler
from langchain_ollama import OllamaLLM

handler = CallbackHandler(
    public_key="pk-...",
    secret_key="sk-...",
    host="http://localhost:3000"
)
llm = OllamaLLM(model="llama3.2", callbacks=[handler])
result = llm.invoke("Тестовий запит")

Ключові метрики для AI-агентів

МетрикаЩо вимірюєЦіль
LatencyЧас відповіді< 5 сек
Token usageВитрата токенівОптимізація вартості
Error rateВідсоток помилок< 1%
User feedbackОцінка відповідейПокращення якості

Системні метрики через Prometheus

# prometheus.yml
scrape_configs:
  - job_name: "ollama"
    static_configs:
      - targets: ["localhost:11434"]
    metrics_path: "/metrics"
Порада: Логуйте всі запити та відповіді в перші тижні роботи — це допоможе знайти патерни проблемних запитів і покращити системні промпти.

Часті помилки під час налаштування

Langfuse не стартує через базу даних

Error: P1001: Can't reach database server at `host`:5432

Langfuse вимагає окремо піднятий PostgreSQL і не піднімає його сам усередині образу. Перевірте, що змінна DATABASE_URL вказує на реально доступний хост і порт, а сама база створена заздалегідь — контейнер лише застосовує міграції, але не створює сервер СУБД.

Трейси з LangChain не зʼявляються в інтерфейсі

Часта причина — callback-обробник Langfuse не передано у виклик моделі, а лише створено в коді. Переконайтеся, що обʼєкт handler явно вказано в параметрі callbacks при кожному виклику ланцюжка, а не лише при ініціалізації LLM.

Дашборд Prometheus показує порожні графіки по Ollama

up{job="ollama"} == 0

Метрика up дорівнює нулю, коли Prometheus не може достукатися до ендпоінта скрейпінгу. Перевірте, що порт Ollama доступний з машини, де крутиться Prometheus, і що шлях /metrics дійсно віддає дані, а не 404 — частина версій Ollama вимагає окремого увімкнення експорту метрик.

Langfuse формує неправильні посилання за reverse proxy

Warning: NEXTAUTH_URL is not set, using fallback

Без явно заданого NEXTAUTH_URL, що вказує на реальну публічну адресу за Nginx, сервіс може генерувати redirect-посилання на внутрішню адресу контейнера. Задайте цю змінну оточення рівною зовнішньому HTTPS-домену перед першим запуском. Перевірити це найпростіше, спробувавши відкрити сторінку входу через публічну адресу і переконавшись, що після логіну браузер не перекидає на внутрішній порт контейнера.

Варіанти AI observability

Вибір інструмента залежить від того, що саме потрібно спостерігати: вміст LLM-викликів, системні метрики сервера чи обидва відразу.

ІнструментФокусSelf-hosted
LangfuseТрейсинг LLM-викликів і промптівТак
Prometheus + GrafanaСистемні та кастомні метрикиТак
Хмарні SaaS-платформи observabilityТрейсинг і аналітика без власної інфраструктуриНі
Просте логування у файлБазове налагодження на старті проєктуТак

Коли такий моніторинг надлишковий

Повноцінний observability-стек виправданий не на кожному етапі проєкту — іноді він додає інфраструктуру без користі.

  • Прототип з поодинокими ручними запитами — трейсинг кожного виклику не дає корисних даних за такого обсягу
  • Команда з одного розробника без зовнішніх користувачів — вистачить звичайного логування у файл
  • Бюджет VDS не дозволяє тримати ще один сервіс з власною базою даних — Langfuse вимагає окремий PostgreSQL і помітний обсяг RAM
  • Потрібна лише перевірка аптайму сервісу, а не розбір вмісту відповідей — для цього достатньо простого healthcheck
  • Усі LLM-виклики вже логуються в наявну систему логування застосунку — дублювати її другим сервісом не завжди виправдано

Перевірка результату

Після налаштування варто переконатися, що дані дійсно доходять від виклику моделі до дашборда.

  1. Відкрийте інтерфейс Langfuse і переконайтеся, що тестовий виклик моделі зʼявився в списку трейсів
  2. Перевірте, що в трейсі видно промпт, відповідь і час виконання
  3. Відкрийте /metrics у Ollama напряму і переконайтеся, що ендпоінт віддає дані
  4. Перевірте в Prometheus, що таргет ollama перебуває в статусі UP
  5. Відкрийте Langfuse через публічний домен і переконайтеся, що редиректи не ведуть на внутрішню адресу контейнера
curl http://localhost:11434/metrics | head

За темою: агенти, які варто моніторити — що таке AI-агент, фреймворк з готовими callback'ами — LangChain на VDS.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці