Мы уже рассказывали, что такое OpenSearch как сервис в Selectel и как легко и быстро начать им пользоваться. Если коротко — это managed-решение, где кластер развертывается за несколько минут, а все заботы берет на себя провайдер: обслуживает кластеры, настраивает СУБД, обеспечивает отказоустойчивость, беспокоится о бэкапах и масштабировании, предоставляет поддержку.
Но дальше возникает вопрос — как с этим кластером работать? Как настроить мониторинг, визуализировать данные и метрики, работать с бэкапами, управлять пользователями и доступами? Можно, конечно, отправлять curl-запросы к API. Можно подключать сторонние инструменты, вроде Grafana. Но есть способ проще и удобнее — OpenSearch Dashboards.
Что такое OpenSearch Dashboards
OpenSearch Dashboards — это веб-интерфейс для визуализации данных и управления кластерами OpenSearch.
OpenSearch Dashboards подойдет всем, кто не хочет:
- составлять curl-запросы вручную — например, для управления кластером или восстановления индексов с данными;
- строить графики через написание кода;
- работать с учетными записями пользователей или искать данные, используя API.
Эти и другие действия можно выполнять в удобном веб-интерфейсе.
Как начать использовать OpenSearch Dashboards в Selectel
В Selectel OpenSearch Dashboards предоставляется как часть управляемого сервиса OpenSearch. Его не нужно самостоятельно устанавливать и настраивать — можно работать сразу после создания кластера.
Чтобы начать использовать OpenSearch Dashboards, потребуется сделать всего несколько простых шагов. Для примера возьмем кластер OpenSearch в Selectel. Если у вас уже есть созданный кластер OpenSearch с Dashboards — в Selectel или на базе своей инфраструктуре, — можете сразу перейти к разделу про создание тестовых данных.
Создаем кластер OpenSearch
1. Если у вас еще нет аккаунта, зарегистрируйтесь в панели управления.
2. Зайдите в панель управления, в верхнем меню слева нажмите Продукты и выберите Облачные базы данных.
3. Нажмите Создать кластер.

4. Выберите подходящие регион и пул или оставьте уже указанные — для нашего эксперимента это не принципиально.
5. В блоке СУБД выберите OpenSearch.
6. В блоке Сеть выберите существующую приватную подсеть или создайте новую.

7. Для каждой группы нод выберите конфигурацию — она распространяется на все ноды в группе. Нам подойдет самая простая — например, из линейки Standard.
По умолчанию кластер OpenSearch состоит из трех функциональных групп нод: Manager group, Data group и Dashboard group. В последней как раз и размещен веб‑интерфейс OpenSearch Dashboards. Подробнее о группах и их ролях можно прочитать в нашей документации.


8. В блоке Пароль пользователя-администратора оставьте имеющийся, введите свой или нажмите Сгенерировать — он понадобится для подключения к OpenSearch Dashboards. Обязательно скопируйте и сохраните пароль — его нельзя посмотреть в панели управления, можно только изменить.
Нажмите Создать кластер.
Дождитесь, пока все группы нод перейдут в статус ACTIVE, а сам кластер — в RUNNING. Поздравляю! — кластер готов к работе.

Подключаемся к Dashboards
Сам кластер OpenSearch развертывается только в приватной подсети. Однако подключаться к нему можно не только изнутри, но также из интернета. Чтобы Dashboards были доступны извне, необходимо назначить публичный IP-адрес группе нод Dashboard. Подробные инструкции — в нашей документации.
Осталось подключиться к Dashboards — это легко сделать через панель управления.
1. На странице с активными кластерами находим наш и в меню выбираем Dashboards.

2. Когда откроется страница авторизации в веб-интерфейсе OpenSearch Dashboards, вводим:
- логин — по умолчанию admin;
- пароль, который сгенерировали при создании кластера.
3. Нажимаем Log in.

4. На приветственной странице появится предложение сразу добавить данные — пропустим этот шаг, так как сделаем это позже. Нажимаем Explore on my own.
5. Тенант можно выбрать сразу — отметим Global и нажмем Confirm. Подробнее о тенантах поговорим при создании пользователей.

