Переменные шаблонов OpenTSDB
Вместо того чтобы жёстко задавать имена серверов, приложений и датчиков в запросах метрик, можно использовать переменные шаблонов. Переменные отображаются в виде раскрывающихся меню в верхней части дашборда, поэтому вы можете менять отображаемые данные без редактирования запросов.
Введение в переменные шаблонов см. в документации Переменные.
Переменная запроса
Источник данных OpenTSDB поддерживает переменные шаблонов типа «запрос», которые получают значения напрямую из OpenTSDB. Такие переменные динамически заполняются на основе данных вашей базы OpenTSDB.
Поддерживаемые функции запросов
Note
Функции
tag_namesиtag_valuesиспользуют API поиска (lookup) OpenTSDB, который требует наличия метрик в базе данных. Функцииsuggest_tagkиsuggest_tagvиспользуют API suggest, который выполняет поиск по всем метрикам.
Создание переменной запроса
Чтобы создать переменную запроса:
- Перейдите к дашборду, который нужно изменить, и нажмите Edit.
- Нажмите значок Add new element (синий знак «плюс»).
- Нажмите Variable.
- Выберите Query в качестве типа переменной.
- Введите Name для переменной (например,
host). - Выберите вариант в раскрывающемся списке Display, чтобы задать, где на дашборде отображается переменная.
- Нажмите Open variable editor, чтобы открыть диалоговое окно Query Variable.
- Выберите источник данных OpenTSDB.
- Введите запрос, используя одну из поддерживаемых функций запросов.
- Нажмите Close, когда закончите настройку запроса.
- (Необязательно) Настройте Multi-value, чтобы разрешить выбор нескольких значений.
- (Необязательно) Настройте Include All value, чтобы добавить вариант «All».
- (Необязательно) Включите переключатель Allow custom values, чтобы пользователи могли вводить собственные значения переменной.
- Нажмите Save.
- (Необязательно) Введите описание внесённых изменений.
- Нажмите Save.
- Нажмите Exit edit.
Примеры переменных запросов
Список всех метрик:
metrics()
Возвращает все имена метрик в вашей базе OpenTSDB. Полезно для создания селектора метрик.
Список метрик с префиксом:
metrics(sys.cpu)
Возвращает метрики, начинающиеся с sys.cpu, например sys.cpu.user, sys.cpu.system, sys.cpu.idle.
Список ключей тегов для метрики:
tag_names(sys.cpu.user)
Возвращает ключи тегов, такие как host, env, datacenter, которые существуют у метрики sys.cpu.user.
Список значений тегов для метрики и ключа тега:
tag_values(sys.cpu.user, host)
Возвращает все значения host для метрики sys.cpu.user, например webserver01, webserver02, dbserver01.
Поиск ключей тегов по префиксу:
suggest_tagk(host)
Возвращает ключи тегов, соответствующие host, по всем метрикам, например host, hostname, host_id.
Поиск значений тегов по префиксу:
suggest_tagv(web)
Возвращает значения тегов, соответствующие web, по всем метрикам, например webserver01, webserver02, web-prod-01.
Если переменные шаблонов не заполняются в разделе Preview of values, см. Устранение неполадок.
Вложенные переменные шаблонов
Одну переменную шаблона можно использовать для фильтрации значений другой. Так создаются каскадные фильтры: например, сначала выбирается дата-центр, а затем отображаются только хосты в этом дата-центре.
Синтаксис фильтра
Функция tag_values принимает дополнительные фильтры по тегам после ключа тега:
tag_values(metric, tagkey, tag1=value1, tag2=value2, ...)
Используйте переменные шаблонов в качестве значений фильтра, чтобы создавать динамические зависимости:
tag_values(metric, tagkey, tag1=$variable1, tag2=$variable2)
Примеры вложенных переменных
Создание каскадных фильтров
Чтобы создать иерархию зависимых переменных:
-
Создайте родительскую переменную:
- Name:
datacenter - Query:
tag_values(sys.cpu.user, datacenter)
- Name:
-
Создайте дочернюю переменную:
- Name:
host - Query:
tag_values(sys.cpu.user, host, datacenter=$datacenter)
- Name:
-
Создайте дополнительные уровни по мере необходимости:
- Name:
cpu - Query:
tag_values(sys.cpu.user, cpu, datacenter=$datacenter, host=$host)
- Name:
Когда пользователи меняют выбранный дата-центр, переменная host автоматически обновляется, показывая только хосты в этом дата-центре.
Использование переменных в запросах
Ссылайтесь на переменные в запросах с помощью синтаксиса $variablename или ${variablename}. При выполнении запроса Grafana подставляет вместо переменной её текущее значение.
Где можно использовать переменные
Переменные можно использовать в следующих полях редактора запросов:
Варианты синтаксиса переменных
Многозначные переменные
Когда для переменной включён Multi-value, пользователи могут выбирать несколько значений одновременно. Источник данных OpenTSDB обрабатывает многозначные переменные, разделяя значения символом вертикальной черты (|), что совместимо с типом фильтра literal_or в OpenTSDB.
Настройка многозначных переменных
- При создании переменной включите Multi-value.
- При необходимости включите Include All option, чтобы добавить вариант «All».
- Используйте переменную в фильтре с типом фильтра
literal_or.
Пример многозначной переменной
При переменной host, настроенной как многозначная:
Если пользователь выберет webserver01, webserver02 и webserver03, значение фильтра станет webserver01|webserver02|webserver03.
Поведение значения All
Когда пользователь выбирает «All», Grafana отправляет все доступные значения, разделённые вертикальной чертой. Для больших наборов значений вместо этого рассмотрите использование фильтра с подстановочным символом:
Переменные интервала и автоинтервала
Grafana предоставляет встроенные переменные интервалов, полезные при прореживании в OpenTSDB:
Используйте их в поле интервала прореживания для автоматической подстройки интервала:
Дальнейшие шаги
- Стройте запросы, используя переменные шаблонов.
- Настройте алертинг с шаблонными запросами.
- Устраните неполадки, если переменные не заполняются.