Последнее обновление: июля 29, 2026

Редактор запросов Loki

Редактор запросов источника данных Loki помогает создавать запросы журналов и запросы метрик, использующие язык запросов Loki — LogQL.

Общую документацию по запросам к источникам данных в Grafana см. в разделе Запрос и преобразование данных.

Выбор режима редактирования запроса

Редактор запросов Loki имеет два режима:

  • Режим Builder, который предоставляет визуальный конструктор запросов.
  • Режим Code, который предоставляет многофункциональный редактор для написания запросов.

Чтобы переключаться между режимами редактора, выберите соответствующие вкладки Builder и Code.

Чтобы выполнить запрос, выберите Run queries в верхней части редактора.

Note

Чтобы выполнять запросы Loki в Explore, выберите Run query.

Каждый режим синхронизирован, поэтому вы можете переключаться между ними, не теряя свою работу, хотя есть некоторые ограничения. Режим Builder не поддерживает некоторые сложные запросы. Когда вы переключаетесь из режима Code в режим Builder с таким запросом, редактор отображает предупреждающее сообщение, объясняющее, как вы можете потерять части запроса, если продолжите. Затем вы можете решить, хотите ли вы всё ещё переключиться в режим Builder.

Вы также можете дополнять запросы, используя шаблонные переменные.

Элементы панели инструментов

Панель инструментов редактора запросов содержит следующие элементы:

  • Kick start your query — нажмите, чтобы увидеть список примеров запросов, помогающих быстро начать создавать запросы LogQL. Они включают стартовые наборы для запросов журналов и запросов метрик. Нажмите стрелку рядом с каждым, чтобы увидеть доступные параметры запроса, а затем продолжите, чтобы завершить запрос.

  • Label browser — используйте браузер меток Loki, чтобы перемещаться по меткам и их значениям и строить запросы.

Чтобы перемещаться по Loki и строить запрос:

  1. Выберите метки для поиска.

  2. Найдите значения выбранных меток.

    Поле поиска поддерживает нечёткий поиск, а браузер меток также поддерживает фасетирование, чтобы перечислять только возможные комбинации меток.

  3. Выберите кнопку Show logs, чтобы отобразить строки журнала на основе выбранных меток, или выберите кнопку Show logs rate, чтобы показать интенсивность на основе таких метрик, как запросы в секунду. Кроме того, вы можете проверить селектор, нажав кнопку Validate selector. Нажмите Clear, чтобы начать с начала.

The Loki label browser
The Loki label browser
  • Explain query — переключатель, включающий пошаговое объяснение всех компонентов запроса и операций.
Explain results
Explain results
  • Builder/Code — нажмите соответствующую вкладку Builder или Code на панели инструментов, чтобы выбрать режим редактора.

Режим Builder

Режим Builder помогает строить запросы через визуальный интерфейс без необходимости вручную вводить LogQL. Этот вариант лучше всего подходит пользователям с ограниченным опытом работы с Loki и LogQL или без него.

Фильтры меток

Выбирайте метки и их значения из раскрывающегося списка. Когда вы выбираете метку, Grafana получает доступные значения с сервера.

Используйте кнопку +, чтобы добавить метку, и кнопку x, чтобы удалить метку. Вы можете добавить несколько меток.

Выбирайте операторы сравнения из следующих вариантов:

  • = — равно
  • != — не равно
  • =~ — соответствует регулярному выражению
  • !~ — не соответствует регулярному выражению

Выбирайте значения с помощью раскрывающегося списка, который отображает все возможные значения на основе выбранной метки.

Операции

Нажмите кнопку + Operations, чтобы добавить операции в запрос. Редактор запросов группирует операции в связанные разделы, и вы можете печатать, пока раскрывающийся список операций открыт, чтобы искать и фильтровать список.

Редактор запросов отображает операции запроса в виде блоков в разделе операций. Заголовок каждой операции отображает её имя, а дополнительные кнопки действий появляются при наведении курсора на заголовок:

Кнопка Действие
Заменяет операцию другой операцией того же типа.
Открывает всплывающую подсказку с описанием операции.
Удаляет операцию.

Редактор запросов группирует операции в следующие разделы:

Некоторые операции имеют смысл только при использовании в определённом порядке. Если добавление операции привело бы к бессмысленному запросу, редактор запросов добавляет операцию в правильное место. Чтобы изменить порядок операций вручную, перетащите блок операции за его имя и поместите в нужное место. Дополнительную информацию см. в разделе Порядок операций.

Подсказки

В некоторых случаях редактор запросов может определить, какие операции лучше всего подходят для выбранного потока журналов. Когда он это делает, рядом с кнопкой + Operations появляется подсказка. Нажмите подсказку, чтобы добавить операции в запрос.