6. После входа в веб-интерфейс можно проверить подключение к кластеру. Открываем меню в левом верхнем углу и в разделе Management выбираем Dev Tools, после чего выполняем в консоли тестовый запрос GET _cluster/health.
Если подключение прошло успешно, увидим информацию о статусе кластера.

Теперь мы готовы к работе.
Работаем с данными
В реальной жизни в OpenSearch работают уже с готовыми данными. Их не создают вручную через curl-запросы или Dashboards, они попадают в кластер автоматически — например, из логов и метрик.
Для знакомства с инструментом разработчики OpenSearch подготовили пробные наборы данных. Устанавливаются они в пару кликов и идут сразу с готовыми дашбордами. Такая предусмотрительность позволяет нам не ломать голову над структурой индексов и не писать скрипты для наполнения индексов данными. Можем сразу перейти к управлению доступом и визуализации.
Как добавить данные
На главной странице OpenSearch Dashboards нажимаем Add sample data.

Появится четыре набора данных:
- Sample eCommerce orders — для интернет-магазина;
- Sample flight data — информация по авиарейсам;
- Sample web logs — веб-логи;
- Sample Observability Logs, Traces, and Metrics — логи, трассировки и метрики приложения в формате OpenTelemetry.

Последний вариант — для продвинутого анализа. В отличие от первых трех наборов, данные добавляются в специальный раздел — Observability.
Сначала мы сосредоточимся на первых трех — это основа, чтобы разобраться с дашбордами, пользователями и бэкапами. К четвертому набору вернемся, когда будем знакомиться с мониторингом.
Все, что нужно сделать для добавления — нажать Add data в каждом из наборов.
Проверяем, что данные на месте
В левом верхнем углу открываем меню и в разделе OpenSearch Dashboards выбираем Discover. В выпадающем списке шаблонов индексов (Index patterns) — три шаблона:
opensearch_dashboards_sample_data_ecommerce;opensearch_dashboards_sample_data_flights;opensearch_dashboards_sample_data_logs.
Переключаясь между ними, можно увидеть, что внутри уже есть документы с временными метками.

Вместе с данными автоматически создались и готовые дашборды, но мы посмотрим их чуть позже.
Поиск по данным
Работать с данными удобно в том же разделе Discover, выбрав нужный шаблон индексов.
1. Для обнаружения доступных значений во всех полях достаточно ввести ключевую фразу в строку поиска.

2. Для фильтрации по определенному полю нужно указать его название, поставить двоеточие и ввести искомое значение.

3. При поиске можно использовать специальные символы для создания шаблонов, например *, а также логические операции or, and, not.

Мы рассмотрели лишь базовые примеры. Можно комбинировать различные операторы и фильтры, создавая сложные поисковые запросы.
Управление пользователями и доступом
Разграничение прав — стандарт безопасности для любой компании. Обычно доступ к данным предоставляется в соответствии с ролями работников:
- разработчики — видят логи только своих сервисов;
- аналитики — работают с конкретными витринами данных;
- администраторы — обладают полным доступом к кластеру.
За разграничение доступа в OpenSearch отвечает встроенный плагин Security, настраиваются его параметры — в одноименном разделе в Dashboards. Полный же список предустановленных плагинов можно посмотреть в нашей документаций.
В Selectel для каждого кластера OpenSearch автоматически создается администратор с ролью all_access — полный доступ. Он обладает неограниченными правами: может записывать данные в любые индексы и тенанты, а также управлять учетными записями других сотрудников. Именно в роли пользователя-администратора мы и создадим дополнительных пользователей.
Примеры
Создадим двух дополнительных пользователей с разными правами и доступом к единственному индексу (указан в скобках):
flight_analyst— аналитик авиакомпании (opensearch_dashboards_sample_data_flights);logs_engineer— инженер, отвечающий за веб-сервисы (opensearch_dashboards_sample_data_logs).
Создаем пользователей
1. В левом верхнем углу: Меню → раздел Management → Security → вкладка Internal users. В списке уже будет admin — созданный автоматически при развертывании кластера.
2. Нажмем Create internal user.
3. В поле Username вводим логин пользователя — flight_analyst.
4. В полях Password и Re-enter password задаем его пароль.
5. Нажимаем Create.

