March 30, 2021

Глюк связки Grafana и Loki

У связки Grafana+Loki есть занятный глюк. Если вам надо получить значение какой-то метки в переменную в Grafana, то вы можете выбрать как источник данных свой Loki и использовать весьма простое выражение:

label_values(label1)

И на выходе у вас в переменной все варианты метки label1 для записей логов в базе.

Но вот если вам надо получить значения с поправкой на определенный отбор, например той же метки label1, но только для логов, где метка envarinment имеет значение "prod", то логично использовать такое выражение

label_values({envarinment="prod"},label1)

Проблема в том, что это не работает. Он не вернет ошибку, но и никаких значений тоже не даст. Почему? Да кто бы его знал, на эту тему на github-ах Grafana и Loki пачка целая тикетов.

Все обходят это через костыль, основанный на том, что метки как логов, так и метрик - одинаковые. И скажем если у вас как источник метрик настроен Prometheus или VictoriaMetrics, то вы просто выбираете его, скармливаете ему это же выражение и он отлично подхватывает значения метки. А потому уже у панелей с источником данных Loki в выражениях используются эти же переменные, полученные в реальности из метрик.

Там и мы обходим, что поделаешь.