Работа с OpenSearch и анализ логов
Этот вебинар посвящен с первоначальным ознакомлением работы с OpenSearch и эффективным методам анализа логов.
Дудник Н.В.
Главный инженер по тестированию.

Контакты
Telegram Канал (Инфо)
Курсы и Обучение
Информационный канал о курсах по тестированию и IT.
Telegram Канал (Сообщество)
Сообщество ProtestingInfo
Основной канал сообщества тестировщиков: новости, статьи, обсуждения.
Instagram*
Визуальный Контент
Визуальный контент, анонсы, истории из мира тестирования.
Запрещенная организация на территории РФ
План вебинара: От логирования к анализу в OpenSearch
Введение: Знакомство и Обзор
  • Обо мне
Основы Логирования: Понимание Данных
  • Определение лога и процесса логирования
  • Уровни логирования
  • Типы логов
  • Содержимое логов
OpenSearch: Глубокое Погружение
  • Что такое OpenSearch?
  • Архитектура OpenSearch (Компоненты)
  • Основные концепции
  • Взаимодействие компонентов в OpenSearch
  • OpenSearch Dashboards
  • Query DSL: Язык запросов и их типы
  • Структура лога
  • Базовый поиск DQL
  • Поиск с использованием фильтров
  • Применение множественных фильтров
  • Разбор структуры реального лога
Практическое Применение: Инсайты и Инструменты
  • Эффективный анализ логов в OpenSearch
  • Инструменты для логирования
Завершение: Ресурсы и Обратная связь
  • Информация про онлайн курс по тестированию бэкенда
  • Рекомендованная литература
  • Сессия вопросов и ответов
О себе
Образование
  • ОмГУ Ф.М. Достоевского, Физический факультет
Опыт работы
  • 6 лет преподавателем по физике
  • Более 10 лет в тестировании
  • Участие в проектах: Luxoft (Boeing, DHL, Drawback), Wiley (Wiley Online Library)
Текущая должность
  • Главный инженер по тестированию в Сбере (платформа ЕФС)
Интересы и проекты
  • Делюсь знаниями и собираю информацию по тестированию
Логи и Логирование: Основные Понятия
Что такое Логи?
Логи (лог-файлы) — это текстовые файлы, содержащие структурированную информацию о событиях, происходящих в системе (сервере, приложении или компьютере) в процессе её работы.
По сути, логи — это цифровой журнал всех операций и состояний системы.
Что хранится в логах?
Логи фиксируют разнообразные события и данные, включая:
  • Действия пользователей (например, вход в систему, выполненные операции, возникающие ошибки).
  • Системные события и информацию о состоянии компонентов (старт/остановка сервисов, использование ресурсов).
  • Взаимодействие между различными частями системы или внешними сервисами.
  • Точное время и дата произошедших событий.
Что такое Логирование?
Логирование — это систематический процесс записи, фиксации и структурирования информации о событиях и состоянии работающей системы в специальные лог-файлы.
Назначение логов
Логи критически важны для:
  • Мониторинга: отслеживание текущего состояния и производительности системы.
  • Отладки и диагностики: быстрое выявление причин сбоев и ошибок.
  • Безопасности: обнаружение подозрительной активности и попыток несанкционированного доступа.
  • Анализа: изучение поведения пользователей и эффективности работы системы для дальнейших улучшений.
Уровни логирования
  • Имеется ряд уровней логирования, начну по порядку сверху вниз (хочу отметить, что я привела в пример всех встречающихся мне уровней логирования, и эти уровни логирования могут отличаться в рамках требований по фиче)
  • ⚙️ALL фиксируются события с уровнями: TRACE, DEBUG, INFO, WARN(ING), ERROR, CRITICAL(FATAL), OFF - происходит логирование всех событий, описание которых укажу по порядку:
  • ⚙️TRACE - пошаговые записи процесса, полезен при локализации ошибки;
  • ⚙️DEBUG - детальное логирование системной информации для последующего использования в отладке, запросы и ответы к внешним системам, успешная обработка записи и др.;
  • ⚙️INFO - информация о событиях, не приводящих к ошибкам в работе модулей, общая информация о работе службы или сервиса, события переходов/запросов с минимальным набором входящих параметров;
  • ⚙️WARN(ING) - информация о событиях, которые могут привести к ошибкам в работе модулей, получение пустого запроса от фронта, данные не найдены в справочнике, некорректный параметр запроса;
  • ⚙️ERROR - информация об ошибках, возникших в работе модулей, интеграционные взаимодействия, при которых внешняя система вернула код ошибки;
  • ⚙️CRITICAL - информация о критических ошибках, возникших в работе модулей;
  • ⚙️FATAL - сбой работоспособности приложения, нет доступа к базе данных и т.д;
  • ⚙️OFF - логирование выключено