6. Аналогичные действия проделываем для logs_engineer.
Создаем роли с доступом к индексам
Помимо предопределенных ролей, в Dashboards можно создавать и собственные — с доступом к конкретным индексам. Каждой роли назначаются определенные разрешения — permissions. Их можно добавлять по отдельности или использовать группы действий — готовые наборы прав, которые также можно комбинировать между собой.
Сперва создадим роль для аналитика.
1. Раздел Security → вкладка Roles → Create role.
2. В поле Name даем название роли — например, flight_only.
3. В поле Cluster permissions добавляем права:
cluster:admin/opendistro/ism/policy/search;cluster:monitor/state;cluster:monitor/health.
Заполняем блок Index permissions.
- В поле Index вводим название индекса
opensearch_dashboards_sample_data_flights, далее в Index permissions выбираем для него праваindices:admin/get. - Нажимаем Add another index permission.
- В поле Index вводим
*, а Index permissions выбираемindices:monitor/settings/getиindices:monitor/stats. - Нажмите Create.
После создания страница роли должна выглядеть так.

Перечисленных разрешений достаточно, чтобы индексы отображались в разделе Index Management, а пользователь имел доступ к необходимым данным.
Аналогично создается роль logs_only — с доступом к индексу opensearch_dashboards_sample_data_logs.
Назначаем роли пользователям
1. В разделе Security → вкладка Roles → роль flight_only (надо нажать на нее) → вкладка Mapped users → Map users.
2. В поле Users выберем пользователя flight_analyst из списка и нажмем Map.

3. Повторим те же шаги для роли logs_only и пользователя logs_engineer.
Проверяем разграничение доступа
После создания пользователей и настройки всех прав получаем следующую матрицу доступа.
| Пользователь | Зона ответственности | Доступ к данным |
admin | Администратор кластера, создается автоматически при его развертывании | Все индексы: авиа, логи, ecommerce… |
flight_analyst | Аналитик авиакомпании | Только авиарейсы |
logs_engineer | Инженер, который отвечает за веб-сервисы | Только веб-логи |
Самое интересное — увидеть разграничения в деле.
Сначала войдем под учетной записью flight_analyst:
1. Завершим текущую сессию. Для этого перейдем на главную страницу, нажмем на иконку пользователя в правом верхнем углу, а далее — Log out.
2. Авторизуемся как flight_analyst.
3. Меню → раздел Management → Index Management → Indexes.
Права indices:monitor/settings/get и indices:monitor/stats позволяют видеть все индексы, но доступ у flight_analyst будет только к индексу opensearch_dashboards_sample_data_flights.

4. Нажмем на индекс opensearch_dashboards_sample_data_flights, чтобы получить о нем информацию.

Нажмем на любой другой индекс и… получим ошибку из‑за отсутствия прав.
5. Проделаем те же действия и для пользователя logs_engineer, чтобы убедиться, что у него есть доступ только к индексу opensearch_dashboards_sample_data_logs.
Разграничиваем доступ на уровне тенантов
Пока мы настраивали права на уровне отдельных индексов. Однако есть еще один способ — ограничивать доступ на уровне тенантов.
Тенанты в Dashboards — это изолированные рабочие пространства для визуализаций и дашбордов. Они позволяют разграничить доступ к аналитическим панелям между разными командами или проектами.
Помимо общего тенанта Global, где мы создавали пользователей, каждому доступно личное пространство — Private tenant. Администраторы также могут развертывать дополнительные тенанты для совместной работы определенных групп сотрудников.
Управлять тенантами можно в том же разделе Security → вкладка Tenants.

Строим дашборды
У нас уже есть готовые дашборды от OpenSearch — они установились вместе с пробными данными. Давайте посмотрим на них, а потом создадим свой.
Изучаем готовые дашборды
1. Откроем меню → раздел OpenSearch Dashboards → Dashboards. Перед нами — список готовых дашбордов.

