Перейти к содержимому
Последнее обновление

Поиск по журналам и трассировкам

Страница Discover предоставляет возможности поиска и анализа, аналогичные Kibana Discover, и оптимизирована для высокопроизводительного анализа журналов.

Основные возможности:

  • Поддержка синтаксиса запросов SQL и Lucene
  • Переход от записи журнала к связанной трассировке одним щелчком
  • Интерактивный выбор временного диапазона, фильтров и других параметров
  • Отображение результатов в виде таблицы и JSON
  • Просмотр соседних записей для анализа контекста выбранной записи
  • Статистика распределения значений полей (5 наиболее частых значений с долями в процентах)

Обзор страницы Discover​

Обзор страницы Discover

Страница Discover состоит из четырёх основных областей:

1. Область ввода запроса (вверху)​

Позволяет задать область поиска и поисковое выражение. Доступные возможности:

  • Выбор источника данных
  • Выбор поля времени и временного диапазона
  • Ввод условий поиска с использованием синтаксиса SQL или Lucene

2. Область динамики во времени (в центре)​

Гистограмма, показывающая распределение результатов запроса во времени. Доступные возможности:

  • Быстрая оценка того, как меняется количество подходящих записей со временем
  • Выделение мышью временного окна для изменения временного диапазона запроса

3. Область подробных данных (внизу)​

Отображает подробные записи из результатов запроса и позволяет исследовать их контекст. Доступные возможности:

  • Просмотр самых свежих подходящих записей; при наличии trace_id можно нажать на него, чтобы просмотреть сведения о трассировке
  • Раскрытие отдельной записи журнала для просмотра всех полей в виде таблицы или JSON
  • Интерактивное формирование условий фильтрации в табличном представлении
  • Просмотр соседних записей для выбранной записи

4. Область обозревателя полей (слева)​

Отображает все поля текущей таблицы и позволяет исследовать каждое из них.

Доступные возможности:

  • Выбор полей для отображения справа; по умолчанию отображается _source (объединённое содержимое всех полей)
  • Просмотр 5 наиболее частых значений и их долей в процентах при наведении указателя на поле
  • Интерактивное формирование условий фильтрации нажатием "+" или "-" рядом со значением; условия синхронизируются со строкой запроса вверху

Ввод запроса​

В области ввода запроса выберите в раскрывающихся списках источник данных, базу данных, таблицу, поле времени и временной диапазон. Значения по умолчанию для источника данных, базы данных и таблицы можно изменить на странице конфигурации; по умолчанию полем времени служит первый столбец таблицы типа DATETIME или DATE.

Демонстрация ввода запроса

Поле поиска поддерживает синтаксис SQL и Lucene; при обработке выражения Lucene преобразуются в условия SQL WHERE. Ниже показано соответствие между поддерживаемым синтаксисом Lucene, Kibana и SQL.

ВозможностьСинтаксис Lucene в Doris AppKibanaSQL WHEREПримечания
Поиск по ключевому слову в одном полеservice_name:kafkaАналогичноservice_name MATCH 'kafka'Точное совпадение по полю, преобразуется в service_name MATCH_ANY 'kafka'
Поиск по ключевому слову в нескольких поляхerrorАналогично(service_name MATCH 'error') OR (scope_name MATCH 'error')Полнотекстовый поиск по всем полям с инвертированным индексом, автоматически преобразуется в MATCH_ANY по нескольким полям
Поиск по фразе в одном полеservice_name:"kafka logs"Аналогичноservice_name MATCH_PHRASE 'kafka logs'Поиск по фразе на уровне поля
Поиск по фразе в нескольких полях"kafka logs"Аналогичноservice_name MATCH_PHRASE 'kafka logs')Точный поиск по фразе, преобразуется в MATCH_PHRASE
Подстановочный знакkaf*Аналогично((service_name MATCH_PHRASE_PREFIX 'kaf') OR (scope_name MATCH_PHRASE_PREFIX 'kaf'))Подстановочный знак в префиксе/суффиксе, преобразуется в MATCH_PHRASE_PREFIX
Числовой / временной диапазонduration:[100 TO 500]Аналогичноduration BETWEEN 100 AND 500Преобразуется в SQL BETWEEN
Неограниченный диапазонduration:>500Аналогичноduration > '500'Преобразуется в сравнение SQL
Открытый / закрытый диапазон{100 TO 200}АналогичноФигурные скобки обозначают открытый интервал
Объединение через ANDservice_name:kafka AND status:failedАналогично(service_name MATCH 'kafka') AND (status MATCH 'failed')Логическое AND
Объединение через ORerror OR warningАналогичноЛогическое OR
Объединение через NOTNOT kafka or -kafkaАналогичноNOT (service_name MATCH 'kafka')Логическое NOT
Группировка(service_name:kafka OR service_name:zookeeper) AND status:failedАналогично((service_name MATCH 'kafka') OR (service_name MATCH 'zookeeper')) AND (status MATCH 'failed')Поддержка сложных логических комбинаций