Уровни логирования
Система логирования позволяет фиксировать события в приложении, помогая отслеживать его работу и диагностировать проблемы. Каждый уровень логирования имеет свою семантику и включает в себя все более критичные уровни. Настройка уровня логирования определяет, какие события будут записаны: если выбран уровень, например, INFO, то будут логироваться события уровней INFO, WARNING, ERROR и CRITICAL.
1
DEBUG
Детальная отладка
Фиксирует события уровней: DEBUG, INFO, WARNING, ERROR, CRITICAL.
  • Подробная системная информация для отладки.
  • Запросы и ответы к внешним системам.
  • Успешная обработка записей.
Когда использовать: Во время разработки и для глубокой диагностики проблем.
2
INFO
Информационные сообщения
Фиксирует события уровней: INFO, WARNING, ERROR, CRITICAL.
  • Общая информация о работе сервиса или модуля.
  • События, не приводящие к ошибкам.
  • События переходов/запросов с минимальными параметрами.
Когда использовать: Для мониторинга общего состояния приложения в рабочей среде.
3
WARNING
Предупреждения
Фиксирует события уровней: WARNING, ERROR, CRITICAL.
  • События, которые могут потенциально привести к ошибкам.
  • Получение пустого запроса.
  • Данные не найдены в справочнике или некорректные параметры запроса.
Когда использовать: Для выявления потенциальных проблем, не нарушающих работу немедленно.
4
ERROR
Ошибки
Фиксирует события уровней: ERROR, CRITICAL.
  • Ошибки, возникшие в работе модулей.
  • Интеграционные взаимодействия, при которых внешняя система вернула код ошибки.
Когда использовать: Для регистрации сбоев в работе функций, требующих внимания.
5
CRITICAL
Критические сбои
Фиксирует события уровня: CRITICAL.
  • Критические ошибки, полностью нарушающие работоспособность приложения.
  • Сбой работоспособности приложения (например, нет доступа к базе данных).
Когда использовать: Для оповещения о серьезных проблемах, требующих немедленного вмешательства.
Типы логов
Эффективное логирование критически важно для мониторинга состояния систем и диагностики проблем. Различные типы логов предназначены для отслеживания специфических аспектов работы приложения и инфраструктуры. Понимание их назначения помогает в быстрой локализации и устранении неисправностей, а также в обеспечении безопасности и производительности.
Системные и Прикладные
Мониторинг внутренних процессов
Эти логи фиксируют события, связанные с работой операционной системы и самого приложения.
  • Запуск и остановка сервисов.
  • Внутренние ошибки выполнения кода.
  • Использование системных ресурсов.
Когда использовать: Для диагностики производительности, стабильности и выявления внутренних сбоев приложения.
Пользовательские
Действия пользователей
Отслеживают взаимодействие пользователя с приложением или сервисом.
  • Навигация по разделам.
  • Изменение настроек пользователя.
  • Выполнение операций (например, добавление в корзину, отправка формы).
Когда использовать: Для анализа поведения пользователей, отладки пользовательского интерфейса и выявления ошибок, связанных с их действиями.
Интеграционные
Взаимодействие с внешними системами
Содержат информацию об обмене данными между вашим приложением и сторонними сервисами.
  • Запросы и ответы к API внешних систем.
  • Ошибки при интеграции.
  • Время ответа внешних сервисов.
Когда использовать: Для мониторинга и отладки взаимодействий с внешними API, партнерами и сторонними сервисами.
Серверные
Состояние и доступность серверов
Фиксируют события, относящиеся к работе веб-серверов и инфраструктуры.
  • HTTP-запросы и ответы.
  • Ошибки веб-сервера (например, 5xx коды).
  • Доступность ресурсов.
Когда использовать: Для контроля доступности сервисов, анализа нагрузки и выявления проблем на уровне инфраструктуры.
Базы данных
Операции с данными
Отражают все процессы, связанные с обращением к базам данных.
  • Выполнение SQL-запросов.
  • Ошибки базы данных.
  • Медленные запросы.
Когда использовать: Для оптимизации производительности запросов, диагностики проблем с хранением данных и обеспечения целостности БД.
Авторизация и Аутентификация
Управление доступом
Записывают события, связанные с безопасностью и доступом к системе.
  • Успешные и неудачные попытки входа.
  • Смена паролей и восстановление доступа.
  • Выход из системы.
