Наблюдаемость систем LLM: метрики, трассировки, журналы и тестирование в production

Стратегия сквозной наблюдаемости для LLM-инференса и приложений на основе LLM

Содержимое страницы

Системы LLM (больших языковых моделей) выходят из строя способами, которые невозможно выявить с помощью традиционного мониторинга API: очереди заполняются незаметно, память GPU насыщается задолго до того, как CPU начинает выглядеть загруженным, а задержки растут на уровне пакетной обработки, а не на уровне приложения.

Это руководство описывает сквозную стратегию наблюдаемости для инференса LLM и приложений LLM: что измерять, как внедрять инструментацию с помощью Prometheus, OpenTelemetry и Grafana, а также как развертывать конвейер телеметрии в масштабе.

Полные стеки ассистентов добавляют извлечение данных, вызовы инструментов и маршрутизацию поверх сырого инференса; Архитектура AI-ассистентов показывает, куда встраивается наблюдаемость среди этих слоев.

observability monitoring dashboard happy user

TL;DR (Исполнительное резюме)

Системы LLM деградируют способами, которые классический мониторинг «HTTP-латентность + уровень ошибок» не может объяснить. Системы Наблюдаемости для LLM производственного уровня должны быстро и обоснованно отвечать на следующие вопросы:

  • Ухудшается ли пользовательский опыт (хвостовая латентность, время до первого токена, латентность между токенами, ошибки и прерывания).
  • Где тратится время (очерwaiting vs пакетная обработка vs выполнение модели; извлечение/инструменты/фильтры безопасности vs инференс).
  • Что насыщается первым (утилизация GPU и давление на память, давление на KV-кэш/очередь, токенизация CPU).
  • Как дрейфуют затраты и емкость (токены на запрос, токены/сек на GPU, частота попаданий в кэш, потраченные впустую генерации).
  • Безопасно ли хранить телеметрию (промпты могут содержать PII; предотвращение утечки конфиденциальных данных в логи/атрибуты).

Наиболее устойчивая архитектура — это конвейер с множественными сигналами:

  • Метрики для быстрого обнаружения и планирования емкости (Prometheus + PromQL; опциональное долгосрочное хранение через Thanos/Cortex/Mimir/VictoriaMetrics).
  • Трассы для причинно-следственных связей на уровне запросов (OpenTelemetry с OTLP; бэкенды, такие как Tempo/Jaeger/Zipkin/Elastic APM).
  • Логи для контекста, коррелированные с трассами (Loki/Elastic/OpenSearch), разработанные для метаданных с низкой кардинальностью.
  • Профилирование для выявления узких мест CPU/памяти и хвостовой латентности (Grafana Pyroscope).
  • Синтетические и нагрузочные тесты для обнаружения регрессий до того, как это заметят пользователи (Grafana k6; зондирование в стиле blackbox).
  • SLO для измерения результатов для пользователей и обеспечения действующих алертов (бюджеты ошибок; стиль burn-rate).

Чем отличается наблюдаемость для систем LLM

Примечание по области применения: целевая фреймворк LLM в данном руководстве не указан. Примеры в этой статье охватывают распространенные серверы/фреймворки (Triton, vLLM, TGI, LangChain/LangSmith) и остаются применимыми к другим стекам путем замены эквивалентными метриками и спанами.

LLM вводят операционные поведения, отличающиеся от обычных веб-сервисов:

  • Переменная нагрузка на запрос: количество токенов (вход/выход) сильно варьируется, поэтому «запросы в секунду» могут выглядеть стабильными, в то время как пропускная способность токенов обваливается. TGI и vLLM явно экспортируют телеметрию, связанную с токенами и латентностью токенов, для поддержки такого стиля мониторинга.
  • Очереди и непрерывная пакетная обработка: пропускная способность зависит от дисциплин пакетирования/очередей; размер очереди и размер пакета становятся индикаторами первого класса (TGI экспонирует оба).
  • Потоковый UX: пользователей заботит TTFT (время до первого токена) и латентность между токенами не меньше, чем полное время ответа; OpenTelemetry даже стандартизирует метрики сервера TTFT/время-на-токен в рамках семантических соглашений GenAI.
  • Давление на GPU доминирует в режимах отказа: утилизация GPU и память GPU (включая используемую память) являются центральными для надежности; экспортер NVIDIA DCGM существует специально для экспозиции телеметрии GPU в эндпоинт Prometheus /metrics.
  • Многоэтапные конвейеры: извлечение, вызовы инструментов, фильтры безопасности и постобработка означают, что сквозная латентность является композицией нескольких спанов/очередей, что делает распределенную трассировку и тщательный дизайн метрикessential.