2. Для примера откроем дашборд по авиарейсам — [Flights] Global Flight Dashboard.
На дашборде представлены ключевые метрики для глубокого анализа:
- распределение долей авиакомпаний на круговой диаграмме;
- динамика рейсов в сравнении со средней стоимостью билетов;
- статистика сбоев: количество отмен, задержек и их причины;
- география полетов на интерактивной карте;
- детальный журнал всех рейсов.

Ключевое преимущество OpenSearch Dashboards для анализа — полная интерактивность. Любой элемент на графике может служить фильтром. Например, если кликнуть по сектору авиакомпании Logstash Airways на круговой диаграмме, все остальные данные на панели автоматически отфильтруются по этому значению.
Любую визуализацию можно развернуть на весь экран для детального изучения. Например, в полноэкранном режиме работы с картой удобно исследовать конкретные авиаузлы. Так, при наведении курсора на аэропорт Шереметьево отобразятся все исходящие маршруты, а также точное количество направлений и совершенных рейсов.

Напомню, что дашборды построены на основе демонстрационных данных, которые не отражают реальной действительности.
Создаем свой дашборд
Стандартные панели полезны для быстрого старта, но для глубокого анализа часто требуются кастомные инструменты. Давайте создадим собственный простой дашборд, который на основе логов позволяет отслеживать:
- распределение HTTP-кодов — какие ответы сервера преобладают;
- интенсивность трафика — динамика запросов по часам;
- географию подключений — топ стран, из которых приходят запросы.
Наша первая визуализация — круговая диаграмма по кодам ответов
- Откроем меню и выберите Visualize.
- Нажмем Create visualization.
- Выберем тип диаграммы — Pie.
- В качестве источника возьмем индекс
opensearch_dashboards_sample_data_logs. - В блоке Metrics оставим
Slice size Count. - В блоке Buckets:
- Нажмем Add и выберем Split slices.
- В поле Aggregation — Terms.
- В поле Field —
response.keyword, который содержит коды ответов (200, 404, 500 и т. п.).
- Нажмем Update.
- Сохраним визуализацию: щелкнем по Save и дадим понятное название — например, HTTP Response Codes.

Вторая визуализация — запросы по времени
- Вернемся в раздел Visualize, нажмем Create visualization и выберем тип Area.
- Источник тот же — индекс
opensearch_dashboards_sample_data_logs. - В блоке Metrics оставим Y-axis Count.
- В блоке Buckets нажмем Add и добавим X-axis:
- В поле Aggregation выберите Date Histogram.
- В поле Field —
@timestamp. - В поле Minimum interval выберите Hour — для наших демонстрационных данных он дает лучшую наглядность графика.
- Нажмем Update.
- Сохраним визуализацию как Requests over time.
Третья визуализация — топ стран
- Create visualization → Vertical bar, индекс тот же.
- Buckets → Add → X-axis, Aggregation: Terms, Field:
geo.src. - Нажмем Update и сохраните как Top countries.
Собираем дашборд
Мы подготовили визуализации и теперь готовы приступить к созданию дашборда.
1. Перейдем в OpenSearch Dashboards → Dashboards.
2. Нажмем Create → Dashboard → Add.
3. В списке выберем все три созданные визуализации — они должны быть примерно в конце списка.

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

