bytes_rate()
Тема дорожной карты · Loki
Функции bytes_rate() и bytes_over_time() в LogQL измеряют объём данных логов, проходящих через Grafana Loki, в байтах, а не в количестве строк. bytes_over_time({job="nginx"}[5m]) возвращает общий объём байт строк логов для выбранных потоков за пятиминутное окно, тогда как bytes_rate({job="nginx"}[5m]) делит этот объём на количество секунд в окне, получая метрику пропускной способности в байтах в секунду. Эти функции особенно полезны для планирования мощностей, распределения затрат и обнаружения аномалий объёма логов — например, внезапный всплеск bytes_rate может свидетельствовать об избыточном отладочном логировании или атаке через инъекцию логов. Как и все метрические запросы LogQL, bytes_rate можно комбинировать с выражениями фильтрации и агрегировать с помощью sum by (namespace) для сравнения объёмов данных логов между различными арендаторами или пространствами имён Grafana Loki. Совместный мониторинг bytes_rate и rate даёт полную картину как частоты, так и размера событий логов в развёртывании Loki.
Как это работает
bytes_rate(): 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.
Типичные ошибки
Ловушки bytes_rate(): тяжёлый quantile_over_time по неделям логов (медленно, дорого); дублирование Prometheus-метрик через LogQL (Prometheus дешевле); не кешируют/записывают dashboard-queries (пересчитывается на каждом refresh); игнор high-cardinality extracted labels в aggregations.