Конкретные примеры из популярных серверов инференса подчеркивают это:

  • NVIDIA Triton Inference Server экспонирует метрики как обычный текст через /metrics (обычно :8002/metrics) и предоставляет флаги для включения/отключения метрик и выбора порта метрик.
  • vLLM экспонирует обширный эндпоинт Prometheus /metrics с префиксом vllm:; его документация включает счетчики для сгенерированных токенов и гистограммы, такие как время до первого токена.
  • Hugging Face TGI документирует эндпоинт /metrics с размером очереди, размером пакета, продолжительностью сквозного запроса, сгенерированными токенами и продолжительностью ожидания в очереди.

Основные задачи наблюдаемости и необходимая телеметрия LLM

Наблюдаемость для систем LLM реализуется проще всего, когда вы маппите задачи → сигналы → инструменты, а затем ограничиваете кардинальность и сэмплирование с первого дня.

Метрики: Для систем онлайн-сервиса руководство по инструментации самого Prometheus выделяет количество запросов, ошибки и латентность как ключевые метрики; LLM расширяют это TTFT, пропускной способностью/латентностью на токен, длиной очереди, размером пакета и утилизацией GPU.

Трассы: Трассы — это способ атрибутировать латентность и сбои на этапах извлечения/инструментов/безопасности/инференса; OpenTelemetry рассматривает трассы/экспортеры как независимый от вендора способ эмиссии и отправки телеметрии в коллекторы или бэкенды.

Логи: Логи предоставляют человеко-читаемый контекст и «почему», но остаются usable в масштабе только если вы избегаете индексирования неограниченных значений (пример: Loki индексирует только лейблы и хранит сжатые чанки логов в объектном хранилище).

Профилирование: Непрерывное профилирование захватывает производственное поведение CPU/памяти с низким накладным сэмплированием; Grafana Pyroscope явно позиционируется для этого.

Синтетические тесты и нагрузочные тесты: Grafana k6 — это инструмент нагрузочного тестирования с открытым исходным кодом, и Grafana отмечает, что Синтетический Мониторинг работает на базе k6 и выходит за рамки простых проверок протоколов.

SLO: Руководство Google по SRE определяет SLO как целевое значение/диапазон для уровня сервиса, измеряемого SLI, и предоставляет руководство по алертингу на SLO (компромиссы точность/полнота/время обнаружения).

Ключевые метрики LLM: чертеж

Категория Примеры имен метрик (реальные примеры) Тип Почему это важно Примеры источников
Сквозная латентность tgi_request_duration Гистограмма Хвостовая латентность — это пользовательский опыт TGI экспонирует это явно
Время до первого токена vllm:time_to_first_token_seconds ; gen_ai.server.time_to_first_token Гистограмма Потоковая передача/задержка первого токена часто является первым признаком насыщения vLLM и OTel semconv GenAI
Время на выходной токен tgi_request_mean_time_per_token_duration ; gen_ai.server.time_per_output_token Гистограмма Латентность между токенами; «ощущается медленно», даже если запрос завершен TGI и OTel semconv GenAI
Использование/объем токенов tgi_request_generated_tokens ; gen_ai.client.token.usage Гистограмма / Счетчик Затраты + емкость зависят от токенов TGI и OTel semconv GenAI
Запросы tgi_request_count ; vllm:request_success_total Счетчик Базовая линия трафика и результаты TGI и vLLM
Длина очереди tgi_queue_size Gauge Очереди предсказывают взрывы латентности TGI
Размер пакета и лимиты пакета tgi_batch_current_size ; tgi_batch_current_max_tokens Gauge Компромиссы пропускная способность–латентность TGI
Утилизация/память GPU DCGM_* (предоставляется экспортером) Gauge Насыщение, риск OOM, триггер масштабирования Экспортер DCGM экспонирует метрики GPU в /metrics
Эндпоинт телеметрии сервера инференса :8002/metrics (Triton по умолчанию в docs/archives) Стандартная цель скрейпинга для Prometheus Документация Triton

Семантические соглашения OpenTelemetry GenAI для стандартизации

