line_format
Тема дорожной карты · Loki
line_format в LogQL — это мощный инструмент для перезаписи выходной строки лога с использованием шаблонов Go. Это позволяет изменять или упрощать записи логов, полученных из Grafana Loki, перед их отображением или дальнейшей обработкой. Используя line_format, вы можете стандартизировать формат логов, что делает дашборды Grafana и сообщения алертов более читаемыми и удобными для анализа. Этот механизм особенно полезен при работе с логами из различных сервисов, имеющих непоследовательные форматы.
Этот шаг в конвейере выполняется после парсера, который извлекает поля логов в временные метки. Эти метки затем используются для формирования выходной строки лога с помощью синтаксиса шаблонов Go, например, | json | line_format "{{.level}} {{.message}}". Здесь {{.level}} и {{.message}} — это примеры полей, которые были извлечены из логов.
line_format также позволяет использовать условную логику, добавляя префиксы или суффиксы к строкам логов в зависимости от определённых условий. Например, можно использовать функции шаблонов Go для добавления префиксов, таких как {{if eq .level "error"}}ALERT: {{end}}{{.message}}, чтобы сделать логи более информативными и удобными для анализа.
Этот шаг влияет на содержимое логов, которое видно в Grafana Explore, а также на вывод запросов logcli к Grafana Loki. Таким образом, line_format играет ключевую роль в подготовке данных для дальнейшего анализа и отображения.
Как это работает
line_format в LogQL — это механизм для перезаписи строки лога с использованием шаблонов Go. Этот шаг выполняется после парсера, который извлекает поля логов в временные метки. Эти метки затем используются для формирования выходной строки лога с помощью синтаксиса шаблонов Go, например, | json | line_format "{{.level}} {{.message}}". Также можно использовать условную логику, добавляя префиксы или суффиксы к строкам логов в зависимости от определённых условий.
Когда применять
line_format следует использовать после парсера, который извлекает поля логов. Это позволяет стандартизировать формат логов, что делает их более читаемыми и удобными для анализа. Также можно использовать условную логику, добавляя префиксы или суффиксы к строкам логов в зависимости от определённых условий.
Типичные ошибки
Одной из распространённых ошибок при использовании line_format является слишком широкий выбор stream selector, например, {job=~".*"}, что может привести к ненужному сканированию всех логов. Кроме того, использование регулярных выражений вместо литералов может замедлить обработку логов. Также важно использовать | json для JSON-логов, чтобы автоматически извлекать все поля, вместо поиска полей с помощью регулярных выражений. Наконец, путаница между label-фильтрами {k="v"} и line-фильтрами | k="v" может привести к неправильной интерпретации данных.