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)
Загрузка вопросов…