惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threat Research - Cisco Blogs
A
Arctic Wolf
S
Securelist
O
OpenAI News
T
Threatpost
Forbes - Security
Forbes - Security
N
News and Events Feed by Topic
S
Secure Thoughts
H
Heimdal Security Blog
S
Security Affairs
P
Privacy International News Feed
C
Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
S
Security @ Cisco Blogs
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
T
Tailwind CSS Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hacker News: Ask HN
Hacker News: Ask HN
T
Troy Hunt's Blog
S
SegmentFault 最新的问题
腾讯CDC
V
Visual Studio Blog
Last Week in AI
Last Week in AI
H
Hacker News: Front Page
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Project Zero
Project Zero
WordPress大学
WordPress大学
NISL@THU
NISL@THU
博客园 - 【当耐特】
博客园 - Franky
Webroot Blog
Webroot Blog
博客园_首页
T
Tenable Blog
雷峰网
雷峰网
Google Online Security Blog
Google Online Security Blog
阮一峰的网络日志
阮一峰的网络日志
V2EX - 技术
V2EX - 技术
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
Lohrmann on Cybersecurity
The Hacker News
The Hacker News

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
OpenSearch Dashboards и как веб‑интерфейс упрощает работу с кластером
SergeyKardap · 2026-04-23 · via Все публикации подряд на Хабре

Мы уже рассказывали, что такое OpenSearch как сервис в Selectel и как легко и быстро начать им пользоваться. Если коротко — это managed-решение, где кластер развертывается за несколько минут, а все заботы берет на себя провайдер: обслуживает кластеры, настраивает СУБД, обеспечивает отказоустойчивость, беспокоится о бэкапах и масштабировании, предоставляет  поддержку.

Но дальше возникает вопрос — как с этим кластером работать? Как настроить мониторинг, визуализировать данные и метрики, работать с бэкапами, управлять пользователями и доступами? Можно, конечно, отправлять curl-запросы к API. Можно подключать сторонние инструменты, вроде Grafana. Но есть способ проще и удобнее — OpenSearch Dashboards.

Привет, Хабр! Меня зовут Сергей Кардапольцев, я технический писатель в Selectel. В этой статье расскажу, как можно упростить работу с кластером OpenSearch с помощью OpenSearch Dashboards.

Содержание
Что такое OpenSearch Dashboards
Как начать использовать OpenSearch Dashboards в Selectel
        → Создаем кластер 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. Обязательно скопируйте и сохраните пароль — его нельзя посмотреть в панели управления, можно только изменить.

9. Нажмите Создать кластер.

Дождитесь, пока все группы нод перейдут в статус ACTIVE, а сам кластер — в RUNNING. Поздравляю! — кластер готов к работе.

Бесплатная миграция в Selectel

Начислим до 1 000 000 бонусов на два месяца. А наши инженеры подготовят план и поддержат на всех этапах миграции.

Подробнее →

Подключаемся к 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. В левом верхнем углу: Меню → раздел ManagementSecurity → вкладка 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 → вкладка RolesCreate role.

2. В поле Name даем название роли — например, flight_only.

3. В поле Cluster permissions добавляем права:

  • cluster:admin/opendistro/ism/policy/search;

  • cluster:monitor/state;

  • cluster:monitor/health.

Заполняем блок Index permissions.

  1. В поле Index вводим название индекса opensearch_dashboards_sample_data_flights, далее в Index permissions выбираем для него права indices:admin/get.

  2. Нажимаем Add another index permission.

  3. В поле Index вводим *, а в Index permissions выбираем indices:monitor/settings/get и indices:monitor/stats.

  4. Нажмите 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. Меню → раздел ManagementIndex 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 DashboardsDashboards. Перед нами — список готовых дашбордов.

2. Для примера откроем дашборд по авиарейсам — [Flights] Global Flight Dashboard.

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

  • распределение долей авиакомпаний на круговой диаграмме;

  • динамика рейсов в сравнении со средней стоимостью билетов;

  • статистика сбоев: количество отмен, задержек и их причины;

  • география полетов на интерактивной карте; 

  • детальный журнал всех рейсов.

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

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

Напомню, что дашборды построены на основе демонстрационных данных, которые не отражают реальной действительности.

Создаем свой дашборд

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

  • распределение HTTP-кодов — какие ответы сервера преобладают;

  • интенсивность трафика — динамика запросов по часам;

  • географию подключений — топ стран, из которых приходят запросы.

Наша первая визуализация — круговая диаграмма по кодам ответов

  1. Откроем меню и выберем Visualize.

  2. Нажмем Create visualization.

  3. Выберем тип диаграммы — Pie.

  4. В качестве источника возьмем индекс opensearch_dashboards_sample_data_logs.

  5. В блоке Metrics оставим Slice size Count.

  6. В блоке Buckets:

    1. Нажмем Add и выберем Split slices.

    2. В поле AggregationTerms.

    3. В поле Fieldresponse.keyword, который содержит коды ответов (200, 404, 500 и т. п.).

  7. Нажмем Update.

  8. Сохраним визуализацию: щелкнем по Save и дадим понятное название — например, HTTP Response Codes.

