Аннотации InfluxDB
Аннотации накладывают данные о событиях на графики дашборда, помогая сопоставлять события с метриками. Вы можете использовать InfluxDB в качестве источника данных для аннотаций, чтобы отображать на визуализациях такие события, как развёртывания, оповещения и другие значимые события.
Общую информацию об аннотациях см. в разделе Аннотирование визуализаций.
Прежде чем начать
Перед созданием аннотаций InfluxDB убедитесь, что у вас есть:
- Источник данных InfluxDB, настроенный в Grafana
- Данные в InfluxDB, содержащие информацию о событиях с полями отметок времени
- Доступ на чтение к базе данных или бакету InfluxDB, содержащему ваши события
Создание запроса аннотации
Чтобы добавить аннотацию InfluxDB на дашборд:
- Перейдите к дашборду, который хотите изменить, и нажмите Edit.
- Нажмите значок Add new element (синий плюс).
- Нажмите Annotation query.
- Введите имя запроса аннотации.
- Если вы не хотите использовать запрос аннотации сразу, снимите флажок Enabled.
- Выберите цвет маркеров событий аннотации.
- Выберите вариант в раскрывающемся списке Show annotation controls in, чтобы определить, где на дашборде отображаются элементы управления аннотацией.
- Выберите вариант в раскрывающемся списке Show in, чтобы определить, на каких панелях отображается аннотация.
- Нажмите Open query editor, чтобы открыть диалоговое окно Annotation Query.
- Выберите ваш источник данных InfluxDB в раскрывающемся списке Data source.
- Настройте запрос аннотации и сопоставления полей.
- (Необязательно) Нажмите Test annotation query, чтобы убедиться, что запрос работает правильно.
- Нажмите Close, когда закончите настройку запроса.
- Нажмите Save.
- (Необязательно) Введите описание внесённых изменений.
- Нажмите Save.
- Нажмите Exit edit.
Аннотации InfluxQL
Для источников данных, настроенных на InfluxQL, напишите запрос InfluxQL в поле InfluxQL Query. Ваш запрос должен содержать WHERE $timeFilter, чтобы ограничить результаты диапазоном времени дашборда.
Сопоставления полей
Сопоставления полей указывают Grafana, какие столбцы InfluxDB содержат данные аннотации. Если запрос возвращает только один столбец, заполнять поля сопоставления не нужно.
Пример запроса аннотации InfluxQL
Следующий запрос извлекает события развёртывания и отображает их как аннотации:
SELECT title, description
FROM events
WHERE $timeFilter
ORDER BY time ASC
Пример аннотации-диапазона
Чтобы отображать события с длительностью как затенённые области:
SELECT description, tags, end_time
FROM maintenance_windows
WHERE $timeFilter
ORDER BY time ASC
Настройте сопоставления полей следующим образом:
- Text:
description - Tags:
tags - TimeEnd:
end_time
Аннотации Flux
Для источников данных, настроенных на Flux, аннотации используют стандартный редактор запросов Flux. Напишите запрос Flux, возвращающий фреймы данных с полями времени, текста и, необязательно, тегов.
Пример запроса аннотации Flux
from(bucket: "events")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "deployments")
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
Grafana обрабатывает полученные фреймы данных как события аннотаций. Убедитесь, что запрос возвращает столбец _time и хотя бы один текстовый столбец.
Аннотации SQL
Источники данных, настроенные на SQL (InfluxDB 3.x), используют стандартный редактор запросов аннотаций Grafana. Напишите SQL-запрос, возвращающий столбец времени и хотя бы один текстовый столбец. Используйте макрос $__timeFilter(time), чтобы ограничить результаты диапазоном времени дашборда.
Пример запроса аннотации SQL
SELECT time, title, description
FROM events
WHERE $__timeFilter(time)
ORDER BY time ASC
Пример аннотации-диапазона SQL
Чтобы отображать события с длительностью как затенённые области, верните и время начала, и время окончания:
SELECT time, end_time, description, tags
FROM maintenance_windows
WHERE $__timeFilter(time)
ORDER BY time ASC
Настройте сопоставления полей:
- Text:
description - Tags:
tags - TimeEnd:
end_time
Использование шаблонных переменных в аннотациях
Вы можете использовать шаблонные переменные в запросах аннотаций, чтобы фильтровать аннотации на основе выбранных на дашборде значений переменных. Например:
SELECT title, description
FROM events
WHERE $timeFilter AND environment = '$environment'
ORDER BY time ASC
Если аннотации не отображаются или возникают ошибки, см. раздел Устранение неполадок источника данных InfluxDB.