elasticstack_ru | Unsorted

Telegram-канал elasticstack_ru - Elastic Stack recipes

-

Полезности по Elastic Stack. Для тех, кто работает с ElasticSearch, Kibana, Logstash или Beats. Тут вы увидите статьи, видео, анонсы мероприятий, новости. Платные консультации, администрирование, поддержка, обучение и лицензии Elastic — @galssoftware

Subscribe to a channel

Elastic Stack recipes

Наш новый канал по Zabbix

Мы запустили новый канал @zabbix_ru, посвященный понятно какой системе. Будем публиковать полезные материалы, записи вебинаров, конференций, митапов, а также делиться собственным опытом. Пост там пока только один, но скоро будет много.

Читать полностью…

Elastic Stack recipes

Вышел OpenSearch 2.10

Мы непрерывно следим за обновлениями OpenSearch и вот уже вышла новая версия. Отличный темп и интересный функционал. По нашему мнению, отделение OpenSearch в полностью отдельную ветку пошло ему на пользу. В этом посте разбираемся что нового там появилось и анонсируем курс по OpenSearch 9-11 октября.

⚡️Удаленное хранилище для резервирования данных

В OpenSearch 2.10 появилось удаленное резервное хранилище, которое представляет собой альтернативу снапшотам или копиям реплик. Функционал дает возможность автоматически создавать резервные копии всех транзакций по каждому индексу на удаленном хранилище с использованием облачных сервисов по выбору (включая S3).

Удаленное хранилище интегрировано с репликацией сегментов OpenSearch. Это позволяет выбрать удаленное хранилище в качестве источника для репликации. А еще, в этом релизе репликация сегментов и индексов на удаленном хранилище поддерживает различные версии Lucene, что необходимо для rolling updates.

⚡️Повышение релевантности поиска

В OpenSearch 2.9 в GA перешли нейронный поиск и поисковые конвейеры. В 2.10 эти инструменты дополнены процессором нормализации и функцией гибридных запросов. Теперь можно повысить релевантность поиска, комбинируя оценки релевантности лексических запросов с векторными поисковыми запросами k-NN на основе естественного языка.

⚡️Доступ и анализ большего количества логов в Security Analytics с помощью пользовательских типов логов

С момента выпуска OpenSearch Security Analytics в инструментарий была добавлена поддержка ряда популярных источников логов безопасности. В этом релизе в OpenSearch учли пожелания коммьюнити, добавив пользовательские типы логов. Новый CRUD API позволяет определять собственные типы логов и использовать их так же, как и другие логи — для создания детекторов, пользовательских правил, дополнительных сопоставлений и т.д.

⚡️Превращение данных в выводы с помощью нового Discover

В релизе 2.10 улучшено удобство использования и значительно обновлен бэкенд инструмента Discover в Dashboards. Теперь есть возможность использовать как новую версию инструмента Discover, так и предыдущую. Предполагается, что новая версия будет использоваться по умолчанию начиная с OpenSearch 2.11.

⚡️Обогащение данных GeoIP

В этом релизе появился новый способ обогащения данных географической информацией. С помощью нового процессора IP2Geo OpenSearch может получать информацию о географическом положении IPv4- или IPv6-адреса и добавлять ее в поступающие данные во время их записи или обогащать данные позднее. Ранее OpenSearch получал географические IP-адреса из статической базы данных, которая могла устаревать. В этом процессоре доступ к актуальным географическим IP-адресам осуществляется из внешних баз данных, предоставляемых компанией MaxMind.

⚡️Повышение производительности поиска с помощью параллельного поиска по сегментам

При стандартном подходе OpenSearch выполняет поисковые запросы последовательно по всем сегментам на каждом шарде. В экспериментальной версии функции параллельного поиска по сегментам появилась возможность параллельного запроса к сегментам индекса на уровне шарда. Это снижает задержку для многих типов поисковых запросов, например, для длительных запросов, содержащих агрегированные данные или большие диапазоны.

Release Notes

OpenSearch Playground (песочница)

Загрузить новую версию

❗️Приглашаем вас на обновленный курс по OpenSearch, который состоится 9-11 октября. Программа курса по ссылке. Вопросы можно задать @galssoftware либо на почту welcome@gals.software.

Читать полностью…

Elastic Stack recipes

Вышел Elastic 8.10 & анонс курса по Elastic 20-22 сентября

Нежданно-негаданно, очень даже буднично, 12 сентября на сайте Elastic появился анонс новой версии. Присаживайтесь поудобнее, расскажем о том, что появилось нового в каждой из областей: Observability, Security, Search.

Observability

В Elastic Observability 8.10 представлены Elastic Universal Profiling уже в режиме GA и усовершенствования в Elastic AI Assistant для Observability.

Elastic Universal Profiling — это инструмент профилирования, который устраняет необходимость в инструментарии кода, перекомпиляции и перезапуска служб. Магия? Нет, просто он использует для получения данных eBPF. Инструмент профилирует строки кода, включая приложения, ядро и библиотеки сторонних разработчиков.

Elastic AI Assistant для Observability был представлен в бете в Elastic Observability 8.9, а в текущей версии дополнен новыми возможностями чата, включая возможность взаимодействия с пользователем на естественном языке, запоминания и обобщения информации в ходе разговора, а также создания базы знаний (на основе Elastic Learned Sparse Encoder) для предоставления дополнительного контекста и рекомендаций на основе данных.