Вторая визуализация — запросы по времени

  1. Вернемся в раздел Visualize, нажмем Create visualization и выберем тип Area.

  2. Источник тот же — индекс opensearch_dashboards_sample_data_logs.

  3. В блоке Metrics оставим Y-axis Count.

  4. В блоке Buckets нажмем Add и добавим X-axis:

    1. В поле Aggregation выберите Date Histogram.

    2. В поле Field@timestamp.

    3. В поле Minimum interval выберите Hour — для наших демонстрационных данных он дает лучшую наглядность графика.

  5. Нажмем Update.

  6. Сохраним визуализацию как Requests over time.

Третья визуализация — топ стран

  1. Create visualizationVertical bar, индекс тот же.

  2. Buckets AddX-axis, Aggregation: Terms, Field: geo.src.

  3. Нажмем Update и сохраним как Top countries.

Собираем дашборд

Мы подготовили визуализации и теперь готовы приступить к созданию дашборда.

1. Перейдем в OpenSearch DashboardsDashboards.

2. Нажмем Create Dashboard Add.

3. В списке выберем все три созданные визуализации — они должны быть примерно в конце списка.

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

5. Сохраняем дашборд: нажимаем Save, даем название, скажем Web Logs Overview, и снова Save.

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

Мониторинг

Мониторинг позволяет отслеживать состояние системы в реальном времени: выявлять сбои, анализировать производительность, предотвращать инциденты. Чем выше уровень детализации — тем точнее понимание, что и где пошло не так.

Удобнее всего разделить мониторинг на три условных уровня:

  1. Инфраструктура (IaaS) — ресурсы виртуальных машин, такие как CPU, RAM, диск, сеть и другие.

  2. Кластер — здоровье нод, шардов, индексов, распределение данных.

  3. Приложение — логи, трассировки, метрики, бизнес-логика, ошибки, задержки.

Для первых двух уровней можно использовать Performance Analyzer — встроенный плагин OpenSearch, который уже предустановлен в кластере. Это мощный инструмент для сбора и визуализации метрик кластера и нод. Чтобы его использовать в Dashboards, потребуется дополнительная настройка, что выходит за рамки базового мониторинга и заслуживает отдельной статьи.

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

Мониторинг на уровне инфраструктуры

Базовый мониторинг инфраструктуры уже интегрирован в панель управления Selectel. Для анализа IaaS-метрик — состояние нод, потребление ресурсов — достаточно перейти на вкладку Мониторинг на странице кластера. Интерфейс выглядит следующим образом:

Мониторинг на уровне кластера

Оперативную диагностику состояния кластера можно провести в консоли Dev Tools, отправляя прямые API-запросы к системе:

1. GET /_cluster/health — узнать общее состояние кластера.

Статус green означает, что с кластером все хорошо.

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

Информацию обо всех индексах можно также посмотреть и в разделе ManagementIndex ManagementIndexes.

С помощью запросов можно получать и другую информацию — например, распределение шардов по нодам, нагрузку, свободное место и тому подобное.

Метрики на уровне кластера можно собирать в отдельные индексы, создавать из них шаблоны, а потом визуализировать, строить дашборды и настраивать алерты.

Мониторинг на уровне приложения

Здесь мы отслеживаем, что происходит внутри сервисов: какие запросы идут, есть ли ошибки, задержки, какие операции тормозят. Раздел Observability объединяет аналитику приложений, логи, метрики, трассировки и дашборды.

Инструменты Application Analytics позволяют создавать пользовательские приложения для контроля доступности систем. Они объединяют логи с данными трассировок в единое представление. Такой подход помогает мгновенно переключаться между разными типами данных для быстрого поиска первопричин сбоев.

Логи

Посмотрим на один из наглядных примеров с готовыми данными.

1. Откроем меню и выберем ObservabilityLogs, а затем нажмем 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-запросов, скорость ответа сервера и общую нагрузку на компоненты.

  1. В разделе Observability выберем Metrics.

  2. В поле Metrics sourceOpenTelemetry.

  3. Возьмем индекс ss4o_metrics-otel-sample.

  4. В перечне доступных метрик посмотрим 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. Удалим наш индекс с авиарейсами — отметим его, нажмем ActionsDelete, а затем подтвердим действие.

Появились изменения, которые можно откатить.

Восстанавливаем данные

Как уже отмечалось, в 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. В случаях, когда встроенной функциональности недостаточно, всегда можно интегрировать систему с внешними сервисами и расширить возможности управления кластером.

В общем, экспериментируйте и удачи вам в дашбордостроении!