Использование переменных и преобразований в корреляции
Прежде чем начать
В этом примере описывается создание ссылки в тестовом источнике данных, но те же принципы применимы к любому источнику данных.
Пример воспроизводит сценарий с двумя источниками данных:
- Логи, содержащие строки в формате: «2020-01-01 10:00 level=error message=error service=app1.loginService», хранящиеся в поле с именем «msg»
- Метрики приложения, включённого в имя сервиса строки лога (например, app1)
Приведённые ниже инструкции показывают, как настроить ссылку, которая может выполнять запрос метрик для хоста, указанного в каждой строке лога, с помощью провижининга и преобразования regex. Кроме того, настраивается ссылка с запросом, содержащим полное имя сервиса, чтобы продемонстрировать преобразование logfmt.
Использование переменных и преобразований при провижининге
-
Добавьте следующую конфигурацию провижининга в вашу Grafana:
datasources: - name: Target uid: test-target type: testdata - name: Source uid: test-source type: testdata - name: Source uid: test-source type: testdata correlations: - targetUID: test-target label: App metrics description: Application HTTP request metrics config: type: query target: scenario_id: random_walk alias: $${application} field: msg transformations: - type: regex field: msg expression: service=(\w+)\.\w+ mapValue: application - targetUID: test-target label: Service metrics description: Service metrics config: type: query target: scenario_id: random_walk alias: $${service} field: msg transformations: - type: logfmt field: msgСоздаются два источника данных: Source (эмулирующий источник данных логов) и Target (эмулирующий источник данных метрик):
- Создаётся корреляция под названием «App metrics», нацеленная на источник данных Target по его UID.
- Метка и описание задаются как текст
- Каждая корреляция содержит следующую конфигурацию:
- Обязательный тип корреляции (query)
- Целевой запрос, соответствующий модели тестового источника данных
- Корреляция «App metrics» содержит следующую конфигурацию:
- Alias задан как переменная ${application} (обратите внимание, что в файлах провижининга символ $ используется для доступа к переменным окружения, поэтому его нужно экранировать).
- Создаётся преобразование с помощью регулярного выражения для извлечения значений из поля «msg»
- Преобразование с помощью регулярного выражения используется для захвата имени приложения из полного имени сервиса, хранящегося в строке лога.
- Результат преобразования сопоставляется с переменной под названием «application».
- Корреляция «Service metrics» создаётся похожим образом, но с преобразованием logfmt, чтобы разобрать сообщение лога и получить доступ к полному имени сервиса (например, «app1.loginService»).
- Например, когда в качестве входных данных передаётся строка лога «2020-01-01 10:00 level=error message=error service=app1.loginService», преобразование создаёт новые переменные: level, message и service.
- Переменная «service» используется как alias в целевом запросе.
- Создаётся корреляция под названием «App metrics», нацеленная на источник данных Target по его UID.
-
Перейдите в Explore и откройте источник данных «Source».
-
Выберите сценарий «Raw Frames» и укажите следующие фреймы данных, чтобы эмулировать возврат строк логов:
[ { "meta": { "preferredVisualisationType": "logs" }, "fields": [ { "name": "time", "values": [1, 2] }, { "name": "msg", "values": [ "level=error msg=error service=app1.loginService", "level=debug msg=info service=app2.userProfileService" ] } ] } ] -
Выполните запрос и откройте подробности лога, нажав на строку лога.
Ссылки корреляций в панели логов Рядом с переменными, извлечёнными из строки лога с помощью преобразований, отображаются ссылки «App metrics» и «Service metrics»
-
Нажмите на ссылку «App metrics».
-
Откроется разделённое представление и выполнится целевой запрос.
-
Обратите внимание, как имя приложения из строки лога подставляется в свойство alias целевого запроса.
Интерполированный целевой запрос Это позволяет выполнять конкретный запрос на основе исходных результатов:
Результаты интерполированного целевого запроса -
Вернитесь к исходному запросу и измените предпочтительный тип визуализации raw frames на «table», чтобы увидеть, как ссылки отображаются в визуализации «Таблица».
[ { "meta": { "preferredVisualisationType": "table" }, "fields": [...] } ] -
Выполните запрос и обратите внимание, как ссылки создаются в ячейке таблицы:
Ссылки корреляций в таблице