#time-series #grafana #influxdb #influxql
Вопрос:
Я пытался написать простой запрос FluxQL в панели мониторинга Grafana, который использует переменную m1(типа константа)(которая содержит имя измерения).
Я создал переменную m1 в панели мониторинга grafana переменные m1 = мое измерение
и попытался выполнить следующие запросы, но ни один из них не сработал, и они либо говорят об ошибке запроса выражения, либо об отсутствии данных), т. е.
SELECT count("fails") FROM "/^${m1:raw}$/" SELECT count("fails") FROM "/^${m1}$/" SELECT count("fails") FROM $m1" (expression request error) SELECT count("fails") FROM "$m1" SELECT count("fails") FROM "${m1}"
Единственный запрос работал без переменных панели мониторинга
SELECT count("fails") FROM "my-measurement"
Как я могу использовать переменные для работы с этим запросом.
На аналогичной основе я попытался создать пользовательскую переменную(myVar), для которой мы принимаем целочисленные входные значения от пользователя, и на этой основе должно работать предложение where, но возникает та же ошибка: либо нет данных, либо ошибка запроса выражения. То, что я пытался, было
SELECT count(*) from "my-measurement-2" WHERE ("value" gt; $myVar)
Как я должен решать эти проблемы?Пожалуйста, помогите
Ответ №1:
У вас могут возникнуть проблемы с
1.) синтаксис
SELECT count("fails") FROM "${m1:raw}"
2.) данные
Вы можете исправить синтаксис запроса, но запрос может быть очень неэффективным. Выполнение запроса может потребовать много времени — поэтому лучше иметь фильтр времени, который будет использовать выбранный диапазон времени панели мониторинга (убедитесь, что у вас есть некоторые данные в этом диапазоне времени).
SELECT count("fails") FROM "${m1:raw}" WHERE $timeFilter
3.) Конфигурация панели Grafana
Убедитесь, что вы используете подходящую панель — для запроса выше Stat
панель является хорошим вариантом (этот запрос возвращает только одно значение, а не временные ряды, поэтому типы панелей временных рядов могут иметь проблемы с этим).
Как правило, используйте инспектор запросов, чтобы увидеть, как интерполируются переменные — может быть «магия», которая неочевидна, например, кавычки, которые добавляются вокруг числовых переменных, поэтому тогда это фильтрация строк, а не числовая фильтрация на уровне InfluxDB.