OpenTelemetry предоставляет семантические соглашения GenAI (статус: «Разработка») со стандартным наименованием для метрик GenAI, таких как:

  • gen_ai.client.token.usage и gen_ai.client.operation.duration
  • gen_ai.server.request.duration, gen_ai.server.time_per_output_token и gen_ai.server.time_to_first_token

Эта стандартизация является практическим рычагом для портативных стратегий «мониторинга моделей LLM с OpenTelemetry»: эмиссия один раз и маршрутизация той же телеметрии в OSS или бэкенды вендоров позже.

Проектирование конвейера телеметрии

llm observability flowchart

Pull vs push

Prometheus — это pull-first. Процессы экспонируют метрики в поддерживаемом формате экспозиции, и Prometheus скрейпит их в соответствии с настроенными задачами скрейпинга.

Push — для исключений. Руководство Prometheus «Когда использовать Pushgateway» явно рекомендует Pushgateway только в ограниченных случаях (не как общую замену push), и README Pushgateway подчеркивает, что он не может «превратить Prometheus в систему мониторинга на основе push».

Практический паттерн для LLM:

  • Используйте pull для серверов инференса/экспортеров (эндпоинты метрик Triton/vLLM/TGI; экспортер DCGM; метрики узлов).
  • Используйте OTLP push для трасс/логов/метрик OTel (Протокол OpenTelemetry определяет транспорт/кодирование/доставку между источниками, коллекторами и бэкендами).
  • Используйте remote write при масштабировании за пределы одного Prometheus (Prometheus предоставляет руководство по настройке remote write; Mimir/Thanos/Cortex предоставляют опции долгосрочного и/или HA хранения).

Агент vs sidecar vs gateway-коллекторы

OpenTelemetry документирует паттерн развертывания агента, где телеметрия отправляется в Коллектор, работающий рядом с приложением или на том же хосте (sidecar/DaemonSet), а затем экспортируется.

Для Kubernetes инъекция sidecar поддерживается через OpenTelemetry Operator (инъекция на основе аннотаций).

Прагматичное правило большого пальца для стеков LLM:

  • Используйте агент DaemonSet для обогащения на уровне хоста и общих конвейеров для многих подов.
  • Используйте sidecar, когда вам нужна строгая изоляция на уровне рабочей нагрузки или локальная фильтрация (часто, когда промпты могут содержать конфиденциальные данные).
  • Используйте gateway-коллектор для централизованного хвостового сэмплирования, пакетной обработки, повторных попыток и экспорта fan-out.

Сэмплирование и контроль кардинальности

OpenTelemetry уточняет, что хвостовое сэмплирование позволяет принимать решения о сэмплировании, используя критерии, полученные из трассы (невозможно только с головным сэмплированием).

Руководство по инструментации Prometheus предупреждает против чрезмерного использования лейблов, предоставляет правило большого пальца для сохранения низкой кардинальности и советует перепроектировать метрики, если потенциальная кардинальность превышает ~100.

«Ловушки кардинальности» для LLM, которые нужно запретить заранее:

  • Текст промпта, текст ответа, идентификаторы разговора, идентификаторы запросов как лейблы/атрибуты.
  • Блобы аргументов инструментов как атрибуты спана.
  • Неограниченные лейблы «user_id».

Предпочитайте ограниченные измерения: model, model_family, endpoint, region, status_code, deployment, tenant (только если ограничено).

Сравнение инструментов наблюдаемости LLM

Инструменты, маппированные к задачам наблюдаемости