Когда использовать: Для аудита безопасности, выявления несанкционированных попыток доступа и отслеживания активности пользователей.
Что хранится в логах?
Логи — это бесценный источник данных о работе системы, действиях пользователей и взаимодействиях с внешними сервисами. Понимание их содержания критически важно для эффективного мониторинга, отладки и аудита безопасности.
Временные метки и Идентификаторы
Определяют точное время события и его уникальную привязку, обеспечивая хронологическую упорядоченность.
  • Дата и время события
  • Уникальный ID операции
Уровень и Тип События
Классифицируют событие по важности и категории для быстрой фильтрации и приоритизации реагирования.
  • Уровень лога (INFO, WARN, ERROR, DEBUG)
  • Категория: "Безопасность", "Производительность"
Информация о Пользователе и Сессии
Позволяет соотнести события с конкретными пользователями или их активными сессиями в системе.
  • ID пользователя
  • ID сессии
  • Маскированные пользовательские данные
Данные Запросов и Ответов
Фиксируют детали обмена данными между компонентами системы или внешними сервисами, включая параметры и результаты операций.
  • Отправленный запрос
  • Полученный ответ от сервера
Метрики Производительности
Отражают время, затраченное на выполнение ключевых операций или интеграционных процессов.
  • Время выполнения запросов к БД
  • Длительность интеграционных вызовов
Текстовые Сообщения
Предоставляют детальное описание произошедшего события, включая диагностическую информацию или сообщения об ошибках.
  • Сообщения об ошибке
  • Информационные уведомления
Конфиденциальность Данных
Чувствительная информация, такая как персональные данные, всегда подвергается маскированию перед сохранением для обеспечения безопасности.
  • Маскирование номеров кредитных карт
  • Скрытие личных идентификаторов
Работа с Opensearch. Что такое OpenSearch?
OpenSearch — ключевой инструмент для QA-инженеров, работающих с бэкенд-системами и управлением логами.
Основные характеристики:
  • Open-source поисковая система: Является открытым форком (ответвлением) Elasticsearch.
  • Распределённая база данных: Предназначена для полнотекстового поиска и аналитики.
  • Анализ логов приложений: Идеально подходит для эффективного анализа и обработки больших объемов логов.
  • Хранение и индексация данных: Эффективно хранит и индексирует миллионы документов.
  • Быстрый поиск проблем: Позволяет оперативно выявлять и локализовывать проблемы в логах.
Определение:
OpenSearch — это мощная распределённая система поиска и аналитики, изначально разработанная как открытый форк Elasticsearch. Она была создана компанией Amazon для обеспечения свободного доступа к инструментам поиска после изменения лицензионной политики Elasticsearch, предоставляя сообществу надёжное и гибкое решение.
OpenSearch Stack: Основные Компоненты
Современная экосистема OpenSearch, ранее известная как ELK Stack, включает в себя три ключевых компонента, обеспечивающих сбор, анализ и визуализацию данных.
OpenSearch (Ядро)
Основная база данных и поисковый движок, предназначенный для полнотекстового поиска и аналитики.
  • Хранение и индексация данных (индексы).
  • Полнотекстовый поиск и агрегация данных.
  • Выполнение сложных запросов.
  • Для QA-инженеров: Составление запросов к OpenSearch с использованием Query DSL. Поддерживает OpenSearch Dashboards Query Language (DQL) с упрощённым синтаксисом и Lucene Query Syntax для базовых текстовых запросов.
Logstash (Обработчик Данных)
Конвейер обработки данных, ответственный за сбор, трансформацию и обогащение логов из различных источников.
  • Получение логов из множества источников.
  • Парсинг и трансформация данных.
  • Обогащение логов дополнительной информацией.
  • Отправка обработанных данных в OpenSearch.
OpenSearch Dashboards (Визуализация)
Веб-интерфейс для взаимодействия с OpenSearch, предназначенный для визуализации и мониторинга данных.
  • Визуальный поиск и анализ данных.
  • Создание графиков и диаграмм.
  • Построение дашбордов для оперативного мониторинга.
  • Экспорт данных.
Ключевые Концепции OpenSearch
Индекс (Index)
Индекс — это логическое хранилище для связанных данных, аналогичное таблице в реляционной базе данных, но оптимизированное для эффективного поиска и анализа логов.
  • Что это: Основная единица организации данных в OpenSearch.
  • Зачем нужно: Группирует данные (например, логи одного приложения или за определенный период), обеспечивая быстрый поиск и агрегацию.
  • Для тестировщика: Позволяет фильтровать и исследовать конкретные наборы логов при поиске ошибок или проверке функциональности.
Документ
Документ представляет собой одну запись в логе или отдельную единицу данных в OpenSearch, хранимую в формате JSON.
  • Что это: Базовая единица информации, индексируемая в OpenSearch.
  • Зачем нужно: Содержит все поля и значения, описывающие одно событие или объект.
  • Для тестировщика: Изучение отдельных документов помогает понять детали конкретных событий, ошибок или поведения системы.