Security

В Elastic Security 8.10 переосмыслена работа аналитиков, чтобы ускорить и повысить эффективность расследования угроз. В боковой панели Alert можно получить рекомендации и контекстную информацию для ускорения процесса расследования. Аналитик увидит причину срабатывания предупреждения и получит доступ к подробной информации о правилах и предупреждениях, а также к соответствующим тактикам и методикам MITRE ATT&CK. Теперь рядом с оповещением можно просмотреть полное руководство по расследованию.

Search

В Elastic Search 8.10 расширился каталог интеграций с открытым кодом за счет коннекторов для баз знаний и коммуникационных систем. Также появились правила для поиска и Synonyms API для упрощения работы с синонимами.

Дополнительная вещь, которую хотелось бы добавить — это появление output в виде Kafka для Elastic Agent (пока что в бете).

Новая версия уже доступна для скачивания на сайте Elastic (для России нужен VPN).


🧑‍🎓 Приглашаем вам на обновленную версию курса по Elastic 8, который мы проведем 20-22 сентября. Подробная программа и запись на курс по ссылке.

Читать полностью…

Elastic Stack recipes

Повышение производительности с помощью опции сжатия индексов. OpenSearch 2.9 предоставляет встроенные кодеки, которые выполняют сжатие индексов, влияя на размер сегментов и производительность операций индексирования. Предыдущие версии включали два типа кодеков: кодек для индексов по умолчанию, в котором приоритет отдается производительности, а не сжатию, и кодек best_compression, который обеспечивает высокую степень сжатия и меньший размер индекса, но при этом потенциально увеличивает нагрузку на процессор во время индексирования и может приводить к увеличению задержек. В версии 2.9.0 в OpenSearch добавлены два новых кодека, zstd и zstd_no_dict, которые используют алгоритм сжатия Zstandard от Facebook. Оба кодека направлены на достижение баланса между сжатием и производительностью, при этом в zstd_no_dict исключена функция сжатия словарей, что дает потенциальный выигрыш в производительности индексирования и поиска за счет несколько большего размера индекса.

Упрощение обнаружения угроз с помощью Security Analytics. Security Analytics теперь поддерживает новую схему ввода логов, соответствующую Open Cybersecurity Schema Framework (OCSF), что позволяет использовать журналы OCSF из Amazon Route 53, AWS CloudTrail и Amazon Virtual Private Cloud (Amazon VPC). Также стал доступен механизм корреляции для OpenSearch Security Analytics. Можно создавать пользовательские правила корреляции, которые отображают визуальный граф и список обнаруженных угроз по различным источникам, таким как DNS, Netflow и Active Directory. Граф можно использовать при проведении расследований в области безопасности для анализа связанных с ними угроз, что помогает выявить закономерности и взаимосвязи угроз в различных системах.

Агрегированные метрики для геоданных. В OpenSearch геоданные хранятся с использованием типов полей geoshape и geopoint. В предыдущих версиях пользователи могли выполнять агрегирование для типов данных geopoint. В версии 2.9.0 OpenSearch также поддерживает агрегирование для типов данных geoshape в качестве внутренней функциональности, доступной через API. В этом релизе добавлена поддержка геошаблонов для трех типов агрегаций: geo_bounds — метрическая агрегация, которая вычисляет ограничительную рамку, содержащую все геозначения в поле; geo_hash — агрегация с несколькими бакетами, которая группирует геошаблоны в бакеты, представляющие ячейки в сетке; и geo_tile — агрегация с несколькими бакетами, которая группирует геошаблоны в бакеты, представляющие плитки карты.

Скачать OpenSearch 2.9

Заметки к релизу

OpenSearch Playground (песочница)

Читать полностью…

Elastic Stack recipes

Как понять, что ваши удаленные сотрудники работают не из России

В последнее время многие российские компании по разным причинам перестали благоволить удаленной работе за пределами России. В одном из проектов у нас была задача визуализации таких подключений в Kibana.

Реализуется всё следующим образом: с VPN-шлюза (например, Cisco ASA) настраивается отправка сообщений syslog в Logstash, который их разбирает. Далее на стороне ingest-ноды Elasticsearch настраивается GeoIP processor и далее при помощи Kibana Alerts и ElastAlert настраиваются оповещения в телеграм или почту, если вход был не из России.

У Elastic есть собственная база IP-адресов https://geoip.elastic.co/v1/database. При желании, для сопоставления, можно использовать другие собственные или внешние ресурсы.

Читать полностью…

Elastic Stack recipes

7 петабайт логов в Elastic

Интересная и познавательная статья о том как устроено хранилище данных в Тинькофф.

Читать полностью…

Elastic Stack recipes

12-14 июля проведем 3-дневный курс по работе с Elastic Stack.

Мы добавили в курс разделы с конвертированием SQL в DSL, нагрузочное тестирование кластера Elastic при помощи утилиты Rally и SIEM.

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

Курс — это как ракета-носитель, которая за 3 дня выведет вас на заданную орбиту. Вы сможете сразу приступить к работе вместо долгого изучения документации по каждому из компонентов Elastic Stack.

Программа курса и заявка на участие по ссылке. Вопросы можно задать @galssoftware.

Читать полностью…

Elastic Stack recipes