Инструмент Метрики Трассы Логи Профилирование Синтетические тесты SLO / алертинг Актуальность для LLM
Prometheus ◻️ ◻️ ◻️ ◻️ Руководство по инструментации + модель алертинга; скрейпинг на основе pull
Grafana ✅ (визуализация) ✅ (визуализация) ✅ (визуализация) Дашборды — это панели поверх источников данных; поддерживает широкие источники данных
OpenTelemetry ✅ (профили развиваются) ◻️ ◻️ Спецификация OTLP + семантические соглашения GenAI; инструментация, независимая от вендора
Jaeger ◻️ ◻️ ◻️ ◻️ ◻️ Принимает OTLP (gRPC/HTTP) и является распространенным бэкендом трассировки
Grafana Tempo ◻️ ◻️ ◻️ ◻️ ◻️ Трассировка высокой масштабируемости; может генерировать метрики из спанов через metrics-generator
Grafana Loki ◻️ ◻️ ◻️ ◻️ ◻️ Индексирует только лейблы; хранит сжатые чанки; снижает стоимость логов в масштабе
Elastic Stack (ELK) ◻️ ◻️ Elastic Stack перечисляет основы Elasticsearch + Kibana; Elastic APM поддерживает интеграцию с OTel
Экспортер DCGM ◻️ ◻️ ◻️ ◻️ ◻️ Экспортер метрик GPU, экспонирующий эндпоинт скрейпинга /metrics
Mimir / Thanos / Cortex ◻️ ◻️ ◻️ ◻️ ◻️ Долгосрочное/HA хранилище метрик, совместимое с Prometheus
Datadog Принимает трассы/метрики/логи OTel; включает функции сканирования конфиденциальных данных
New Relic Документирует конфигурацию эндпоинта OTLP и поддерживаемые практики OTLP/HTTP
Honeycomb ◻️ ◻️ Поддерживает прием OTLP через gRPC/HTTP; ingestion, ориентированная на OTel
LangSmith ◻️ ◻️ ◻️ ◻️ ◻️ Поддерживает трассировку на базе OpenTelemetry для приложений LLM

Grafana vs альтернативы для визуализации

  • Дашборды Grafana состоят из панелей, которые запрашивают источники данных (включая Loki и Mimir) для создания графиков и визуализаций.
  • Kibana предоставляет дашборды/визуализации как UI-слой внутри Elastic Stack.
  • OpenSearch Dashboards предоставляет инструменты визуализации данных для OpenSearch.
  • Документация InfluxData позиционирует Chronograf как компонент визуализации внутри экосистемы Influx.

Prometheus vs альтернативы для бэкендов метрик

  • Локальное хранилище Prometheus по умолчанию: если флаги удержания не установлены, время удержания по умолчанию составляет 15d.
  • Remote write Prometheus: Prometheus документирует настройку remote write для масштабирования за пределы «разумных значений по умолчанию».
  • Grafana Tempo: позиционируется как бэкенд трассировки высокой масштабируемости и может генерировать метрики из спанов, используя metrics-generator (remote write в источник данных Prometheus).
  • Хранилище Loki: документация Loki подчеркивает индексирование только лейблов и хранение сжатых чанков (объектное хранилище), делая стратегию лейблов центральной для масштаба и стоимости.

Практический кулинарный рецепт реализации

Имена и типы метрик для внедрения сегодня

Семантические соглашения OpenTelemetry GenAI (статус: Разработка) определяют имена метрик, на которые вы можете стандартизироваться немедленно:

  • gen_ai.client.token.usage
  • gen_ai.client.operation.duration
  • gen_ai.server.request.duration
  • gen_ai.server.time_per_output_token
  • gen_ai.server.time_to_first_token

Примеры серверной стороны, которые можно скрейпить прямо сейчас:

  • Эндпоинт Prometheus vLLM включает счетчики (например, общее количество сгенерированных токенов) и гистограммы (TTFT) и документирует стратегию лейбла model_name.
  • TGI документирует метрики, включая размер очереди, продолжительность запроса, сгенерированные токены и среднее время на токен.
  • Triton документирует экспозицию /metrics и переключатели метрик.

Примеры PromQL для дашбордов латентности и пропускной способности LLM

# p95 сквозной латентности для гистограммы приложения
histogram_quantile(
  0.95,
  sum(rate(llm_request_latency_seconds_bucket[5m])) by (le, model)
)

# Процент ошибок (5xx)
100 *
(
  sum(rate(llm_requests_total{status_code=~"5.."}[5m]))
  /
  sum(rate(llm_requests_total[5m]))
)

# Токены/сек (выход) по всем моделям
sum(rate(llm_tokens_total{direction="out"}[5m]))

# Размер очереди TGI (gauge)
max(tgi_queue_size) by (instance)

# vLLM TTFT p95
histogram_quantile(
  0.95,
  sum(rate(vllm:time_to_first_token_seconds_bucket[5m])) by (le, model_name)
)

Руководство Prometheus по гистограммам объясняет, что квантили гистограммы вычисляются на стороне сервера из бакетов с использованием histogram_quantile().