Шард (Shard)
Шард — это горизонтальный раздел индекса, позволяющий распределять данные по нескольким узлам кластера для повышения масштабируемости и производительности.
  • Что это: Самостоятельный "мини-индекс", хранящий часть данных основного индекса.
  • Зачем нужно: Обеспечивает параллельную обработку запросов и распределенное хранение больших объемов данных.
  • Для тестировщика: Хотя прямое взаимодействие редко, понимание шардов помогает оценить, как система обрабатывает и ищет данные в масштабных средах.
Кластер (Cluster)
Кластер — это группа узлов (узел (Node) – сервер, часть кластера) OpenSearch, работающих совместно для хранения, индексирования и поиска данных, обеспечивая отказоустойчивость и масштабируемость.
  • Что это: Совокупность всех узлов OpenSearch, включая Master-узлы (управление), Data-узлы (хранение) и Client-узлы (прием запросов).
  • Зачем нужно: Обеспечивает высокодоступную и масштабируемую инфраструктуру для работы с данными.
  • Для тестировщика: Взаимодействие с кластером происходит через API или Dashboards. Понимание структуры кластера помогает в диагностике общих проблем производительности и доступности системы.
Работа компонентов вместе в OpenSearch
Эта диаграмма иллюстрирует типичный поток данных в экосистеме OpenSearch, от сбора логов до их визуализации и анализа.
1
Приложение
Генерирует события и записывает их в локальные лог-файлы.
2
Filebeat
Легковесный агент, осуществляющий сбор лог-файлов и метрик с различных источников, затем безопасно пересылает их для дальнейшей обработки.
3
Logstash
Мощный конвейер обработки данных, который парсит, фильтрует, обогащает и трансформирует полученные логи перед их индексацией.
4
OpenSearch
Распределенный поисковый и аналитический движок, ответственный за индексирование, хранение и управление обработанными данными.
5
Dashboards
Интерфейс для визуализации, интерактивного исследования и анализа данных, хранящихся в OpenSearch, посредством дашбордов и отчетов.
Opensearch Dashboards, для старта достаточно знать:
  • Overview
  • Discover – исследование логов в реальном времени
  • Dashboards – комбинирование визуализаций
  • Visualize – графики и диаграммы
Попробовать на практике:
Демострация: OpenSearch Dashboards - пояснения по интерфейсу
OpenSearch Dashboards - веб-интерфейс для работы с логами.
Давайте разберём все элементы:
dm_search (название индекса/search)
├── Search field names (поиск по названиям полей)
├── Filter by type (0) (фильтровать по типу данных)
├── Selected fields (выбранные поля для отображения)
│   └── _source
└── Available fields (доступные поля в индексе)
    ├── _id
    ├── _index
    ├── _score
    └── _type
Индекс: dm_search
├─ Назначение: это индекс для поиска и анализа данных
├─ Содержит: N+ документов (логов)
├─ Тип данных: JSON объекты с информацией о сущностях
└─ Как его создали: Logstash парсил данные и положил сюда
Query DSL: Язык запросов OpenSearch
Query DSL (Domain-Specific Language) — это специализированный язык запросов в формате JSON, предназначенный для взаимодействия с OpenSearch. Он позволяет формулировать сложные запросы, включающие фильтры, агрегации и поиск, используя иерархическую структуру данных JSON.
Пример запроса в Query DSL
GET logs/_search { "query": { "match": { "level": "ERROR" } } }
В этом примере, запрос находит все документы (логи), где значение поля "level" точно соответствует "ERROR".
Основные операторы Query DSL
match
Полнотекстовый поиск с учетом анализа текста.
term
Поиск точного значения поля (без анализа текста).
range
Поиск значений в заданном диапазоне (для дат, чисел).
exists
Проверка наличия определенного поля в документе.
wildcard
Поиск по маске с символами * (любое количество символов) и ? (один символ).
fuzzy
Поиск с учетом возможных опечаток или неточного совпадения.
regex
Поиск по регулярным выражениям.
query_string
Поиск с использованием булевой логики в одной строке запроса.
Основа лога
  • Expanded document (раскрытый документ с полной информацией)
  •    │  ├─ Table (таблица с полями)
  •    │  └─ JSON (полное JSON представление)
  • Каждая строка в таблице — это одно поле документа
  • "поле" → "значение"
  • Это полная информация о ОДНОМ логе