Основные особенности синтаксиса Lucene:

  1. Базовая форма: field_name:match_condition.
  2. С помощью field_name: одно поле сопоставляется с условием match_condition. Без field_name: отдельное условие match_condition считается выполненным, если оно выполняется хотя бы для одного поля (OR между полями).
  3. Для текстовых значений match_condition может принимать три формы:
    1. Условие в двойных кавычках задаёт поиск по фразе: все слова должны идти в том же порядке, что и внутри кавычек.
    2. Условие без кавычек задаёт поиск по ключевым словам: достаточно совпадения любого из слов.
    3. * обозначает подстановочный знак.
  4. Для числовых значений и дат match_condition может принимать три формы:
    1. Одно значение задаёт проверку на равенство.
    2. >, < задают диапазон, как и в SQL.
    3. Скобки обозначают интервалы: квадратные задают закрытый интервал, фигурные задают открытый.
  5. Несколько условий можно объединять с помощью AND / OR / NOT, как и в SQL. Скобки позволяют менять порядок группировки условий.

Основные особенности синтаксиса SQL:

  1. MATCH и MATCH_ANY соответствуют поиску по ключевым словам в Lucene: достаточно совпадения любого из ключевых слов (связь OR).
  2. MATCH_ALL тоже задаёт поиск по ключевым словам, но совпасть должны все ключевые слова (связь AND).
  3. MATCH_PHRASE соответствует поиску по фразе в Lucene: все слова должны идти в том же порядке.
  4. В запросах на равенство и диапазон используются стандартные операторы =, >, <, BETWEEN.
  5. Несколько условий можно объединять с помощью AND / OR / NOT, меняя приоритет с помощью скобок.

Динамика данных во времени​

Область, выделенная на изображении ниже красной рамкой, показывает динамику данных во времени. Она позволяет быстро оценить количество подходящих записей и его изменение со временем. Доступны следующие действия:

  1. Наведите указатель на столбец, чтобы увидеть время начала временного интервала и количество подходящих записей в нём.
  2. Выделите мышью участок диаграммы, чтобы изменить временной диапазон запроса.
  3. По умолчанию длительность интервала имеет значение Auto и подбирается в зависимости от общего временного диапазона. В раскрывающемся списке можно выбрать другую детализацию, например секунды, минуты или часы.

Демонстрация динамики во времени

Подробные данные​

Область, выделенная на изображении ниже красной рамкой, содержит подробные данные и отображает записи, соответствующие условиям запроса.

  1. Записи отсортированы по полю времени в порядке убывания, поэтому сначала отображаются самые новые данные. На каждой странице отображается 50 записей; остальные можно просмотреть, переходя между страницами. По умолчанию показаны два поля: поле времени и _source, где _source представляет собой виртуальное объединение всех полей в виде пар key: value; для удобства чтения ключи выделены. Поля, отображаемые справа, можно настроить, нажав "+" рядом с именем поля в обозревателе полей слева. Можно добавить несколько полей и удалять их, нажимая "x" справа; после удаления всех полей снова отображается поле по умолчанию _source.

Демонстрация подробных данных

  1. Нажмите стрелку "->" в крайнем левом столбце, чтобы раскрыть сведения о записи. Доступны два представления: Таблица и JSON. В представлении «Таблица» нажимайте "+" или "-" рядом с полем, чтобы интерактивно добавлять условия фильтрации, например severity_text=INFO.

Демонстрация раскрытия записи

  1. Раскрыв запись, нажмите Соседние записи, чтобы просмотреть её «контекст»: по 5 записей до и после неё по времени. Эту функцию обычно используют для изучения журналов рядом с конкретной записью при анализе проблем, поэтому она игнорирует все условия фильтрации запроса, кроме времени; иначе её поведение совпадало бы с таблицей подробных данных. При необходимости можно просмотреть больше 5 соседних записей и добавить собственные фильтры, например ограничить поиск определённым хостом.

Демонстрация просмотра контекста

  1. Если у записи есть поле trace_id, она распознаётся как связанная с трассировкой. Значение поля становится ссылкой; нажатие на неё открывает выдвижную панель с каскадной диаграммой трассировки для сопоставления записи журнала с трассировкой.

Демонстрация перехода от журнала к трассировке

Обозреватель полей​

Обозреватель полей слева позволяет просматривать поля текущей таблицы и анализировать распределение их значений.

  1. Нажмите "+" справа от поля, чтобы добавить его в таблицу подробных данных.
  2. Нажмите имя поля, чтобы увидеть 5 наиболее частых значений, и нажмите "+" / "-" рядом со значением, чтобы динамически добавить условия фильтрации.

Демонстрация обозревателя полей