Репликация сегментов в OpenSearch стала доступна для использования в продуктивных средах начиная с версии 2.7. Этот подход заключается не в подокументной индексации документов в реплики, а в копировании файлов сегментов полностью. В этой статье на Хабре рассказали немного подробнее об этом подходе.

Читать полностью…

Elastic Stack recipes

Векторный поиск, дополняющий полнотекстовый, помогает находить семантически схожие документы. В этой статье описано создание гибридного поиска, сочетающего в себе возможности полнотекстового и векторного поиска. Используемый стек состоит из OpenSearch и Sentence Transformers.

Статья для тех, кто хочет повысить релевантность поиска в своём проекте.

Читать полностью…

Elastic Stack recipes

Если вы планируете использовать или уже используете Elasticsearch в качестве поискового сервиса для вашего ecommerce-проекта, то статья о структуре о схеме документов вам определённо будет полезна. Здесь описан здравый подход по формированию вложенности полей в зависимости от цвета, размера и SKU товаров.

Если вы считаете, что ваш поиск работает медленно или у вас есть понимание необходимости его оптимизации — приходите к нам на консультацию (запрос можно отправить в телеграм @galssoftware или через форму обратной связи на сайте).

Используете Elasticsearch в качестве поискового движка?

Читать полностью…

Elastic Stack recipes

Сколько шардов на ноду ок и сколько не ок — такой вопрос нам часто задают на обучении или в ходе проектов. Самый простой совет — 20 шардов на каждый Гб JVM Heap. В этом посте мы попытались разобраться что же в действительности утилизирует аппаратные ресурсы на ноде, когда мы говорим про овершардинг.

Каждый индекс и каждый шард требуют определенных ресурсов памяти и процессора. Небольшой набор крупных шардов использует меньше ресурсов, чем множество мелких шардов. Сегменты также играют большую роль в использовании ресурсов шарда. Большинство шардов содержат несколько сегментов, в которых хранятся данные. Elasticsearch хранит некоторые метаданные сегментов в JVM Heap, чтобы их можно было быстро извлечь при поиске. По мере роста шарда его сегменты объединяются в меньшее количество более крупных сегментов. Это уменьшает количество сегментов, а значит, меньше метаданных хранится в JVM Heap.

Каждое поле документа также вносит определенные накладные расходы в виде использования памяти и дискового пространства. По умолчанию Elasticsearch автоматически создает маппинг полей в каждом индексируемом документе, этим можно управлять при необходимости. Нужно учитывать дополнительные накладные расходы, если шарды имеют большое количество сегментов, а соответствующий маппинг содержит большое количество полей и/или очень длинные имена полей.

Ещё один момент состоит в том, что более крупные шарды дольше восстанавливаются после сбоя. Когда нода выходит из строя, Elasticsearch восстанавливает баланс между шардами. Этот процесс копирует содержимое шарда по сети, поэтому для восстановления шарда размером 100 ГБ потребуется в два раза больше времени, чем для шарда размером 50 ГБ. В отличие от этого, маленькие хранилища несут пропорционально больше накладных расходов и менее эффективны при поиске. Поиск в пятидесяти хранилищах размером 1 ГБ займет значительно больше ресурсов, чем поиск в одном хранилище размером 50 ГБ, содержащем те же данные. Важен баланс.

Не существует жестких ограничений на размер шарда, но опыт показывает, что для логов и данных временных рядов обычно подходят шарды размером от 10 до 50 ГБ. Вы можете определять размеры шардов в зависимости от ёмкости сети и условий использования. Если используете ILM, установите порог max_primary_shard_size действия rollover на 50 ГБ, чтобы избежать использования шардов размером более 50 ГБ. А чтобы узнать текущий размер шардов, используйте cat shards API.

Запомнить:

Удаляйте индексы, а не документы
Удаленные документы Elasticsearch помечает как удаленный на каждом связанном с ним шарде. Помеченный документ будет продолжать использовать ресурсы, пока не будет удален во время периодического слияния сегментов.

Удаляйте целые индексы
Elasticsearch может немедленно удалить удаленные индексы непосредственно из файловой системы и освободить ресурсы.

Используйте потоки данных и ILM для временных рядов данных
Потоки данных позволяют хранить данные временных рядов в нескольких индексах, основанных на времени. В рамках ILM можно настраивать размеры шардов.

Если тема вам интересна, рекомендуем пару статей к прочтению:

How many shards should I have in my Elasticsearch cluster? (блог Elastic)
Size your shards (документация Elastic)

Читать полностью…

Elastic Stack recipes

Пагинация в ElasticSearch поддерживается тремя разными способами: pagination, search-after и scroll.

Один из наших клиентов в своей системе поиска тендеров использует пагинацию. После того, как пользователь выполнил поиск в веб-интерфейсе и отобразились страницы с постраничными результатами, они заранее загружают следующую страницу. То есть, при нахождении на первой странице с результатами, при переходе на вторую страницу, она отображается мгновенно. Когда пользователь загружает вторую страницу, сразу же подгружается третья и так далее. Такой подход весьма улучшает UX. В этом посте рассмотрим все три вида пагинации и определимся с предназначением каждого типа.

Опубликовали статью на Хабре.

Читать полностью…

Elastic Stack recipes

Поле text на минималках или как сэкономить до 10% дискового пространства

Начиная с версии 7.14 в Elasticsearch появился новый тип поля match_only_text, который может быть использован в качестве замены поля типа text. Тип поля match_only_text обладает следующими характеристиками:

⚡️Оценка релевантности рассчитывается как количество совпадающих выражений.

⚡️Span-запросы не поддерживаются. Все остальные типы запросов, которые поддерживаются для полей типа text, также поддерживаются для полей match_only_text.

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

Так за счет чего достигается оптимизация хранения? match_only_text — это тип поля, который отсекает некоторые характерные типу text вещи:

⚡️коэффициенты нормализации длины

⚡️частотности выражений

⚡️позиции в выдаче

Коэффициент нормализации длины и частотности выражений используются только для вычисления скоринга, поэтому отказ от их использования очевидный шаг, учитывая, что оценка релевантности обычно бесполезна для логов, т.к. события обычно сортируются по убыванию временной метки, а не по релевантности.

P.S. Про 10% Elastic заявляет в своей статье блога. Для оптимизации хранения мы рекомендуем использовать поля типа keyword и удалять поле message после того как вы вытащили оттуда всё необходимое. В целом, match_only_text выглядит как некий компромисс, который вроде бы и не особо нужен при работе с текстовыми логами.

Приходилось ли вам использовать поле типа match_only_text в ваших индексах?

Читать полностью…

Elastic Stack recipes

Внедряем и сопровождаем 🔎ElasticSearch 🔎OpenSearch

Разбираемся в кейсах безопасности, логирования, поиска и APM-мониторинга.

На базе одной из этих бесплатных систем создадим для вас систему управления событиями информационной безопасности.

Вы всегда будете знать:

⚡️ кто и когда создал удалил новую учетную запись или группу в AD или Linux

⚡️ кто открывал, создавал или удалял файлы на файловом хранилище

⚡️ кто и когда подключался к 1С, веб-ресурсам компании, рабочим станциям, серверам или по VPN

⚡️ какие веб-ресурсы посещали пользователи (например, по данным прокси Касперского)

⚡️ когда происходит подбор пароля

⚡️ и о многих других событиях.

Все собранные данные мы аккуратно визуализируем в Kibana/OpenSearch Dashboards, чтобы вы могли видеть полную картину происходящего. По каждому событию настроим уведомления в почту или телеграм. Также мы проконсультируем по эффективному использованию этих систем в качестве SIEM-системы.

Если у вас уже есть в эксплуатации ElasticSearch/OpenSearch, мы займёмся его развитием и сопровождением или проведем для вас обучение на специализированных курсах по ElasticSearch и OpenSearch.

Запрос можно оставить через форму обратной связи на нашем сайте, отправить в адрес welcome@gals.software либо написать в телеграм @galssoftware.

Читать полностью…

Elastic Stack recipes

juliardifh49/paginate-your-search-result-with-elasticsearch-and-go-94924f1bba2d">Paginate Your Search Result with Elasticsearch and Go

В этой статье примеры кода на Go для поисковых запросов с пагинацией в Elasticsearch. Описаны два типа пагинаций: по количеству ответов и бесконечная.

Читать полностью…

Elastic Stack recipes

Вышел OpenSearch 2.11

В этом посте разберем что же там появилось нового.

⚡️Мультимодальный поиск

В этом релизе представлен мультимодальный поиск по тексту и изображениям с использованием нейронного поиска. Эта функциональность позволяет искать пары изображений и текста, например, элементы каталога товаров (изображение и описание товара), на основе визуального и семантического сходства. Например, пользователи могут искать "белую блузку", получая изображения продуктов — модель машинного обучения (ML), на которой основан механизм, способна ассоциировать семантику и визуальные характеристики. Теперь можно встроить эти возможности в свое приложение, чтобы напрямую подключаться к мультимодальным моделям и выполнять мультимодальные поисковые запросы без необходимости создания собственного промежуточного ПО.

⚡️Сравнение и настройка результатов поиска

Представленный в OpenSearch 2.4 в качестве беты, в этом выпуске инструмент сравнения результатов поиска стал GA. Этот инструмент позволяет сравнивать результаты двух различных поисковых запросов в OpenSearch Dashboards. Например, можно сравнить результаты лексического поиска с результатами семантического поиска, чтобы просмотреть оба результата и соответствующим образом скорректировать запросы.

⚡️Эффективная защита данных благодаря взаимодействию между снапшотами и удаленными хранилищами

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

⚡️Улучшение удобства использования Security Analytics

Были внесены изменения в пользовательский интерфейс, призванные облегчить начало работы с Security Analytics. Новый воркфлоу упрощает процесс создания детекторов угроз и настройки оповещений в OpenSearch Dashboards, сокращая количество шагов и уточняя некоторые поля формы. Еще одно изменение добавляет категории к типам журналов, упорядочивая встроенные и кастомные логи по предопределенным категориям для упрощения фильтрации и сортировки.

⚡️Повышение уровня безопасности OpenSearch Dashboards

В OpenSearch 2.11 была устранена зависимость от AngularJS в OpenSearch Dashboards.

⚡️Авторизация на уровне REST для разработки подключаемых модулей

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

⚡️Отслеживание запросов OpenSearch с помощью трассировки

В OpenSearch 2.11 в качестве экспериментальной функциональности появилась возможность отслеживания запросов и задач OpenSearch. В этом выпуске OpenSearch представляет новую структуру данных, позволяющую разработчикам отслеживать запросы и задачи OpenSearch в процессе их прохождения через компоненты и сервисы распределенной архитектуры.