Основные поля в индексе
_id (служебное поле)
_id: c863f091-ce21-4a54-9d62-6846323a3ec5
Уникальный идентификатор документа в OpenSearchOpenSearch использует для связи документов
Можно использовать в поиске, если нужен конкретный лог
parentEntityId (связь между сущностями)
parentEntityId: 00000000-0000-0000-0000-0000000000
Поиск с помощью фильтров
Фильтры позволяют эффективно сужать область поиска и выделять только релевантные данные в OpenSearch Dashboards, избавляя от необходимости писать сложные JSON-запросы вручную.
Визуальное применение фильтров
Кнопка "Add filter" предоставляет интуитивно понятный способ добавления условий поиска без прямого написания Query DSL.
Пример фильтра по полю "_id":
  1. Нажмите "Add filter".
  1. Выберите поле "_id".
  1. В Dashboard будет автоматически сгенерирован соответствующий Query DSL.
Пример Query DSL для фильтра по "_id":
{ "query": { "match_phrase": { "_id": "efc3bf99-f0a3-4972-bbe7-3a9dc5f91648" } } }
Пошаговая инструкция: Применение фильтров в Discover
  1. Перейдите на страницу Discover.
  1. В выпадающем списке под кнопкой Add filter выберите нужный шаблон индекса.
  1. Нажмите кнопку Add filter и добавьте необходимые фильтры, используя предложенные поля и операторы.
  1. В текстовом поле Search введите дополнительный поисковый запрос при необходимости.
  1. Нажмите Enter для запуска поиска и применения всех фильтров.
Расширенный Поиск с DQL: Множественные Фильтры (AND/OR/NOT)
Для выполнения сложных поисковых запросов в OpenSearch Dashboards Discover, особенно при необходимости одновременного учета нескольких условий, используются множественные фильтры. Они позволяют точно настроить критерии поиска, комбинируя различные условия с помощью логических операторов.
DQL (Discover Query Language) — это короткий текстовый синтаксис, который используется в строке поиска Discover (рядом с кнопкой DQL) для быстрого и эффективного построения запросов.
Синтаксис DQL и Логические Операторы
DQL поддерживает стандартные логические операторы для комбинирования условий поиска:
  • AND: Документ должен соответствовать всем указанным условиям.
  • OR: Документ должен соответствовать хотя бы одному из указанных условий.
  • NOT: Документ не должен соответствовать указанному условию.
Операторы должны быть написаны заглавными буквами. Для поиска по фразе используйте кавычки.
Примеры Использования DQL
1. Комбинирование полей с оператором AND
Используется для поиска документов, где несколько полей соответствуют определенным значениям.
entityType: 4 AND title: "nadinka3704"
Находит документы, где значение поля entityType равно 4 И значение поля title точно соответствует "nadinka3704".
entityType: 4 AND title: "Login_24"
Находит документы, где значение поля entityType равно 4 И значение поля title точно соответствует "Login_24".
Расширенный Поиск с DQL: Множественные Фильтры (AND/OR/NOT)
2. Поиск по частичному совпадению с подстановочными символами
Символ * используется для поиска по частичному совпадению значений полей (т.е. "содержит значение").
id: 00060445-7419-435f-a16a-541697836f4c AND text: *Opensearch*
Находит документы с указанным id И содержащие строку "Opensearch" в поле text.
text: *Opensearch*
Находит все документы, в поле text которых встречается строка "Opensearch".
3. Использование операторов OR и NOT
Эти операторы позволяют включать документы, соответствующие одному из нескольких условий (OR), или исключать документы, соответствующие определенным критериям (NOT).
entityType: 4 OR entityType: 5
Находит документы, где entityType равен 4 ИЛИ 5.
NOT title: "nadinka3704"
Находит все документы, где поле title НЕ соответствует "nadinka3704".
entityType: 4 AND NOT title: "nadinka3704"
Находит документы, где entityType равен 4 И title НЕ соответствует "nadinka3704".
Демострация: OpenSearch Dashboards
OpenSearch Dashboards - веб-интерфейс для работы с логами.
Давайте разберём все элементы:
Служебные поля OpenSearch
  • _source — содержит исходные данные документа.
  • _id — уникальный идентификатор документа.
  • _index — имя индекса, где хранится документ.
  • _score — показатель релевантности документа запросу.
  • _type — тип документа.