Примечания по инструментации OpenTelemetry для систем LLM

  • OTLP — это Протокол OpenTelemetry, специфицирующий, как телеметрия кодируется/передается между источниками, коллекторами и бэкендами.
  • Документация по конфигурации SDK OpenTelemetry документирует переменные среды, такие как OTEL_EXPORTER_OTLP_ENDPOINT (и варианты протокола) для экспорта телеметрии.
  • OpenTelemetry Python contrib документирует поддержку инструментации FastAPI для автоматической и ручной инструментации.
  • Семантические соглашения GenAI включают механизм опциональной стабильности через OTEL_SEMCONV_STABILITY_OPT_IN для миграции соглашений GenAI.

Короткий пример на Python: метрики + трассы + логи

Ниже приведенный фрагмент демонстрирует:

  • Экспозицию метрик Prometheus (/metrics) для «мониторинга инференса LLM с Prometheus»
  • Трассы OpenTelemetry, экспортируемые через OTLP (независимо от вендора)
  • Структурированные логи, коррелированные с контекстом трассы, с безопасным по умолчанию для конфиденциальности (не логировать сырые промпты)
import logging
import time

from fastapi import FastAPI, Request
from pydantic import BaseModel

# Prometheus (метрики на основе pull)
from prometheus_client import Counter, Histogram, generate_latest, CONTENT_TYPE_LATEST
from starlette.responses import Response

# OpenTelemetry (трассы OTLP)
from opentelemetry import trace
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter

app = FastAPI(title="LLM Inference API", version="1.0.0")
FastAPIInstrumentor.instrument_app(app)

# --- Логирование (безопасное по умолчанию) ---
logger = logging.getLogger("llm")
logging.basicConfig(level=logging.INFO, format="%(message)s")

def trace_id_hex() -> str:
    span = trace.get_current_span()
    ctx = span.get_span_context()
    return format(ctx.trace_id, "032x") if ctx.is_valid else ""

# --- Метрики Prometheus ---
LLM_REQUESTS = Counter(
    "llm_requests_total",
    "Общее количество запросов LLM",
    ["route", "status_code", "model"],
)
LLM_LATENCY = Histogram(
    "llm_request_latency_seconds",
    "Сквозная латентность запроса LLM (секунды)",
    ["route", "model"],
    buckets=(0.1, 0.2, 0.35, 0.5, 0.75, 1, 1.5, 2, 3, 5, 8, 13),
)

# --- Провайдер трассировки OpenTelemetry ---
resource = Resource.create({"service.name": "llm-inference-api"})
trace.set_tracer_provider(TracerProvider(resource=resource))
trace.get_tracer_provider().add_span_processor(
    BatchSpanProcessor(OTLPSpanExporter())  # настраивается через переменные среды OTEL_EXPORTER_OTLP_*
)
tracer = trace.get_tracer(__name__)

class GenerateRequest(BaseModel):
    prompt: str
    model: str = "unspecified"
    max_tokens: int = 256

class GenerateResponse(BaseModel):
    model: str
    output: str
    latency_ms: int

@app.post("/v1/generate", response_model=GenerateResponse)
async def generate(req: GenerateRequest, request: Request):
    route = "/v1/generate"
    start = time.perf_counter()

    with tracer.start_as_current_span("llm.generate") as span:
        # Избегайте логирования полного промпта; эмиссия безопасных метаданных
        span.set_attribute("gen_ai.request.model", req.model)
        span.set_attribute("gen_ai.request.max_tokens", req.max_tokens)

        # Замените на фактический вызов LLM (клиент Triton/vLLM/TGI)
        time.sleep(0.15)
        output = "Hello from the model."

        latency_s = time.perf_counter() - start
        LLM_LATENCY.labels(route=route, model=req.model).observe(latency_s)
        LLM_REQUESTS.labels(route=route, status_code="200", model=req.model).inc()

        logger.info(
            {
                "msg": "llm_request_complete",
                "trace_id": trace_id_hex(),
                "model": req.model,
                "latency_ms": int(latency_s * 1000),
                # НЕ включайте сырой промпт/вывод, если политика не разрешает.
            }
        )

        return GenerateResponse(model=req.model, output=output, latency_ms=int(latency_s * 1000))

@app.get("/metrics")
def metrics():
    return Response(generate_latest(), media_type=CONTENT_TYPE_LATEST)

Развертывание, масштабирование, безопасность и устранение неполадок

llm dashboard deployment

Варианты развертывания

