Перенесите свои индексы в Amazon OpenSearch Serverless с помощью Logstash

Перенесите свои индексы в Amazon OpenSearch Serverless с помощью Logstash

Исходный узел: 1931332

Недавно мы объявили об общедоступности Amazon OpenSearch без сервера , новый вариант для Сервис Amazon OpenSearch это упрощает выполнение крупномасштабных поисковых и аналитических рабочих нагрузок без необходимости настройки, управления или масштабирования кластеров OpenSearch. С OpenSearch Serverless вы получаете такое же интерактивное время отклика в миллисекундах, как и OpenSearch Service, но с простотой бессерверной среды.

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

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

Обзор решения

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

Вы устанавливаете исходный и конечный плагины в конфигурационном файле Logstash. В конфигурационном файле есть разделы для Input, Filterи Output. После настройки Logstash отправит запрос в домен службы OpenSearch и прочитает данные в соответствии с запросом, который вы указали в input раздел. После того, как данные будут прочитаны из OpenSearch Service, вы можете при желании отправить их на следующий этап. Filter для преобразований, таких как добавление или удаление поля из входных данных или обновление поля с другими значениями. В этом примере вы не будете использовать Filter плагин. Далее идет Output плагин. Версия Logstash с открытым исходным кодом (Logstash OSS) предоставляет удобный способ использования массового API для загрузки данных в ваши коллекции. OpenSearch Serverless поддерживает logstash-выход-opensearch выходной плагин, который поддерживает Управление идентификацией и доступом AWS (IAM) учетные данные для управления доступом к данным.

Следующая диаграмма иллюстрирует рабочий процесс нашего решения.

Предпосылки

Прежде чем начать, убедитесь, что вы выполнили следующие предварительные условия:

  1. Запишите ARN, имя пользователя и пароль вашего домена службы OpenSearch.
  2. Создайте коллекцию OpenSearch Serverless. Если вы новичок в OpenSearch Serverless, см. Простой анализ журналов с помощью Amazon OpenSearch Serverless для получения подробной информации о том, как настроить свою коллекцию.

Настройте Logstash и плагины ввода и вывода для OpenSearch.

Выполните следующие шаги, чтобы настроить Logstash и ваши плагины:

  1. Скачать logstash-oss-with-opensearch-output-plugin. (В этом примере используется дистрибутив для macos-x64. Другие дистрибутивы см. артефактов.)
    wget https://artifacts.opensearch.org/logstash/logstash-oss-with-opensearch-output-plugin-8.4.0-macos-x64.tar.gz

  2. Извлеките загруженный архив:
    tar -zxvf logstash-oss-with-opensearch-output-plugin-8.4.0-macos-x64.tar.gz
    cd logstash-8.4.0/

  3. Обновите logstash-output-opensearch плагин последней версии:
    <path/to/your/logstash/root/directory>/bin/logstash-plugin update logstash-output-opensearch

  4. Установить logstash-input-opensearch плагин:
    <path/to/your/logstash/root/directory>/bin/logstash-plugin install logstash-input-opensearch

Протестируйте плагин

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

Создайте новый файл и добавьте следующее содержимое, затем сохраните файл как opensearch-serverless-migration.conf. Укажите значения для конечной точки домена службы OpenSearch в разделе ВЕДУЩИЙ, USERNAMEи PASSWORD в input раздел и сведения о конечной точке коллекции OpenSearch Serverless в разделе ВЕДУЩИЙ вместе с РЕГИОН, AWS_ACCESS_KEY_IDи AWS_SECRET_ACCESS_KEY в output .

input { opensearch { hosts => ["https://<HOST>:443"] user => "<USERNAME>" password => "<PASSWORD>" index => "movies" query => '{ "query": { "match_all": {}} }' }
}
output { opensearch { ecs_compatibility => disabled index => "movies" hosts => "<HOST>:443" auth_type => { type => 'aws_iam' aws_access_key_id => '<AWS_ACCESS_KEY_ID>' aws_secret_access_key => '<AWS_SECRET_ACCESS_KEY>' region => '<REGION>' service_name => 'aoss' } legacy_template => false default_server_major_version => 2 }
}

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

Запустить Логсташ

Используйте следующую команду для запуска Logstash:

<path/to/your/logstash/root/directory>/bin/logstash -f <path/to/your/config/file>

После того, как вы запустите команду, Logstash извлечет данные из исходного индекса из вашего домена службы OpenSearch и запишет в целевой индекс в вашей коллекции OpenSearch Serverless. Когда передача данных завершена, Logstash закрывается. См. следующий код:

[2023-01-24T20:14:28,965][INFO][logstash.agent] Successfully
started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}
…
…
[2023-01-24T20:14:38,852][INFO][logstash.javapipeline][main] Pipeline terminated {"pipeline.id"=>"main"}
[2023-01-24T20:14:39,374][INFO][logstash.pipelinesregistry] Removed pipeline from registry successfully {:pipeline_id=>:main}
[2023-01-24T20:14:39,399][INFO][logstash.runner] Logstash shut down.

Проверка данных в OpenSearch Serverless

Вы можете убедиться, что Logstash скопировал все ваши данные, сравнив количество документов в вашем домене и в вашей коллекции. Запустите следующий запрос либо из Инструменты разработки вкладка или с curl, postmanили аналогичный HTTP-клиент. Следующий запрос поможет вам найти все документы из movies index и возвращает лучшие документы вместе со счетчиком. По умолчанию OpenSearch возвращает количество документов, не превышающее 10,000 XNUMX. Добавление track_total_hits флаг помогает вам получить точное количество документов, если количество документов превышает 10,000 XNUMX.

GET movies/_search
{ "query": { "match_all": {} }, "track_total_hits" : true
}

Заключение

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

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

Если у вас есть отзывы об этом посте, отправьте их в разделе комментариев. Если у вас есть вопросы по этому сообщению, начните новую тему на Форум сервиса Amazon OpenSearch or связаться со службой поддержки AWS.


Об авторах

Прашант Агравал является старшим специалистом по поиску, архитектором решений в Amazon OpenSearch Service. Он тесно сотрудничает с клиентами, помогая им перенести свои рабочие нагрузки в облако, и помогает существующим клиентам настраивать свои кластеры для повышения производительности и экономии средств. Перед тем, как присоединиться к AWS, он помогал различным клиентам использовать OpenSearch и Elasticsearch для поиска и анализа журналов. Когда он не работает, вы можете найти его путешествующим и исследующим новые места. Короче говоря, ему нравится делать «Ешь» → «Путешествуй» → «Повторять».

Джон Хэндлер (@_searchgeek) — старший главный архитектор решений в Amazon Web Services в Пало-Альто, Калифорния. Джон тесно сотрудничает с командами CloudSearch и Elasticsearch, предоставляя помощь и рекомендации широкому кругу клиентов, у которых есть поисковые рабочие нагрузки, которые они хотят перенести в облако AWS. До прихода в AWS карьера Джона в качестве разработчика программного обеспечения включала четыре года кодирования крупной поисковой системы для электронной коммерции.

Отметка времени:

Больше от AWS Большие данные