Анализ структуры документа: Служебные поля OpenSearch
При работе с логами и данными в OpenSearch важно понимать структуру документов, особенно служебные поля, которые система добавляет автоматически. Эти поля помогают в индексации, поиске и управлении данными.
1
_id
Что это: Уникальный идентификатор документа в OpenSearch.
Использование в поиске (DQL):
_id: "c863f091-ce21-4a54-9d62-6846323a3ec5"
Query DSL (пример):
{ "query": { "term": { "_id": "c863f091-ce21-4a54-9d62-6846323a3ec5" } } }
2
_index
Что это: Название индекса, в котором хранится документ.
Использование в поиске (DQL):
_index: dm_search
Query DSL (пример):
{ "query": { "term": { "_index": "dm_search" } } }
3
_score
Что это: Показатель релевантности документа к поисковому запросу. Используется для ранжирования результатов поиска (чем выше значение, тем релевантнее документ).
Использование: Применяется для сортировки результатов; прямое фильтрование по этому полю обычно не производится.
4
_type
Что это: Устаревшее поле. В современных версиях OpenSearch не используется и может быть проигнорировано.
Использование: Не применяется для поиска или фильтрации.
Пример исходного JSON документа
Ниже представлен пример документа в формате JSON, где можно увидеть упомянутые служебные поля, а также пользовательские поля, такие как entityType и title.
{ "_id": "c863f091-ce21-4a54-9d62-6846323a3ec5", "_index": "dm_search", "_score": 0, "_type": "-", "entityType": 4, "id": "c863f091-ce21-4a54-9d62-6846323a3ec5", "parentEntityId": "00000000-0000-0000-0000-0000000000", "title": "login_24" }
Анализ структуры документа: Пользовательские поля (которые логировало приложение) OpenSearch
При работе с логами и данными в OpenSearch важно понимать структуру документов, особенно служебные поля, которые система добавляет автоматически. Эти поля помогают в индексации, поиске и управлении данными.
1
entityType: 4 - тип сущности (объекта) в приложении
Пример значений:
├─ 1 = topic
├─ 2 = comment
├─ 3 = ?
├─ 4 = сессия входа ← это наш случай
Использование в поиске (DQL):
entityType: 4
2
id: c863f091-ce21-4a54-9d62-6846323a3ec5
└─ Что это: ID конкретной сущности в вашей базе данных
Использование в поиске (DQL):
id: c863f091-ce21-4a54-9d62-6846323a3ec5 Для поиска всех логов этого объекта
3
parentEntityId: 00000000-0000-0000-0000-0000000000
└─ Что это: ID родительской сущности (если существует)
Примеры:
├─ Сущность общего форума → parentEntityId
Использование в поиске (DQL):
entityType: 4
4
title: login_24
└─ Что это: логин пользователя
Примеры:
├─ "login_24"
├─ “nadinka”
Использование в поиске (DQL):
DQL: title: "login_24" DQL: title: *login* (содержит "login") DQL: title: login* (начинается с "login")
Пример исходного JSON документа
Ниже представлен пример документа в формате JSON, где можно увидеть упомянутые служебные поля, а также пользовательские поля, такие как entityType и title.
{ "_id": "c863f091-ce21-4a54-9d62-6846323a3ec5", "_index": "dm_search", "_score": 0, "_type": "-", "entityType": 4, "id": "c863f091-ce21-4a54-9d62-6846323a3ec5", "parentEntityId": "00000000-0000-0000-0000-0000000000", "title": "login_24" }
Сравнение OpenSearch Query DSL и DQL
OpenSearch предоставляет два основных языка для запросов к данным: DQL (OpenSearch Dashboards Query Language) для быстрых и интуитивных запросов в интерфейсе Dashboards, и Query DSL (Domain Specific Language) для мощных и сложных запросов через OpenSearch API.
Query DSL (Domain Specific Language)
Что это: Полноценный язык запросов на основе JSON, используемый для взаимодействия с OpenSearch API. Позволяет создавать сложные, гибкие и мощные запросы, включая агрегации, вложенные запросы и тонкую настройку поиска.
Особенности:
  • JSON-структура.
  • Используется для API-запросов и в консоли Dev Tools.
  • Поддерживает все возможности OpenSearch.
  • Более мощный и гибкий, но сложнее в написании.
Примеры использования:
Пример 1: Поиск по точному значению поля
Найти все документы, где поле entityType равно 4:
{ "query": { "term": { "entityType": 4 } } }
Найти все документы, где level равно "ERROR":
{ "query": { "term": { "level": "ERROR" } } }
Пример 2: Поиск по частичному совпадению (содержит текст)
Найти все логи, где parentEntityId содержит "0000":
{ "query": { "wildcard": { "parentEntityId": "*0000*" } } }
DQL (OpenSearch Dashboards Query Language)
Что это: Упрощенный синтаксис запросов, специально разработанный для использования в полях поиска OpenSearch Dashboards. Идеален для быстрых, интерактивных фильтраций и поиска в журналах и данных.
Особенности:
  • Простой, интуитивно понятный синтаксис.
  • Вводится напрямую в строке поиска Dashboards.
  • Быстр для базовой фильтрации.
  • Ограничен по сравнению с Query DSL, не поддерживает агрегации.