Вариант развертывания Лучше всего для Компромиссы
Kubernetes + kube-prometheus-stack (Helm) Стандартизированный пакет мониторинга кластера (Prometheus Operator, дашборды, правила) Управление жизненным циклом CRDs/оператора
Kubernetes + OpenTelemetry Collector (DaemonSet/sidecar) Стандартизированные конвейеры OTLP; локальная фильтрация конфиденциальных данных Требует настройки сэмплирования/лимитов
Docker Compose Быстрое прототипирование на одном хосте Не HA; хранилище ручное
systemd / установки VM GPU-флоты bare-metal и традиционные операции Ручное обнаружение и конфигурация
Управляемые сервисы (Grafana Cloud / Datadog / New Relic / AMP) Быстрое время до ценности; управляемое масштабирование Стоимость и управление; компромиссы привязки к вендору

Масштабирование и удержание: практические ограничения

  • Локальное хранилище Prometheus: без явных флагов размера/времени, время удержания по умолчанию составляет 15d.
  • Remote write Prometheus: Prometheus документирует настройку remote write для масштабирования за пределы «разумных значений по умолчанию».
  • Grafana Tempo: позиционируется как бэкенд трассировки высокой масштабируемости и может генерировать метрики из спанов, используя metrics-generator (remote write в источник данных Prometheus).
  • Хранилище Loki: документация Loki подчеркивает индексирование только лейблов и хранение сжатых чанков (объектное хранилище), делая стратегию лейблов центральной для масштаба и стоимости.

Безопасность и конфиденциальность: промпты могут содержать PII

Руководство OpenTelemetry по безопасности подчеркивает, что сбор телеметрии может непреднамеренно захватить конфиденциальную/персональную информацию; вы несете ответственность за ее надлежащую обработку.

Модель безопасности Prometheus предупреждает, что эндпоинты Prometheus не должны быть экспонированы в общедоступные сети (например, интернет), поскольку они обслуживают информацию о наблюдаемых системах.

Операционные контролы конфиденциальности, которые сохраняют «наблюдаемость для систем LLM» безопасной:

  • По умолчанию не логировать сырые промпты/ответы; логировать количество токенов, имя модели, латентность и идентификаторы трассы вместо этого.
  • Удалять/отбрасывать конфиденциальные атрибуты в коллекторах/конвейерах (фильтрация на уровне коллектора является распространенным подходом в экосистемах).
  • Применять RBAC и политики удержания для логов/трасс; рассмотреть сканеры конфиденциальных данных там, где это уместно (например, вендоры документируют сканеры для телеметрии).

Чек-лист по устранению неполадок

Если ваш дашборд Grafana для латентности LLM выглядит неправильно, отлаживайте в этом порядке:

  • Здоровье ingestion
    • Prometheus: валидируйте успех скрейпинга и семантику конфигурации (конфигурация Prometheus определяет задачи/инстансы скрейпинга).
    • OTLP: подтвердите конфигурацию эндпоинта экспортера (SDK используют OTEL_EXPORTER_OTLP_ENDPOINT, настройки протокола).
  • Несоответствие схемы
    • Дашборд ожидает model, но ваш сервер экспонирует model_name (vLLM явно документирует лейблы model_name).
  • Взрыв кардинальности
    • Кто-то пометил лейблами идентификаторы запросов/хэши промптов; Prometheus предупреждает, что наборы лейблов увеличивают затраты RAM/CPU/диска/сети и предоставляет руководство по кардинальности.
  • Неправильное использование гистограмм
    • Убедитесь, что вы вычисляете квантили из серий _bucket с помощью rate() и le; Prometheus объясняет компромиссы вычисления квантилей гистограмм.
  • Пропуски сэмплирования трасс
    • Если вы слишком агрессивно головно сэмплируете, редкие медленные/ошибочные трассы исчезают; хвостовое сэмплирование сохраняет «важные» трассы на основе критериев полной трассы.
  • Проблемы метрик спанов Tempo
    • Если вы используете metrics-generator Tempo и span-metrics, подтвердите, что он включен и настроен (Tempo документирует процессоры metrics-generator и span-metrics; существуют руководства по устранению неполадок генератора).
  • Отсутствие метрик GPU
    • Подтвердите, что экспортер DCGM развернут и /metrics доступен (экспортер DCGM экспонирует метрики GPU через HTTP для Prometheus).

Полезные ссылки

Подписаться

Получайте новые материалы про системы, инфраструктуру и AI engineering.