Скачать OpenSearch 2.11

Заметки к релизу

Песочница OpenSearch 2.11

Читать полностью…

Elastic Stack recipes

В статье описано как запустить OpenSearch в Kubernetes при помощи OpenSearch Kubernetes Operator. Разворачивание OpenSearch в k8s позволит легко раскатывать rolling updates, зачищать ноды кластера перед их отключением да и вообще легко управлять кластером.

Статья

Репозиторий OpenSearch Kubernetes Operator на GitHub

Документация по OpenSearch Kubernetes Operator

Читать полностью…

Elastic Stack recipes

Познакомьтесь с силой искусственного интеллекта

В этом видео показано как при помощи ChatGPT можно создавать фильтры для Logstash. Невероятно удобно!

Читать полностью…

Elastic Stack recipes

Полтора месяца назад вышел OpenSearch 2.9

Ключевое: обновление инструментария ML, обновления по части работы с событиями по ИБ, обновления визуализации геоданных и улучшенное сжатие данных для повышения производительности и уменьшения размера индексов.

Улучшения в поиске при помощи поисковых конвейеров. Поисковые конвейеры включают в себя три встроенных процессора: filter_query, rename_field и script request, а также новые API, ориентированные на разработчиков, позволяющие создавать собственные процессоры.

Семантический поиск стал проще. В OpenSearch 2.4.0 появилась экспериментальная функциональность нейронного поиска. С версии 2.9.0 нейронный поиск перешел в статус GA. Этот инструмент позволяет векторизовать документы и запросы, чтобы осуществлять поиск по преобразованным векторам с использованием алгоритма k-NN. Теперь можно объединить лексический поиск BM25 с семантическим поиском на основе глубокого обучения для повышения релевантности поиска.

Интеграция и управление моделями ML в кластере OpenSearch. ML-фреймворк, выпущенный в 2.4.0 в качестве экспериментальной функции, позволяет загружать собственные модели ML в OpenSearch, поддерживая модели с текстовым вложением из таких инструментов как PyTorch и ONNX. В рамках подготовки фреймворка к переходу в GA в OpenSearch 2.9.0 также введено управление доступом к ML-моделям. Эта функция позволяет администраторам управлять доступом к отдельным моделям, интегрированным в фреймворк.

Интеграция ML-моделей, управляемых извне. В OpenSearch 2.9.0 расширена функциональность ML-фреймворка, позволяя создавать коннекторы к сервисам искусственного интеллекта и ML-платформам. Эти коннекторы позволяют пользователям использовать модели, размещенные на подключенных сервисах и платформах. В качестве примера такой возможности в релиз 2.9 включен коннектор для моделей, размещенных на Amazon SageMaker. В ближайшее время будут опубликованы коннекторы для Cohere Rerank и OpenAI ChatGPT.

Расширение поиска за счет усовершенствования векторных баз данных. В этом релизе реализация k-NN поддерживает предварительную фильтрацию для запросов, использующих механизм Facebook AI Similarity Search (FAISS). Теперь можно фильтровать запросы с помощью метаданных до выполнения поиска ближайших соседей в k-NN-индексах, построенных с помощью FAISS. Это обеспечивает более эффективный k-NN-поиск и более высокую производительность. Ранее OpenSearch поддерживал предварительную фильтрацию только для индексов Lucene.

Еще одно обновлением в OpenSearch k-NN — поддержка векторов Lucene размером в байт. Теперь пользователи могут получать и использовать векторы, квантованные до размера одного байта на измерение вместо четырех. Это снижает требования к объему памяти для загрузки, сохранения и выполнения векторного поиска, но при этом потенциально снижает точность.

Создание мониторов и детекторов в OpenSearch Dashboards. Теперь можно видеть оповещения и аномалии наложенными на основные дашборды. Пользователи также могут создавать мониторы оповещений или детекторы аномалий непосредственно из своих визуализаций.

Комплексные мониторы для получения более содержательных оповещений. В версии 2.9.0 появились комплексные мониторы. Они позволяют объединять оповещения, генерируемые несколькими отдельными мониторами, в единое целое. Пользователи получают уведомления при выполнении условий срабатывания всех мониторов. Это позволяет анализировать источники данных по нескольким критериям и получать более детальную информацию о них.

Продолжение в следующем посте.

Читать полностью…

Elastic Stack recipes

Вышел DataPrepper 2.4

DataPrepper — это компонент OpenSearch, который является аналогом ingest-node в ElasticSearch и предназначен для трансформации данных.

Из ключевых обновлений: поддержка в качестве источника Apache Kafka, пакетная обработка событий Amazon S3, фильтрация внутри синков, новые кодеки для синков S3 и потоковое обнаружение аномалий.

Поддержка Apache Kafka. Добавлена поддержка Kafka и Amazon Managed Streaming for Apache Kafka (Amazon MSK) в качестве источника, что принимать данные из одного или нескольких топиков в кластере Kafka. Также есть возможность настроить несколько конвейеров на считывание данных из одного топика в Kafka, что позволяет настраивать количество потребителей топика на стороне Kafka.

Пакетная обработка событий S3. Добавлена поддержка функции сканирования S3, которая сканирует бакеты Amazon S3 для обработки объектов без необходимости настройки уведомлений о событиях Amazon S3. Фича подходит для случаев, когда необходимо перенести большие объемы исторических данных или для пользователей, которые хотят запускать задания ночного сканирования данных, загруженных в бакеты S3.