Примеры использования:
Пример 1: Поиск по точному значению поля
Найти все документы, где title равно "login_24":
title: "login_24"
Найти все документы, где level равно "ERROR":
level: "ERROR"
Пример 2: Поиск по частичному совпадению (содержит текст)
Найти все логи, где parentEntityId содержит "0000":
parentEntityId: *0000*
Найти все логи, где title содержит "login":
title: *login*
Найти все логи, где title начинается с "login":
title: login*
Сравнение OpenSearch Query DSL и DQL
OpenSearch предоставляет два основных языка для запросов к данным: DQL (OpenSearch Dashboards Query Language) для быстрых и интуитивных запросов в интерфейсе Dashboards, и Query DSL (Domain Specific Language) для мощных и сложных запросов через OpenSearch API.
Ключевые операторы и синтаксис
В следующей таблице представлено сравнение основных операторов, доступных в Query DSL и DQL.
Инструменты по логированию
Инструменты по логированию критически важны для отслеживания работы приложений, диагностики проблем и мониторинга системного поведения. Ниже представлен обзор ключевых инструментов, сгруппированных по их функциональному назначению.
Инструменты для работы с серверными логами
  • Терминал (SSH): Обеспечивает прямой доступ к логам на сервере через командную строку. Используется для просмотра логов в реальном времени (`tail -f`) или навигации по файловой системе для их проверки.
  • SFTP/FTP клиенты (WinSCP, PuTTY, FileZilla): Позволяют безопасно просматривать, скачивать и управлять файлами логов на сервере через удобный графический интерфейс. Идеальны для работы с большими файлами или при необходимости локального анализа.
Инструменты для анализа и визуализации логов
  • Kibana (часть стека ELK): Платформа для исследования, анализа и визуализации данных, в том числе логов, собранных Elasticsearch. Предоставляет мощные возможности для построения дашбордов и поиска по сложным критериям.
  • Grafana (с Loki): Инструмент для построения дашбордов и мониторинга, интегрированный с Loki для агрегации и запросов к логам. Отлично подходит для визуализации метрик и логов в одном интерфейсе.
  • Graylog: Комплексное решение для централизованного сбора, хранения и анализа логов с различных источников. Предлагает мощные функции поиска, алертинга и управления логами.
  • Splunk: Мощная платформа для сбора, индексации, поиска и анализа машинных данных, включая логи, с широкими возможностями визуализации и отчетности. Используется для операционной разведки и аналитики безопасности.
Инструменты для мониторинга и отслеживания ошибок
  • Sentry: Платформа для мониторинга ошибок в реальном времени, агрегации исключений и отслеживания производительности приложений. Помогает быстро выявлять и устранять проблемы в коде.
Инструменты для мобильной разработки
  • Android Studio (Logcat): Интегрированная среда разработки для Android, где Logcat предоставляет системные сообщения и логи приложений. Незаменим для отладки мобильных приложений.
Инструменты для тестирования и отладки
  • DevTools (Консоль, HAR-файл): Инструменты разработчика в браузерах для отладки веб-приложений. Консоль отображает логи клиентской части, а HAR-файлы записывают сетевые запросы для анализа.
  • Postman (Консоль): Используется для тестирования API и просмотра ответов сервера, включая логи, которые могут помочь в отладке запросов и ответов.
  • BrowserStack (логи, отладка): Платформа для кроссбраузерного тестирования, предоставляющая доступ к логам и инструментам отладки для различных браузеров и устройств.
Инструменты и методы логирования в OpenShift, Kubernetes:
Веб-консоль OpenShift (Developer/Administrator perspective):
  • Раздел Workloads > Pods: Прямой просмотр журналов конкретного пода, выбор контейнера внутри пода, возможность просмотра логов в реальном времени (вкладка Logs).
  • Встроенные инструменты Lens: Вкладка Pod Logs: Позволяет просматривать логи в реальном времени внутри интерфейса.
