Поиск по журналам и трассировкам
Страница Discover предоставляет возможности поиска и анализа, аналогичные Kibana Discover, и оптимизирована для высокопроизводительного анализа журналов.
Основные возможности:
- Поддержка синтаксиса запросов SQL и Lucene
- Переход от записи журнала к связанной трассировке одним щелчком
- Интерактивный выбор временного диапазона, фильтров и других параметров
- Отображение результатов в виде таблицы и JSON
- Просмотр соседних записей для анализа контекста выбранной записи
- Статистика распределения значений полей (5 наиболее частых значений с долями в процентах)
Обзор страницы 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 App | Kibana | SQL 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} | Аналогично | Фигурные скобки обозначают открытый интервал | |
| Объединение через AND | service_name:kafka AND status:failed | Аналогично | (service_name MATCH 'kafka') AND (status MATCH 'failed') | Логическое AND |
| Объединение через OR | error OR warning | Аналогично | Логическое OR | |
| Объединение через NOT | NOT 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:
- Базовая форма:
field_name:match_condition. - С помощью
field_name:одно поле сопоставляется с условиемmatch_condition. Безfield_name:отдельное условиеmatch_conditionсчитается выполненным, если оно выполняется хотя бы для одного поля (OR между полями). - Для текстовых значений
match_conditionможет принимать три формы:- Условие в двойных кавычках задаёт поиск по фразе: все слова должны идти в том же порядке, что и внутри кавычек.
- Условие без кавычек задаёт поиск по ключевым словам: достаточно совпадения любого из слов.
*обозначает подстановочный знак.
- Для числовых значений и дат
match_conditionможет принимать три формы:- Одно значение задаёт проверку на равенство.
>,<задают диапазон, как и в SQL.- Скобки обозначают интервалы: квадратные задают закрытый интервал, фигурные задают открытый.
- Несколько условий можно объединять с помощью AND / OR / NOT, как и в SQL. Скобки позволяют менять порядок группировки условий.
Основные особенности синтаксиса SQL:
MATCHиMATCH_ANYсоответствуют поиску по ключевым словам в Lucene: достаточно совпадения любого из ключевых слов (связь OR).MATCH_ALLтоже задаёт поиск по ключевым словам, но совпасть должны все ключевые слова (связь AND).MATCH_PHRASEсоответствует поиску по фразе в Lucene: все слова должны идти в том же порядке.- В запросах на равенство и диапазон используются стандартные операторы
=,>,<,BETWEEN. - Несколько условий можно объединять с помощью AND / OR / NOT, меняя приоритет с помощью скобок.
Динамика данных во времени
Область, выделенная на изображении ниже красной рамкой, показывает динамику данных во времени. Она позволяет быстро оценить количество подходящих записей и его изменение со временем. Доступны следующие действия:
- Наведите указатель на столбец, чтобы увидеть время начала временного интервала и количество подходящих записей в нём.
- Выделите мышью участок диаграммы, чтобы изменить временной диапазон запроса.
- По умолчанию длительность интервала имеет значение
Autoи подбирается в зависимости от общего временного диапазона. В раскрывающемся списке можно выбрать другую детализацию, например секунды, минуты или часы.

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

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

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

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

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