Фильтрация внутри синков. Добавлены опции include_keys и exclude_keys для синков, что дает возможность получать данные из любого источника и применять правила обогащения с помощью цепочки процессоров. Также можно выборочно отправлять данные в определенный приемник, например OpenSearch или S3 для архивации.

Кодеки S3. Появились новые кодеки: JSON codec, Avro codec, Parquet codec.

Потоковое обнаружение аномалий. Потоковый детектор аномалий теперь содержит опцию identification_keys, которая создает модель Random Cut Forest (RCF) для каждого значения в данных временного ряда. С помощью опции identification_keys аномалии обнаруживаются по уникальному набору ключей.

Скачать новую версию DataPrepper 2.4

Release Notes к DataPrepper 2.4

Roadmap для DataPrepper

Читать полностью…

Elastic Stack recipes

6 июня был анонсирован выпуск OpenSearch 2.8. Можно с уверенностью сказать, что частота релизов OpenSearch приближается к ElasticSearch. Однако, справедливости ради нужно сказать, что в последнем нововведений в каждой новой минорной версии гораздо больше.

Что нового

1. Поддержка PPL (Piped Processing Language) для кросс-кластерного поиска. Подробнее в репозитории на Гитхабе.

2. Упрощение задач управления индексами. Управлять индексами теперь можно из интерфейса OpenSearch Dashboards. Оттуда же можно настроить оповещения о длительных процессах в рамках ISM, а также о завершении переиндексации, разделения или слияния индексов.

3. Поисковые конвейеры. Для разработчиков поисковых приложений эта функциональность открывает возможность интегрировать сложные цепочки поисковых процессоров в OpenSearch без дополнительной обработки конечными пользователями. Этот релиз включает три встроенных процессора: filter_query, rename_field и script request.

Заметки к выпуску

Читать полностью…

Elastic Stack recipes

В продолжение темы OpenSearch предлагаем вам обратить внимание репозиторий с утилитой для тестирования нагрузки на OpenSearch.

Возможности:

🔍 Запуск эталонных тестов производительности и запись результатов

🔍 Настройка и отключение кластеров OpenSearch для проведения бенчмарков

🔍 Управление данными и спецификациями бенчмарков в разных версиях OpenSearch

🔍 Обнаружение проблем с производительностью путем подключения телеметрических устройств

🔍 Сравнение результатов производительности

🔍 Создание специализированных нагрузок

Читать полностью…

Elastic Stack recipes

❗️Вышел OpenSearch 2.7.0

В этом посте мы расскажем, что появилось нового. Ключевое — это переход из беты в GA* возможностей репликации сегментов и поиска по снэпшотам. В конце поста вы найдете ссылки на пост в блоге OpenSearch и заметки к релизу. Поехали!

*General Available — возможность использования фичи в продуктивных средах

🔎Поиск по снэпшотам

Такая возможность в качестве экспериментальной появлась в OpenSearch 2.4.0, а с текущей версии в GA. Снэпшоты с возможностью поиска позволяют выполнять поиск по индексам, которые хранятся в виде снэпшотов в удаленных репозиториях в режиме реального времени, без необходимости предварительно загружать набор проиндексированных данных в кластер. Кстати, в оригинальном Elastisearch такая функция входит в подписку Enterprise.

🔎Репликация сегментов

Эта функциональность также перешла в режим GA из экспериментальной (появилась начиная с версии 2.3). Репликация сегментов — это иная стратегия репликации данных в отличие от репликации документов. Репликация сегментов копирует файлы сегментов Lucene с основного шарда на реплики. Сегментная архитектура Lucene, основанная на принципе «запись только один раз», означает, что копировать нужно только новые сегменты, вместо того, чтобы дописывать новые документы в существующие шарды. Этот подход позволяет повысить производительность индексирования и снизить нагрузку на аппаратные ресурсы.

Визуализация данных из нескольких источников

Запущенная в качестве экспериментальной в OpenSearch 2.4.0, эта функция также перешла в режим GA и позволяет использовать несколько источников данных для OpenSearch Dashboards. Теперь можно динамически управлять источниками данных на нескольких кластерах OpenSearch, создавать шаблоны индексов на основе этих источников, запускать запросы к определенному источнику данных и объединять визуализации в единый дашборд.

🔎Мультитенантость в OS Dashboards

OpenSearch Dashboards использует тенанты в качестве пространства для хранения и обмена шаблонами индексов, визуализациями, дашбордами и другими объектами, с административным контролем над тем, какие пользователи могут получить доступ к тенанту и уровнем предоставляемого доступа. В предыдущих версиях создание и отображение тенантов поддерживалось в Dashboards, а их конфигурация выполнялась в файлах YAML, что требовало внесения изменений на каждой ноде для поддержания согласованности между нодами и перезапуск Dashboards для вступления изменений в силу. В этом релизе администраторы могут просматривать, настраивать, включать или отключать тенанты в Dashboards и вносить эти изменения без необходимости перезапуска.

Анализ событий безопасности с помощью встроенных инструментов корреляции