Онлайн-курс по тестированию бэкенда https://protestinginfo.ru/practice_api_sql#
Практические навыки и экспертная поддержка
Погрузитесь в мир тестирования бэкенда с нашим практическим онлайн-курсом! Мы предлагаем уникальное сочетание актуальных знаний, практических заданий и постоянной поддержки эксперта, чтобы вы могли уверенно работать с API и базами данных. Курс доступен для прохождения уже сейчас, а также у вас есть возможность присоединиться к новой группе, стартующей в феврале 2026 года.
Кому подойдет этот курс?
Для новичков
Начинающие тестировщики, освоившие основы веб-тестирования, ищущие пошаговую поддержку в освоении бэкенда.
Для опытных QA
Специалисты, уже знакомые с основами тестирования, желающие углубить знания и освоить тестирование бэкенда на практике с современными инструментами.
Для тех, кто ценит поддержку
Идеально для тех, кто ищет обучение с полноценной обратной связью, четкими заданиями и доступом к тестовой среде от эксперта.
Что вас ждет в процессе обучения?
Гибкий доступ к материалам
Доступ к тестовому окружению и обучающим заданиям на 180 дней. Работайте в своем темпе!
Персональная проверка
Все ваши работы будут проверены автором курса (срок проверки зависит от тарифа: 2, 4 или 6 месяцев).
Практика и документация
Доступ к заданиям с открытым вопросом и системе DoQA для составления качественной тестовой документации.
Сообщество и поддержка
Доступ к чату с автором курса и отдельный чат с другими участниками, а также ежемесячные онлайн-встречи.
Расширенная поддержка (премиум)
В зависимости от тарифа: 2 личные консультации (по 2 часа каждая) и помощь в составлении резюме.
Какие инструменты вы освоите?
Postman & Swagger
Тестирование API, работа с документацией.
DBeaver & PostgreSQL & ClickHouse
Работа с базами данных, SQL-запросы.
Redis
Эффективное кэширование данных.
TMS DoQA
Ведение тест-кейсов и тестовой документации.
OpenSearch
Расширенные возможности для работы с логами (планируется).
Уникальные бонусы
Углубленные технологии
В зависимости от тарифа, освойте Kafka, gRPC, GraphQL для расширения ваших компетенций.
Сертификация
Подтверждение навыков
После успешного выполнения всех заданий курса вам будет выдан официальный сертификат.
Варианты оплаты
Для РФ
  • Быстрый платеж без ввода данных карты
  • Оплата картами РФ (SberPay, ИП/ООО)
  • Рассрочка (Т-банк, ОТП, Сбер, ФридомФинанс)
Международные карты
  • Visa/Mastercard (USD) – стоимость выше на 15-20%
Оплата по частям
  • "Частями от Продамус 3.0" (на 1, 3 или 6 месяцев)
Записаться сейчас!
Полная информация о курсе и регистрация по ссылке: protestinginfo.ru/practice_api_sql
Воспользуйтесь скидкой 10% на все тарифы по промокоду: APISQL10
Предварительная запись-бонусы & Контакты
Предварительная запись на запуск 5 февраля 2026 года: protestinginfo.ru/practice_api_sql#register
Продлить доступ к курсу или задать вопросы: напишите в Telegram @nadin_qa.
Время действовать: Не упустите специальные предложения!
Ваша возможность присоединиться к онлайн-курсу по тестированию бэкенда с уникальными бонусами и скидками ограничена по времени. Воспользуйтесь шансом углубить свои знания уже сейчас!
Специальное предложение
Эксклюзивная скидка на вебинаре
Используйте промокод WEBINAR25 , чтобы получить грандиозную скидку 25% на курс! Предложение действует только 25 и 26 января.
Не упустите эту возможность!
Бонусы за раннюю регистрацию
Дополнительные бонусы при предзаписи
С 27 января по 5 февраля вы можете получить дополнительные бонусы, заполнив форму предварительной записи. Это ваш шанс получить максимум от курса!
Как присоединиться к курсу
Готовы начать свое обучение? Переходите по ссылке ниже, чтобы зарегистрироваться и воспользоваться действующими предложениями:
Дополнительные ресурсы по логированию и тестированию бэкенда
Для углубленного изучения мира логирования и бэкенд-тестирования, мы подготовили подборку полезных материалов. Эти ресурсы помогут вам расширить свои знания и применять их на практике.
попробовать на практике: https://demo.elastic.co/app/discover#/ - Kibana

Stepik: online education

Интерактивный тренажер по Kibana

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

Официальная документация
Статьи и гайды по логированию
Видео и практические материалы
Инструменты и платформы
Ваши вопросы и Обратная связь
Благодарю за ваше внимание к нашей теме! Надеюсь, эта презентация была информативной и полезной. Я всегда рада продолжить дискуссию, ответить на ваши вопросы и услышать ваше мнение.
Остались вопросы?
Если у вас есть вопросы по теме бэкенд-тестирования или логирования, пишите мне напрямую в Telegram. Я постараюсь ответить максимально оперативно.
Telegram: @nadin_qa
Оставьте свой отзыв
Мне будет очень приятно, если вы поделитесь своими впечатлениями о презентации. Вы можете отметить меня в социальных сетях:
Made with