quantile_over_time()
Тема дорожной карты · Loki
Функция quantile_over_time() в LogQL вычисляет приближённые значения перцентилей из числовых полей, извлечённых из строк логов в Grafana Loki, что позволяет анализировать перцентили задержек непосредственно из логов без отдельной системы метрик. Функция принимает значение квантиля (от 0 до 1), конвейер потока логов, извлекающий числовое поле, и временной диапазон — например, quantile_over_time(0.95, {job="api"} | json | unwrap duration_ms [5m]) для вычисления 95-го перцентиля времени ответа. Выражение unwrap обязательно, поскольку LogQL необходимо преобразовать значение метки в числовой тип float перед вычислением статистических агрегаций вроде quantile_over_time. Результаты возвращаются как мгновенный вектор, который можно отобразить в Grafana рядом с гистограммами задержек Prometheus, облегчая корреляцию SLI на основе логов с другими сигналами наблюдаемости в Loki. Как и другие метрические функции LogQL, quantile_over_time поддерживает операторы агрегации, например max by (service), для группировки результатов перцентилей по нескольким потокам Loki.
Как это работает
quantile_over_time(): LogQL может считать metrics из логов. rate({app="nginx"} |= "5"[5m]) = rate 5xx-ошибок per second. count_over_time(...) = absolute counts. bytes_rate(...) = bytes per second. quantile_over_time(0.95, ...) = 95-й percentile числового поля (после extraction). sum by (status_code)(rate(...)) = aggregations. Metric queries из логов позволяют строить alerts + dashboards без separate metric-пайплайнов, но дороже Prometheus для той же метрики.
Когда применять
Metric queries — для ad-hoc анализа из уже имеющихся логов. Для production metrics инструментируйте Prometheus напрямую — намного дешевле в query time. rate() + sum by (...) для HTTP status code rates из access logs — классический паттерн. Recording rules (следующая тема) сохраняют эти computed-метрики для dashboards.
Типичные ошибки
Ловушки quantile_over_time(): тяжёлый quantile_over_time по неделям логов (медленно, дорого); дублирование Prometheus-метрик через LogQL (Prometheus дешевле); не кешируют/записывают dashboard-queries (пересчитывается на каждом refresh); игнор high-cardinality extracted labels в aggregations.