Данные из логов, содержащие события безопасности, могут охватывать несколько индексов и потоков данных, а визуализация взаимосвязей между связанными событиями даст ценные сведения для аналитиков безопасности. Механизм корреляции позволяет определять взаимосвязи в данных о событиях безопасности из различных источников данных, таких как DNS, Netflow, Active Directory и др. Построенный граф можно использовать для определения закономерностей и исследования взаимосвязей между различными системами в контролируемой инфраструктуре.

О других новведениях в OpenSearch 2.7 читайте по ссылкам ниже.

🔍Статья с описанием релиза в блоге OpenSearch

🔍
Заметки к релизу

🔍Загрузка новой версии OpenSearch

🔍Песочница OpenSearch

Какая у вас версия OpenSearch в продуктивной среде?

Читать полностью…

Elastic Stack recipes

Как понять, что с вашим поисковым запросом в ElasticSearch что-то не так? Правильный ответ — попробуйте профилирование запроса. Profile API дает низкоуровневое представление о том, как выполняются поисковые запросы, чтобы понять, почему определенные запросы выполняются медленно и как-то их улучшить. Profile API не измеряет сетевую задержку, время, затраченное на фазу выборки поискового запроса, время, затраченное на нахождение запросов в очереди или на объединение ответов шардов на координирующей ноде. Пример выполнения:

GET /products/_search
{
"profile": true,
"query" : {
"match" : { "position" : "огурцы" }
}
}

Обратите внимание, что это дорогая с точки зрения производительности операция. В текущей версии документации Elasticsearch добавлено подробное описание блоков результатов профилирования для того, чтобы было понятно что и где искать. Страница документации.

Помогало ли вам в работе профилирование поискового запроса?

Читать полностью…

Elastic Stack recipes

Два интересных API для получения детальной информации по хранению данных

Field usage stats API — возвращает детальную информацию о полях документа для каждого шарда и индекса.

Analyze index disk usage API — анализирует использование диска каждым полем индекса или потока данных.

Читать полностью…

Elastic Stack recipes

В ElasticSearch и OpenSearch могут храниться данные как в виде временных рядов с полем времени (например, логи приложений) так и без специального поля с указанием времени (например, каталог товаров интернет-магазина). Данные, которые содержат время, удобнее всего хранить в виде потоков данных (data streams). В этом посте на примере OpenSearch мы расскажем чем потоки данных отличаются от обычных индексов и когда их можно использовать.

Данные в виде временных рядов обладают следующими свойствами:
🔎 есть поле @timestamp и оно обязательное
🔎 документы не обновляются
🔎 документы делятся на индексы, основываясь на времени
🔎 поиск по старым документам менее вероятен, чем по новым

В OpenSearch для перемещения данных используется ISM (Index State Management). Эта технология позволяет определять политики для автоматизации перемещения данных между узлами или их удаления при определенных условиях. Таким образом, можно разделить данные по возрасту и определить их перемещение, например, с SSD-дисков на HDD-диски и, в конечном итоге, их удалить.

В этот момент в игру вступают потоки данных. Нужен какой-то способ указать ISM как разделить данные на индексы и это как раз он. Потоки данных используют шаблоны индексов. Для начала создадим шаблон индекса и определим поток данных:

PUT _index_template/logs-template
{
"index_patterns": [
"logs-*"
],
"data_stream": {}
}

Выше мы определили, что все индексы, начинающиеся с logs будут потоками данных. Теперь запишем документ в индекс logs-messages

POST logs-messages/_doc
{
"@timestamp": "2023-04-26T09:30:33.132+03:00",
"message": "съешь ещё этих мягких французских булок да выпей чаю"
}

А теперь магия! Извлечем этот документ и увидим, что он оказался в потоке данных:

{
"_index" : ".ds-logs-messages-000001",
"_id" : "y0UApX0BzzHCVHV5VzYo",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}

Что здесь произошло? Мы записали документ в поток данных, а Opensearch создал базовый индекс, в котором будут храниться записанные данные. Имя потока данных — это псевдоним. Можно даже не беспокоиться о том, какой индекс мы выполнили запись. Нужно просто выполнять запись в поток данных, настроить политику ISM, а OpenSearch сам разберется куда записать. Согласитесь, удобно.

Если ISM будет настроен выполнять перенос через день, то через 1 день появится индекс .ds-logs-messages-000002 и так далее. Обратите внимание, что индекс начинается с точки, это означает, что индекс скрыт. Не нужно взаимодействовать с индексом напрямую. Две следующие команды помогут извлечь полезную статистику по использованию потоков данных:

GET _data_stream/logs-messages
GET _data_stream/logs-messages/_stats

Искать в потоке данных тоже просто:

GET
logs-messages
/_search

Takeaway, как говорится:

🔎Потоки данных предназначены для неизменных данных, которые только дополняются
🔎Поле @timestamp обязательно
🔎Поисковые запросы выполняются по всем индексам в потоке, запросы на запись к последнему индексу
🔎Вам не нужно выбирать индекс, в который записывать, записывайте данные в поток

Ребята, накидайте, пожалуйста огней, если пост был вам полезен😊

Читать полностью…

Elastic Stack recipes

Если вы решили мигрировать из ElasticSearch в OpenSearch, важно знать, что эти две системы хоть и близкие родственники, имеют некоторые отличия. Например, в принципах работы политик управления жизненным циклом индексов. В этом посте мы вкратце об этом расскажем.