Пример режима Builder

Следующие шаги строят запрос метрик, который подсчитывает интенсивность строк с ошибками для приложения payments, без написания какого-либо LogQL:

  1. В разделе Label filters выберите метку app и значение payments.
  2. Выберите + Operations, затем в разделе Line filters добавьте операцию Line contains и введите error.
  3. Снова выберите + Operations, затем в разделе Range functions добавьте Rate с диапазоном [5m].
  4. В разделе Aggregations добавьте Sum, чтобы объединить результаты в один ряд.

Конструктор создаёт эквивалентный запрос LogQL:

logql
sum(rate({app="payments"} |= `error` [5m]))

Переключитесь в режим Code в любой момент, чтобы просмотреть или уточнить сгенерированный запрос.

Режим Code

В режиме Code вы можете писать сложные запросы с помощью текстового редактора с автодополнением, подсветкой синтаксиса и проверкой запросов. Он также предоставляет браузер меток, чтобы дополнительно помочь вам писать запросы.

Дополнительную информацию о языке запросов Loki см. в документации Loki.

Использование автодополнения

Функция автодополнения режима Code работает автоматически во время ввода.

Редактор запросов может автодополнять статические функции, агрегации и ключевые слова, а также динамические элементы вроде меток. Раскрывающийся список автодополнения включает документацию для предлагаемых элементов, где она доступна.

Параметры

Следующие параметры одинаковы для режимов Builder и Code:

  • Legend — управляет именем ряда времени, используя имя или шаблон. Например, {{hostname}} заменяется на значение метки hostname.

  • Type — выбирает тип выполняемого запроса. Тип instant запрашивает данные на один момент времени, используя время To из временного диапазона. Тип range запрашивает данные за выбранный диапазон времени.

  • Line limit — задаёт верхний предел количества строк журнала, возвращаемых запросом. Значение по умолчанию — 1000.

  • Direction — определяет порядок поиска. Backward — обратный поиск, начиная с конца временного диапазона. Forward — прямой поиск, начиная с начала временного диапазона. Значение по умолчанию — Backward.

  • Step — задаёт параметр шага (step) для запросов метрик Loki. Значение по умолчанию равно значению переменной $__auto, которую Grafana вычисляет, используя временной диапазон и ширину графика в пикселях.

Создание запроса журналов

Запросы журналов Loki возвращают содержимое строк журнала. Вы можете запрашивать и отображать данные журналов из Loki через Explore и с помощью панели Logs в дашбордах.

Чтобы отобразить результаты запроса журналов, выберите источник данных Loki, а затем введите запрос LogQL.

Дополнительную информацию о запросах журналов и LogQL см. в документации Loki по запросам журналов.

Примеры запросов журналов

Запрос журналов состоит из двух частей: селектор потока, который выбирает потоки журналов по метке, и необязательный конвейер (pipeline), который фильтрует и разбирает совпавшие строки. Замените сопоставители меток значениями из ваших собственных журналов.

Вернуть каждую строку журнала из приложения payments:

logql
{app="payments"}

Оставить только строки, содержащие слово error, и отбросить шум проверок работоспособности:

logql
{app="payments"} |= `error` != `healthcheck`

Сопоставить строки с регулярным выражением, например любой статус 4xx или 5xx:

logql
{app="nginx"} |~ `status=(4|5)..`

Разобрать структурированные журналы, а затем отфильтровать по извлечённому полю. Этот пример разбирает журналы logfmt и оставляет запросы медленнее 500 мс:

logql
{app="payments"} | logfmt | duration > 500ms

Разобрать JSON-журналы и оставить только записи уровня ошибок:

logql
{namespace="prod", app="checkout"} | json | level=`error`

Сценарий использования: отладка сбойного сервиса. Объедините селектор namespace и app с парсером и фильтром меток, чтобы изолировать ошибки одного сервиса во время инцидента:

logql
{namespace="prod", app="checkout"} |= `error` | logfmt | status >= 500

Показ контекста журнала

В Explore вы можете получить контекст, окружающий результаты журнала, нажав кнопку Show context. Затем вы можете исследовать журналы из того же потока, которые появились до и после интересующего вас сообщения журнала.

Исходный запрос контекста журнала создаётся из всех меток, определяющих поток для выбранной строки журнала. Вы можете использовать редактор запроса контекста журнала, чтобы расширить поиск, удалив одну или несколько меток из потока журнала. Если вы использовали парсер в исходном запросе, вы можете уточнить поиск, используя извлечённые фильтры меток.

Вы также можете настроить размер временного окна, которое загружает контекст журнала, чтобы расширять или сужать диапазон окружающих журналов, не покидая представление контекста.

