LogQL

Тема дорожной карты · Loki

LogQL — это язык запросов для Grafana Loki, вдохновлённый PromQL и разработанный для естественной работы с моделью потоков логов на основе меток. Этот язык запросов позволяет эффективно анализировать и обрабатывать логи, а также создавать информативные дашборды для мониторинга и анализа данных. Освоение LogQL необходимо для эффективного анализа агрегированных логов, настройки алертов и создания информативных дашбордов наблюдаемости с Grafana Loki.

Как это работает

LogQL (Log Query Language) — это язык запросов, вдохновленный Prometheus Query Language (PromQL), но адаптированный для работы с логами. В LogQL запрос начинается с селектора потоков логов, который определяет набор потоков, которые будут использоваться для анализа. Селектор потоков логов выглядит следующим образом: {job="nginx"}, где job — это метка, а nginx — её значение. После селектора потоков логов можно применять различные выражения фильтрации, парсера и метрические функции. Например, селектор потоков логов может быть дополнен фильтром |= "error", который выбирает только те строки логов, которые содержат слово "error". Другие примеры выражений фильтрации включают != "debug", |~ "5\d\d", !~ "regex", которые позволяют отсеивать логи по различным критериям.

LogQL поддерживает два основных типа запросов: запросы логов, которые возвращают сырые строки, и метрические запросы, которые вычисляют агрегированные значения временных рядов из данных логов. Например, запрос логов может выглядеть как {job="nginx"} |= "error", возвращая все строки логов, содержащие слово "error" для задачи nginx. Метрический запрос, например, rate({job="nginx"}[5m]), вычисляет скорость появления новых логов для задачи nginx за последние 5 минут.

Когда применять

LogQL особенно полезен, когда нужно эффективно анализировать и обрабатывать логи. Всегда начинайте с самого селективного stream selector — он бьёт по label-индексу. Фильтруйте максимум до парсинга (фильтры дёшевы, парсинг дорог). Если логи JSON, используйте | json для авто-extract всех полей. Для structured-but-not-JSON логов используйте | pattern вместо regex (быстрее).

Типичные ошибки

Типичные ошибки при использовании LogQL включают слишком широкий stream selector, который приводит к ненужному обзору большого количества данных, что может замедлить выполнение запроса. Также часто встречаются ситуации, когда используются регулярные выражения вместо более простых и быстрых фильтров, что может привести к замедлению работы системы. Не использование | json для JSON-логов может привести к излишним затратам на парсинг и обработку логов.

Связанные понятия

Полезные ресурсы

Проверить знания (1)

Загрузка вопросов…