5. Сохраняем дашборд: нажимаем Save, даем название, скажем Web Logs Overview, и снова Save.
Созданный дашборд также появится в общем списке, который мы видели в подразделе про изучение готовых дашбордов.
Мониторинг
Мониторинг позволяет отслеживать состояние системы в реальном времени: выявлять сбои, анализировать производительность, предотвращать инциденты. Чем выше уровень детализации — тем точнее понимание, что и где пошло не так.
Удобнее всего разделить мониторинг на три условных уровнях:
- Инфраструктура (IaaS) — ресурсы виртуальных машин, такие как CPU, RAM, диск, сеть и другие.
- Кластер — здоровье нод, шардов, индексов, распределение данных.
- Приложение — логи, трассировки, метрики, бизнес-логика, ошибки, задержки.
Для первых двух уровней можно использовать Performance Analyzer — встроенный плагин OpenSearch, который уже предустановлен в кластере. Это мощный инструмент для сбора и визуализации метрик кластера и нод. Чтобы его использовать в Dashboards, потребуется дополнительная настройка, что выходит за рамки базового мониторинга и заслуживает отдельной статьи.
Даже встроенные инструменты позволяют настраивать мониторинг очень гибко, а чтобы полностью описать вообще все возможности, потребуется отдельная статья. В рамках этой инструкции просто пробежимся по нашим уровням мониторинга.
Мониторинг на уровне инфраструктуры
Базовый мониторинг инфраструктуры уже интегрирован в панель управления Selectel. Для анализа IaaS-метрик — состояние нод, потребление ресурсов — достаточно перейти на вкладку Мониторинг на странице кластера. Интерфейс выглядит следующим образом:

Мониторинг на уровне кластера
Оперативную диагностику состояния кластера можно провести в консоли Dev Tools, отправляя прямые API-запросы к системе:
1. GET /_cluster/health — узнать общее состояние кластера.

Статус green означает, что с кластером все хорошо.
2. GET /_cat/indices?v&s=store.size:desc — получить информацию об индексах: их здоровье, статусе, размере, количестве документов в каждом индексе, а также числе шардов и реплик.

Информацию обо всех индексах можно также посмотреть и в разделе Management → Index Management → Indexes.
С помощью запросов можно получать и другую информацию — например, распределение шардов по нодам, нагрузку, свободное место и тому подобном.
Метрики на уровне кластера можно собирать в отдельные индексы, создавать из них шаблоны, а потом визуализировать, строить дашборды и настраивать алерты.
Мониторинг на уровне приложения
Здесь мы отслеживаем, что происходит внутри сервисов: какие запросы идут, есть ли ошибки, задержки, какие операции тормозят. Раздел Observability объединяет аналитику приложений, логи, метрики, трассировки и дашборды.
Инструменты Application Analytics позволяют создавать пользовательские приложения для контроля доступности систем. Они объединяют логи с данными трассировок в единое представление. Такой подход помогает мгновенно переключаться между разными типами данных для быстрого поиска первопричин сбоев.
Логи
Посмотрим на один из наглядных примеров с готовыми данными.
1. Откроем меню и выберем Observability → Logs, а затем нажмем Add samples. Появится список готовых примеров.

2. Кликнем, например, на [Logs] Show errors sorted by list of hostnames and average bytes per ip — увидим ошибки, отсортированные по списку имен хостов и среднему количеству байтов на IP-адрес.

Можно самим создавать шаблоны на основе своих индексов через Index patterns, а затем фильтровать, сортировать и визуализировать, как в готовых примерах.
Метрики
Примеры данных доступны в индексе ss4o_metrics-otel-sample из демонстрационного набора Sample Observability Logs, Traces, and Metrics. Метрики представлены в формате OpenTelemetry и позволяют анализировать производительность системы: время выполнения HTTP-запросов, скорость ответа сервера и общую нагрузку на компоненты.
- В разделе Observability выберем Metrics.
- В поле Metrics source — OpenTelemetry.
- Возьмем индекс
ss4o_metrics-otel-sample. - В перечне доступных метрик посмотрим
http.client.duration— время выполнения HTTP-запросов. В этом индексе есть и другие метрики.

Можно настроить Prometheus для отправки метрик в OpenSearch.
Дашборд с логами
В разделе Observability → Dashboards есть готовый дашборд с логами [Logs] Web traffic Panel, который показывает различную информацию за определенные промежутки времени:
- использование оперативной памяти операционными системами;
- подсчет запросов;
- количество ответов, содержащих коды ошибок;
- размеры ответов в байтах и тому подобное.


