Поиск по Единицам данных и Пространствам поиска
Единица данных задает имя индекса, индекс-паттерна или таблицы хранилища. Пространство поиска объединяет несколько Единиц данных, например свежие события из внутреннего хранилища и архив из ClickHouse. Запрос обращается к этому имени, а параметры подключения и физическая привязка хранятся в конфигурации.
Подключение, Единица данных и Пространство поиска
| Объект | Что задаёт | Пример |
|---|---|---|
| Подключение | Хранилище и параметры доступа к нему | system_os — внутреннее хранилище; ch_events — ClickHouse |
| Единица данных | Подключение, физический объект и необязательное поле времени | audit_events → индексы auditd-* через system_os |
| Пространство поиска | Список Единиц данных или маски их имён | security_events → audit_events, ch_audit_events |
Единицы данных описывают существующие источники. Их создание не создаёт таблицы и индексы, не переносит события и не настраивает ротацию или репликацию. За хранение и срок жизни данных отвечают настройки самого хранилища.
Поиск поддерживает Единицы на внутреннем Smart Monitor Data Storage через system_os и на ClickHouse.
Поиск по Единице с Подключением к внешнему OpenSearch не поддерживается.
Для поиска по одной Единице создавать Пространство не требуется. Единица внутреннего хранилища может указывать один индекс, алиас или индекс-паттерн; Единица ClickHouse — одну таблицу. Сохранение Единицы не проверяет наличие физического источника: запрос к отсутствующему индексу может вернуть пустую выдачу, к отсутствующей таблице ClickHouse — ошибку хранилища.
Включение поиска
Поиск по Единицам и Пространствам включает динамическая кластерная настройка sme.core.data_units.search_enabled. По умолчанию она выключена. Администратор может включить её в Консоли разработчика:
PUT _cluster/settings
{
"persistent": {
"sme.core.data_units.search_enabled": true
}
}
Создание и редактирование трёх сущностей, проверка Подключений и сбор статистики работают при любом значении настройки. При выключенной настройке поиск не разрешает имена Единиц и Пространств.
Перед включением проверьте совпадения имён Пространств, Единиц и индексов. Когда поиск включён, короткое имя сначала ищется среди Пространств, затем среди Единиц и только затем используется как индекс-паттерн. Создание объекта с совпадающим именем может изменить источник уже сохранённого запроса.
Как указать источник
Явные формы выбирают тип источника:
source du:audit_events
source ss:security_events
Для короткого имени действует приоритет Пространство → Единица → индекс-паттерн:
source security_events
Имена чувствительны к регистру. Маска в source, например source audit_*, остаётся индекс-паттерном и не раскрывается в набор Единиц. Маски имён Единиц задаются в составе Пространства, в поле du_refs.
Если имя совпадает с ключевым словом SML, используйте кавычки вокруг явной ссылки: source 'du:count'. Имена индексов ss и du заключайте в кавычки: source 'ss'.
Неизвестное имя с du: или ss: даёт ошибку. Короткое неизвестное имя может перейти в поиск по индексам и вернуть пустую выдачу. Если объект существует, но недоступен, перехода к одноимённому индексу нет.
Единицу или Пространство нельзя перечислить через запятую с другими источниками либо применить к ним exclude(...). Для объединения Единиц задайте Пространство поиска.
Имена источников
Имена Единиц и Пространств содержат от 1 до 256 символов: латинские буквы, цифры и _; одиночные точки и дефисы разделяют непустые части имени. Первая часть имени должна содержать хотя бы одну букву или _. Поэтому 2026_logs, _archive и archive.2026 допустимы, а 123 и 1-archive — нет. Имена clk, had, elk, os, db и api зарезервированы без учёта регистра.
Состав Пространства
В состав входят имена Единиц или маски их имён с *, без префикса du:. Например, audit_* выбирает все подходящие Единицы, доступные пользователю. Состав определяется при каждом запросе: новая подходящая Единица включается автоматически. Маска учитывает регистр и не ищет индексы или таблицы напрямую. Если Единица подходит под несколько масок или указана явно, она участвует один раз.
Число участвующих Единиц ограничивает настройка sme.core.search_spaces.max_branches: по умолчанию 32, допустимо от 1 до 128. При превышении предела поиск завершается ошибкой.
Поле времени и временное окно
Поле времени выбирается в следующем порядке:
timefieldв командеsource.- Непустое
time_fieldв Единице данных. dtFieldNameпоискового запроса.- Значение кластерной настройки по умолчанию.
Параметры earliest и latest в source переопределяют границы dtStart и dtEnd запроса. У Пространства собственного поля времени нет: каждая Единица использует своё, пока timefield не задан явно для всего запроса.
Если во всех Единицах время события хранится в поле event_time, его можно указать для всего Пространства:
source ss:security_events timefield=event_time earliest="now-1d" latest="now" qsize=1000
| table host, action
Явный timefield должен подходить всем Единицам Пространства. Если поле отсутствует или имеет неподходящий тип, результат может оказаться пустым. Поиск выдаёт предупреждение, когда может определить проблему по карте полей.
Объединение результатов
При поиске по нескольким Единицам результаты объединяются по времени; по умолчанию новые события идут первыми. qsize ограничивает общую выдачу, также действует кластерный предел maxQsize. Команды после source, включая stats, обрабатывают уже выбранные строки.
Если разные Единицы указывают на пересекающиеся физические источники, одно событие может встретиться в результате несколько раз.
Пространство, в котором после разрешения состава осталась одна доступная Единица, выполняется как поиск по этой Единице: без объединения строк и ограничения набора агрегатных функций для нескольких Единиц.
Агрегации
Секции aggs и timeaggs считают на стороне хранилищ, затем результаты сводятся. Для фильтрации и группировки по нескольким Единицам выбирайте поля с одинаковыми именами и совместимыми типами в участвующих источниках. Для Пространства с несколькими участвующими Единицами поддерживаются:
| Секция | Функции |
|---|---|
aggs | count, sum, min, max, avg, values, dc |
timeaggs | count, sum, min, max, avg |
avg учитывает сумму и количество значений во всех участвующих Единицах. Функции median, perc, earliest и latest в этих секциях над несколькими Единицами не поддерживаются. Это ограничение агрегатных функций; опции временного окна earliest и latest в source поддерживаются.
source ss:security_events earliest="now-1d" latest="now"
| aggs count by host
У values предел — 10 000 уникальных значений. При усечении объединённого списка выдаётся предупреждение. dc в aggs над Пространством вычисляется объединением списков: если хотя бы одна Единица отдаёт 10 000 или больше уникальных значений в группе, точность не гарантируется и значение этой группы остаётся пустым с предупреждением. Даты из разных хранилищ с различающимся представлением могут считаться разными значениями.
Количество групп и ограничения самого хранилища действуют отдельно от предела values. Превышение числа корзин агрегирования может привести к ошибке запроса к отдельной Единице. При частичном ответе агрегат отражает только участвовавшие данные.
Неполный результат и отказы
Недоступная или некорректная явно указанная Единица может выпасть из состава с предупреждением. В маску включаются только Единицы, доступные пользователю. Если не осталось пригодных Единиц или отказали все запросы к ним, поиск завершается ошибкой.
При отказе части запросов возможен результат от остальных Единиц с предупреждениями.
Права доступа
Кластерные разрешения Подключений, Единиц данных и Пространств поиска перечислены в справочнике ролей.
Права на Пространство и его Единицы проверяются раздельно. Разрешение читать Пространство не открывает все входящие в него Единицы. При создании владельцем объекта становится автор; доступ другим пользователям и ролям задаётся владельцем отдельно.
Для внутреннего хранилища дополнительно нужны права пользователя на физические индексы.
При поиске по ClickHouse используется учётная запись Подключения. Её доступ к таблицам настраивается в ClickHouse.
Статистика источников
Статистика Единицы описывает её физический источник: объём, количество строк, диапазон времени и схему. Это сохранённый снимок, который собирается раз в пять минут, независимо от включения поиска. Чтение статистики не запускает новый поиск. При ручном обновлении снимок моложе 60 секунд по умолчанию возвращается без повторного сбора.
При неудачном сборе отдельный показатель может сохранить прежнее значение и время сбора. После десяти минут снимок считается устаревшим, но продолжает возвращаться. Проверяйте время и статус показателя: отсутствие значения не означает ноль, а полный сбор основных показателей не гарантирует наличия всех сведений об источнике.
У внутреннего хранилища объём данных отражает размер основных шардов, а объём на диске — размер с репликами. Для ClickHouse оба показателя берутся из размера таблицы и не обозначают объём несжатых исходных событий. Для движков Replicated и Distributed доступен ограниченный набор статистики. У фильтрованного алиаса количество строк и диапазон времени учитывают фильтр, а размеры относятся к индексам под алиасом.
Кластерные настройки
Параметры изменяются динамически через /_cluster/settings. Указывайте полное имя параметра в разделе persistent, как в примере включения поиска. Чтобы вернуть значение по умолчанию, передайте null вместо значения.
Поиск и конфигурации
| Параметр | По умолчанию | Назначение |
|---|---|---|
sme.core.data_units.search_enabled | false | Включает поиск по именам Единиц данных и Пространств |
sme.core.search_spaces.max_branches | 32 | Максимальное число Единиц в поисковом запросе к Пространству; от 1 до 128 |
sme.core.default_connection | system_os | Имя Подключения по умолчанию, возвращаемое при чтении параметров хранилища |
sme.core.system_connections.index_name | .sm_sme_system_connections | Индекс, из которого SME читает конфигурации Подключений |
sme.core.data_units.index_name | .sm_sme_data_units | Индекс, из которого SME читает конфигурации Единиц данных |
sme.core.search_spaces.index_name | .sm_sme_search_spaces | Индекс, из которого SME читает конфигурации Пространств поиска |
Сбор состояния и статистики
| Параметр | По умолчанию | Назначение |
|---|---|---|
sme.core.data_unit_state.schema_max_fields | 1000 | Максимальное число полей в снимке схемы; от 1 до 10 000 |
sme.core.data_unit_state.schema_max_indices_per_field | 20 | Максимальное число имён индексов у одного поля схемы; от 1 до 1000 |
sme.core.data_unit_state.opensearch_request_timeout | 30s | Ожидание одного запроса к внутреннему хранилищу при сборе статистики; от 1s до 10m |
sme.core.data_unit_state.clickhouse_query_timeout | 30s | Срок выполнения одного запроса статистики к ClickHouse; от 1s до 10m |
sme.core.data_unit_state.clickhouse_connect_timeout | 10s | Ожидание установки соединения с ClickHouse при сборе статистики; от 1s до 2m |
sme.core.data_unit_state.clickhouse_connection_budget | 120s | Общий срок сбора по одному Подключению ClickHouse, без установки соединения и ожидания очереди; от 10s до 10m |
sme.core.data_unit_state.connection_check_timeout | 5s | Срок проверки доступности одного Подключения при плановом или ручном обновлении статусов; от 1s до 1m |
sme.core.data_unit_state.refresh_min_age | 60s | Минимальный возраст снимка или статуса Подключения для повторного ручного сбора; от 0s до 1h, 0s отключает ограничение |
sme.core.data_unit_state.refresh_response_timeout | 45s | Ожидание ответа ручного обновления; от 1s до 10m. После истечения срока сбор может продолжаться в фоне |
sme.core.data_unit_state.refresh_lock_duration | 300s | Срок блокировки одновременного ручного сбора одного объекта; от 10s до 1h |
sme.core.data_unit_state.refresh_max_ids | 1000 | Максимальное число уникальных имён объектов в одном ручном обновлении; от 1 до 1000 |