В ElasticSearch технология управления жизненным циклом индексов называется Index Lifecycle Management (ILM), в OpenSearch она же называется Index State Management (ISM). Обе технологии построены на ролловере в рамках датастрима по критериям возраста, размера или количества документов в индексе. В обоих случаях при ролловере можно выполнять действия над индексами: изменять количество шардов, мерджить сегменты, менять количество реплик, изменять приоритет восстановления, делать индекс readonly, создавать снапшоты и, наконец, удалять индекс.

Теперь поговорим про отличия.

⚡️В OpenSearch типы узлов hot/warm/cold настраиваются как атрибуты узлов (то же самое, что и Shard Allocation Awareness в ElasticSearch). В Elasticsearch типы узлов hot/warm/cold настраиваются как роли узлов.

⚡️Elasticsearch ILM поставляется с фазами hot/warm/cold/delete, определенными из коробки. В Opensearch вам нужно создавать и называть фазы самостоятельно. Зато какой полет фантазии возможен: разогретая фаза, чуть подостывшая, замерзшая и далее по списку.

⚡️В Opensearch действия, состояния и переходы настраиваются вами самостоятельно в рамках ISM. В Elasticsearch предустановлены фазы и действий внутри каждой фазы.

⚡️Opensearch ISM поддерживает уведомления для каждого из фазовых переходов и ошибок. В Elasticsearch нельзя создавать уведомления из конфигурации ILM.

⚡️В ISM индексы назначаются непосредственно из политики, т.е. в политике хранятся индексы, которые будут ей аффектиться. В Elasticsearch сам индекс хранит политику, которой он управляется.

Если вы хотите подробнее узнать про настройки ISM в OpenSearch, рекомендуем ознакомиться с этой статьёй.

А какую технологию используете вы?

Читать полностью…

Elastic Stack recipes

Некоторое время назад у одного из заказчиков столкнулись с ситуацией периодического выпадения ноды в кластере EkasticSearch. Были сетевые проблемы. В конфигурации ноды есть специальный параметр, который позволяет настроить задержку распределения потерянных шардов и не тратить на это аппаратные ресурсы.

Когда одна из дата- нод покидает кластер, мастер-нода реагирует следующим образом:

⛵️ Повышает реплика-шарды до праймари-шардов, чтобы заместить все праймари, которые были на потерянной ноде.
⛵️Распределяет реплика-шарды для замены потерянных реплик (при условии, что имеется достаточное количество нод).
⛵️Выполняет перераспределение шардов поровну между оставшимися нодами.

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

Переезд шардов создаёт дополнительную нагрузку на кластер, которую можно избежать, если нода выпала из кластера на короткое время. Рассмотрим следующий сценарий:

⛵️Нода теряет сетевое соединение.
⛵️Мастер-нода переводит реплика-шарды в праймари для каждого праймари-шарда, находившегося на выпавшей ноде.
⛵️Мастер распределяет новые реплики по другим нодам кластера.
⛵️Каждая новая реплика создает полную копию праймари-шарда.
⛵️Шарды ребалансируются на другие ноды кластера.
⛵️Потерянная нода возвращается через несколько минут.
⛵️Мастер-нода восстанавливает баланс кластера, выделяя шарды потерянной ноде.

Если бы мастер-нода подождала несколько минут, то потерянные шарды можно было бы перераспределить на потерянную ноду с минимальным сетевым трафиком.

Распределение реплик-шардов, которые становятся нераспределенными из-за отключения ноды, может быть отложено с помощью настройки index.unassigned.node_left.delayed_timeout, которая по умолчанию равна 1минуте. Этот параметр может быть обновлен без перезагрузки.

PUT _all/_settings
{
"settings": {
"index.unassigned.node_left.delayed_timeout": "5m"
}
}

При включенном отложенном распределении вышеописанный сценарий выглядит следующим образом:

⛵️Нода теряет сетевое подключение.
⛵️Мастер-нода переводит реплика-шарды в праймари для каждого праймари-шарда, который находился на выпавшей ноде.
⛵️Мастер-нода регистрирует сообщение о том, что распределение неназначенных шардов было отложено и на какой срок.
⛵️Кластер остается желтым, потому что есть нераспределенные шарды-реплики.
⛵️Потерянная нода возвращается через несколько минут, до истечения тайм-аута.
⛵️Потерянные реплики повторно распределяются на выпадавшую ноду.

Эта настройка не влияет на повышение реплика-шардов до праймари, равно как и на назначение реплик, которые не были назначены ранее. Тут всё без изменений.

Если время отложенного распределения истекло, мастер-нода запускает процесс по первому сценарию.

Сталкивались ли вы с проблемами периодического кратковременного выпадения ноды из кластера?

Читать полностью…

Elastic Stack recipes

vakhtang-matskeplishvili/elasticsearch-how-to-decrease-the-reindex-time-by-more-than-90-and-simplify-reindex-process-901488851417">Elasticsearch reindex - How to decrease the reindex time by more than 90% and simplify reindex process

В этой статье обзор существующих решений для Elasticsearch и решение с открытым исходным кодом, которое помогает упростить процесс переиндексации. Судя по контрольным показателям, использование этого приложения сэкономит до 90% времени!

Читать полностью…

Elastic Stack recipes

Яндекс Облако сегодня проводили вебинар по OpenSearch. Рассказали об отличиях с Elasticsearch, как выполнить миграцию в OpenSearch и, конечно, о своём управляемом сервисе.

Читать полностью…
Subscribe to a channel