- PVSM.RU - https://www.pvsm.ru -
Привет! Проблема традиционных реляционных баз данных в том, что они не всегда справляются с обработкой огромных объемов информации. Вот вам нужно быстро найти, проиндексировать и проанализировать логи, события или метрики, но вы упираетесь в ограничения масштабируемости, автошардирования и скорости обработки запросов специфического профиля нагрузки. Знакомо?
Меня зовут Гришин Александр, я продакт-менеджер в Selectel и отвечаю за развитие объектного хранилища [1] и облачных баз данных. В этой статье расскажу, как описанные проблемы решает OpenSearch, как развернуть кластеры этой платформы за несколько минут и начать с ней работать в Python.
Мы в Selectel готовим новый сервис. Если арендуете серверы в рабочих или личных проектах, нам очень поможет ваш опыт — записывайтесь [2] на короткое онлайн-интервью. За участие подарим плюшевого Тирекса и бонусы на услуги Selectel.
Используйте навигацию, если не хотите читать текст полностью:
→ Что такое OpenSearch [3]
→ OpenSearch as a Service в Selectel [4]
→ Как начать использовать OpenSearch в Selectel [5]
→ Как использовать OpenSearch с Python [6]
→ Подключение к OpenSearch Dashboard [7]
OpenSearch 2.18 (Latest) — это open source высокопроизводительная поисковая система и аналитический движок. Инструмент позволяет индексировать и анализировать большие объемы данных в режиме реального времени. Это форк Elasticsearch 7.10, разработанный Amazon после смены лицензии Elastic на проприетарную. OpenSearch сохраняет совместимость с API Elasticsearch, но при этом остается полностью открытым и свободным для использования [8]. Это делает его удобным решением для пользователей, ищущих open source альтернативу.
OpenSearch хорош тем, что предлагает полнотекстовый поиск по индексированным данным, включая поддержку морфологии и сложных поисковых запросов. Помимо тривиального поиска можно также анализировать логи. А чтобы наглядно представить данные, можно строить таблицы и графики с помощью OpenSearch Dashboards. Отдельно отмечу поддержку машинного обучения — можно автоматически выявлять аномалии в данных за счет поддержки таких плагинов, как anomaly-detection [9] и opensearch-ml [10].
Наконец, благодаря open source модели и плагинам OpenSearch можно адаптировать под разные задачи. Например, плагин notifications предназначен для управления уведомлениями через интеграции с менеджерами или веб-хуками с POST-, PUT- и PATH-запросами.
OpenSearch стал основной альтернативой ELK, предлагая:
Итак, что мы имеем? С одной стороны, OpenSearch — отличный выбор для разработчиков, аналитиков и DevOps-инженеров, которым необходим мощный инструмент для работы с большими текстовыми данными. С другой, платформа требовательна к железу и сложна в эксплуатации.
Чтобы упростить повседневную жизни DevOp- и SRE-инженеров, дата-аналитиков и разработчиков, мы выпустили новую услугу OpenSearch как сервис. Это полностью управляемая платформа, которая позволяет развернуть кластеры OpenSearch за несколько минут. Самостоятельного администрировать инфраструктурную составляющую при этом не нужно.
В услугу входит:
В целом, мы взяли на себя всю инфраструктурную рутину вроде настройки и поддержки сложных многосоставных систем. При этом работа на уровне приложения OpenSearch остается в зоне ответственности клиента.
Кластер OpenSearch состоит из четырех групп:
Рассмотрим каждую группу отдельно.
Подробное описание того, как все устроено под капотом — тема для отдельной статьи. Если вам интересно почитать об этом подробнее, дайте знать в комментариях. А пока тезисно перечислю, что делает каждая группа нод.
Это обязательная к использованию группа, которая отвечает за управление, координацию и работоспособность кластера, а также за балансировку нагрузки. Вот что конкретно делает группа:
Это опциональная к использованию группа в кластере. Она отвечает за предоставление веб-интерфейса визуализации данных и управление кластером через веб-панель. Эти узлы оптимизированы для обработки запросов пользователей и выполнения задач, связанных с аналитикой и визуализацией.
Основные задачи группы дашбордов:
Дашборды не участвуют непосредственно в обработке данных, управлении шард-распределением или кластеризацией, поэтому их использование опционально и призвано просто упростить пользователю работу с OpenSearch API.
Это основной компонент кластера, который выполняет ключевые задачи, связанные с индексированием, шардированием, репликацией и обработкой запросов. В кластере OpenSearch группа датанод отвечает за хранение, управление и обработку данных. Рассмотрим ее задачи подробнее.
Для промышленного использования важно следить за состоянием датанод, включая использование CPU, памяти и дискового пространства, чтобы избежать перегрузки или снижения производительности.
Мы постарались сделать так, чтобы использование нашей услуги было максимально простым. Чтобы приступить к работе с OpenSearch, выполните несколько шагов.
Создание кластера.
Листинг кластеров.
Настройки кластера.
В нашем тривиальном примере будем использовать библиотеку opensearch-py. Вот пример кода для индексации и поиска данных:
from opensearchpy import OpenSearch
host = 'your-opensearch-endpoint'
port = 9200
auth = ('user', 'password')
client = OpenSearch(
hosts=[{'host': host, 'port': port}],
http_auth=auth,
use_ssl=True,
verify_certs=False
)
# Создание индекса
index_name = "logs"
client.indices.create(index=index_name, ignore=400)
# Добавление документа
doc = {"message": "Ошибка в системе", "timestamp": "2025-02-10T12:00:00"}
client.index(index=index_name, body=doc)
# Поиск по индексу
query = {"query": {"match": {"message": "Ошибка"}}}
response = client.search(index=index_name, body=query)
print(response)
Этот код демонстрирует, как подключиться к кластеру OpenSearch, создать индекс, добавить документ и выполнить поиск.
OpenSearch Dashboards — это веб-интерфейс для визуализации данных и управления кластерами OpenSearch.
После развертывания Managed OpenSearch в Selectel вы можете получить ссылку несколькими способами.
1. Нажать на копку дашборда на листинге/списке кластеров. В соседней вкладке откроется дашборд. Все.
2. Можно зайти в настройки кластера, на вкладку Подключение. Там выбрать дашборд-группу и нужный IP-адрес. Если подклчаетесь из облака, например из виртуальной машины, выбирайте приватный IP. Но в 99% случаев подключения происходят из интернета. Разумеется, для этого публичный IP-адрес должен быть заранее прикреплен к дашборд-группе.
3. Скопируйте IP-адрес и вставьте его в адресную строку браузера:
Перейдите по указанному URL в браузере. На экране входа введите:
После входа в Dashboards:
GET _cluster/health.
Если подключение успешно, вы увидите информацию о статусе кластера.
Для подключения к Dashboard необязательно использовать браузер, можно работать через API. Для этого потребуется:
Вот так можно подключится к дашборду и посмотреть статус кластера:
curl -u 'ЛОГИН:пароль' -X GET "https://188.124.39.188/api/status"
Ответом мы получим JSON-ответ от API, содержащий статус системы OpenSearch Dashboards.
В ближайшее время мы планируем интегрировать OpenSearch с другими сервисами Selectel, добавить поддержку HighFreq и Dedicated аппаратных платформ и новых функций. А пока, если у вас остались вопросы, приглашаю задать их в комментариях.
Автор: GrishinAlex
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/414035
Ссылки в тексте:
[1] объектного хранилища: https://selectel.ru/services/cloud/storage/?utm_source=habr.com&utm_medium=referral&utm_campaign=cloud_article_opensearch_170325_content
[2] записывайтесь: https://forms.selectel.ru/s/cm7efvbtv01xksm01fsatv38d?utm_source=habr.com&utm_medium=referral&utm_campaign=dedicated_article_opensearch_170325_banner_073_01_ord
[3] Что такое OpenSearch: #1
[4] OpenSearch as a Service в Selectel: #2
[5] Как начать использовать OpenSearch в Selectel: #3
[6] Как использовать OpenSearch с Python: #4
[7] Подключение к OpenSearch Dashboard: #5
[8] открытым и свободным для использования: https://github.com/opensearch-project
[9] anomaly-detection: https://opensearch.org/docs/latest/observing-your-data/ad/index/
[10] opensearch-ml: https://opensearch.org/docs/latest/ml-commons-plugin/
[11] в панель управления: https://my.selectel.ru/
[12] Источник: https://habr.com/ru/companies/selectel/articles/891046/?utm_source=habrahabr&utm_medium=rss&utm_campaign=891046
Нажмите здесь для печати.