Можно создать и свои дашборды, используя визуализации из Logs и Metrics.
Алерты
В разделе OpenSearch Plugins → Alerting создаются мониторы — задачи, которые запускаются по расписанию, запрашивают данные из индексов и оповещают пользователя по заданным триггерам. Например, можно создать алерт, если нагрузка на процессор станет больше 75% или задержки HTTP-запросов превысят 500 мс. Ниже — пример монитора метрик кластера.

Бэкапы
В OpenSearch резервные копии индексов называются снапшотами. В Dashboards есть специальный раздел для управления ими — Snapshot Management, который позволяет:
- создавать репозитории для хранения снапшотов;
- создавать, удалять и восстанавливать индексы;
- настраивать автоматическое создание индексов по расписанию с определенным сроком хранения.
Откроем меню и в разделе Management выберем Snapshot Management → Snapshots. Если уже создавался кластер OpenSearch в Selectel, увидим список существующих снапшотов.

Резервное копирование индексов в Selectel происходит автоматически — не нужно самостоятельно настраивать этот процесс или следить за выполнением задач. Система использует встроенный механизм снапшотов OpenSearch: «снимки» данных создаются каждые 30 минут и хранятся в течение 7 дней во внутреннем S3-совместимом хранилище. Подробные сведения о политике хранения и восстановлении доступны в нашей документации.
Так как создание снапшотов уже настроено «из коробки», посмотрим только восстановление индексов.
Меняем данные и создаем точку отката
Внесем изменения в данные — чтобы было, что восстанавливать. Для простоты эксперимента полностью удалим индекс с информацией об авиарейсах — opensearch_dashboards_sample_data_flights.
1. Для начала посмотрим список всех индексов — откроем меню и в разделе Management выберем Index Management → Indexes. В списке увидим индекс opensearch_dashboards_sample_data_flights.
2. Удалим наш индекс с авиарейсами — отметим его, нажмем Actions → Delete, а затем подтвердим действие.

Появились изменения, которые можно откатить.
Восстанавливаем данные
Как уже отмечалось, в Selectel в кластерах OpenSearch снапшоты создаются каждые 30 минут. Для восстановления можно выбрать один из последних — до внесения изменений.
1. В разделе Snapshot Management нажимаем Snapshots.
2. Отмечаем снапшот, из которого нужно восстановить индексы, нажимаем Restore.

3. В поле Specify restore option выбираем Restore specific indices.
4. Наш индекс — opensearch_dashboards_sample_data_flights.
5. В поле Rename restored indices оставляем Add prefix to restored index names. К имени индекса при восстановлении добавится префикс restored_.
6. В блоке Advanced options сбрасываем чекбокс Restore cluster state from snapshots. В OpenSearch в Selectel нельзя восстанавливать глобальное состояние кластера, так как оно влияет на безопасность его инфраструктуры.
В итоге форма восстановления снапшота должна выглядеть так:

7. Нажмем Restore snapshot. В правом нижнем углу экрана должно появиться уведомление об успешном восстановлении снапшота.

Проверяем восстановление
Посмотрим список индексов — в разделе Index Management нажмем Indexes.
В списке увидим restored_opensearch_dashboards_sample_data_flights — данные успешно восстановлены.

Заключение
Мы убедились, что OpenSearch Dashboards — полноценный инструмент для повседневной работы с кластером, который не требует дополнительных сервисов.
Начав с пустого кластера OpenSearch в Selectel, прошли полный цикл эксплуатации:
- наполнили систему данными и протестировали механизмы поиска;
- создали пользователей и разграничили доступ на уровне индексов;
- освоили визуализацию, изучив готовые дашборды и собрав свой собственный;
- внедрили мониторинг на уровнях инфраструктуры, кластера и приложений;
- проверили отказоустойчивость, восстановив данные из автоматического снапшота.
Возможности OpenSearch Dashboards выходят далеко за рамки этого обзора. Для глубокого погружения в инструменты визуализации и администрирования рекомендуем обратиться к официальной документации OpenSearch and OpenSearch Dashboards. В случаях, когда встроенной функциональности недостаточно, всегда можно интегрировать систему с внешними сервисами и расширить возможности управления кластером.
В общем, экспериментируйте и удачи вам в дашбордостроении!