Чтобы уменьшить повторение выбора и удаления одних и тех же меток при просмотре нескольких окон контекста журнала, Grafana сохраняет выбранные метки и применяет их к каждому открытому окну контекста. Это позволяет перемещаться по различным окнам контекста журнала без необходимости применять фильтры заново.

Чтобы сбросить фильтры и использовать исходный запрос контекста журнала, нажмите кнопку Revert to initial query рядом с предварительным просмотром запроса.

Потоковая трансляция журналов

Loki поддерживает потоковую трансляцию журналов в реальном времени в Explore.

Потоковая трансляция опирается на два соединения WebSocket: одно между браузером и сервером Grafana, другое между сервером Grafana и сервером Loki.

Чтобы начать трансляцию журналов, нажмите кнопку Live в правом верхнем углу представления Explore.

Примеры проксирования

Если вы используете обратные прокси, настройте их соответствующим образом для потоковой трансляции:

Использование Apache2 для проксирования между браузером и сервером Grafana:

ProxyPassMatch "^/(api/datasources/proxy/\d+/loki/api/v1/tail)" "ws://127.0.0.1:3000/$1"

Использование NGINX:

Этот пример предоставляет базовую конфигурацию прокси NGINX. Он предполагает, что сервер Grafana доступен по адресу http://localhost:3000/, сервер Loki работает локально без прокси, а ваш внешний сайт использует HTTPS. Если вы также размещаете Loki за прокси NGINX, повторите следующую конфигурацию для Loki.

В разделе http конфигурации NGINX добавьте следующее определение map:

  map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
  }

В вашем разделе server добавьте следующую конфигурацию:

  location ~ /(api/datasources/proxy/\d+/loki/api/v1/tail) {
      proxy_pass          http://localhost:3000$request_uri;
      proxy_set_header    Host              $host;
      proxy_set_header    X-Real-IP         $remote_addr;
      proxy_set_header    X-Forwarded-for   $proxy_add_x_forwarded_for;
      proxy_set_header    X-Forwarded-Proto "https";
      proxy_set_header    Connection        $connection_upgrade;
      proxy_set_header    Upgrade           $http_upgrade;
  }

  location / {
      proxy_pass          http://localhost:3000/;
      proxy_set_header    Host              $host;
      proxy_set_header    X-Real-IP         $remote_addr;
      proxy_set_header    X-Forwarded-for   $proxy_add_x_forwarded_for;
      proxy_set_header    X-Forwarded-Proto "https";
  }

Создание запроса метрик

Вы можете использовать LogQL, чтобы обернуть запрос журналов функциями, которые создают метрики из ваших журналов.

Дополнительную информацию о запросах метрик см. в документации Loki по запросам метрик.

Примеры запросов метрик

Запросы метрик применяют range-агрегацию, такую как rate или count_over_time, к запросу журналов и необязательному диапазону вроде [5m]. Затем вы можете обернуть результат в оператор агрегации, такой как sum или topk, чтобы сгруппировать или ранжировать ряды.

Подсчитать интенсивность строк с ошибками в секунду для приложения payments:

logql
sum(rate({app="payments"} |= `error` [5m]))

Разбить интенсивность запросов по коду статуса:

logql
sum by (status) (rate({app="nginx"} | logfmt [5m]))

Подсчитать, сколько тайм-аутов произошло за последний час:

logql
count_over_time({app="payments"} |= `timeout` [1h])

Вычислить 95-й процентиль длительности запроса по маршруту. Этот пример разбирает журналы logfmt и разворачивает (unwrap) числовое поле duration:

logql
quantile_over_time(0.95, {app="payments"} | logfmt | unwrap duration [5m]) by (route)

Сценарий использования: поиск самых шумных конечных точек. Ранжируйте топ-10 путей запросов по объёму журналов за последний час:

logql
topk(10, sum by (path) (count_over_time({app="nginx"} | logfmt [1h])))

Разбиение запросов

Чтобы большие запросы оставались отзывчивыми, Grafana автоматически разбивает запросы Loki, охватывающие длительный временной диапазон, на серию меньших подзапросов. Grafana выполняет подзапросы и объединяет результаты, а запрос продвигается постепенно, так что вы видите частичные результаты по мере их поступления. Разбиение запросов применяется как к запросам журналов, так и к запросам метрик и не требует настройки.

Structured metadata

Loki хранит три типа меток: индексируемые метки, разобранные поля и structured metadata. Редактор запросов и детали журнала обрабатывают все три типа как метки, по которым можно фильтровать и которые можно использовать в производных полях. Дополнительную информацию см. в документации Loki по structured metadata.

Применение аннотаций

Вы можете использовать запросы журналов Loki как источник для аннотаций дашборда. Подробности см. в разделе Аннотации Loki.