Data Views и index patterns

Прежде чем искать логи в Kibana, нужно объяснить ей, где они лежат — это и есть Data View.

Data View (ранее index pattern) — именованный шаблон в Kibana, который сопоставляет маску имён индексов (например, logs-*) и говорит, какие данные показывать в Discover и дашбордах.

Зачем нужен Data View

Помните, что логи лежат не в одном индексе, а в множестве нарезанных по времени: logs-app-2026.06.22, logs-app-2026.06.23 и т. д. Если бы Kibana работала с одним индексом, искать «за последнюю неделю» было бы невозможно — данные в семи разных индексах. Data View решает это маской: logs-app-* объединяет все подходящие индексы в одну логическую сущность, по которой вы и ищете.

  физические индексы:        Data View "logs-app-*":
  logs-app-2026.06.22  \
  logs-app-2026.06.23   ) -->  один логический набор
  logs-app-2026.06.24  /        для поиска и дашбордов

Создание Data View

В Kibana (Stack Management → Data Views → Create) вы вводите маску и выбираете поле времени. Маска logs-* подхватит все индексы логов; поле времени — почти всегда @timestamp. Именно это поле использует селектор диапазона времени в Discover и ось X на гистограммах. Без указанного поля времени фильтр по времени работать не будет.

Маска и несколько источников

Маска определяет охват. logs-app-* покажет только логи приложения; logs-* — все логи сразу (приложение, nginx, system). Иногда делают узкие Data View на сервис и один общий на всё — для разных дашбордов. Можно объединять и разнотипные индексы одной маской, если у них согласован @timestamp.

Как работает под капотом

Data View не копирует и не хранит данные — это просто метаданные в Kibana: маска, поле времени и список полей с их типами (Kibana подтягивает его из маппинга индексов). Когда вы делаете запрос, Kibana подставляет маску в обращение к Elasticsearch, и тот сам решает, какие физические индексы под неё подходят. Поэтому новый дневной индекс logs-app-2026.06.25 появится в поиске автоматически, как только будет создан, — маска logs-app-* его охватит без всякой пересоздачи Data View.

Сколько Data View заводить

На практике возникает вопрос гранулярности: делать один общий Data View logs-* на все логи или отдельный на каждый тип? У обоих подходов есть смысл. Широкий logs-* удобен для сквозного поиска и корреляции — например, найти один trace_id сразу во всех логах всех сервисов. Узкие Data View (logs-nginx-*, logs-backend-*) дают чистый, неперегруженный список полей, специфичный дефолтный набор столбцов и не смешивают разнотипные данные с конфликтующими полями. Зрелая установка обычно держит и то, и другое: узкие — для повседневной работы с конкретным сервисом, и один широкий — для кросс-сервисного расследования.

Важно не путать Data View с правами доступа. Data View — это удобство отображения в Kibana, а не граница безопасности: само по себе наличие узкого Data View не мешает пользователю обратиться к другим индексам. Ограничение того, какие логи человек реально может видеть, задаётся ролями в Elasticsearch (вплоть до конкретных индексов и полей), о чём шла речь в разделе про безопасность. Data View организует, роли — разграничивают; смешивать роли этих двух механизмов — распространённое заблуждение.

Частые ошибки

  • Забыть выбрать поле времени. Без него Discover не сможет фильтровать по времени, и весь смысл логов теряется. Всегда указывайте @timestamp.
  • Слишком широкая маска. * охватит вообще все индексы кластера, включая системные .kibana, и засорит список полей. Делайте маску прицельной (logs-*).
  • Конфликт типов полей. Если одно и то же поле в разных индексах под маской имеет разный тип (где-то status — число, где-то строка), Kibana пометит конфликт и агрегации сломаются. Следите за единообразием маппинга.

Итоги

  • Data View (index pattern) — шаблон-маска, объединяющий нарезанные по времени индексы в одну сущность для поиска.
  • Обязательно укажите поле времени (обычно @timestamp) — по нему работает фильтр диапазона.
  • Data View хранит только метаданные; новые индексы под маску подхватываются автоматически.
  • Избегайте слишком широких масок и конфликтов типов полей между индексами.
Проверьте себя
1. Зачем в Kibana нужен Data View (index pattern) с маской вроде logs-app-*?
AЧтобы сжимать индексы
BЧтобы объединить множество нарезанных по времени индексов в одну логическую сущность для поиска
CЧтобы создавать новые индексы
DЧтобы ускорить Logstash
2. Что обязательно нужно указать при создании Data View для логов?
AПароль администратора
BПоле времени (обычно @timestamp), по которому работает фильтр диапазона
CЦвет дашборда
DЧисло шардов
3. Что произойдёт с новым дневным индексом logs-app-2026.06.25 после его создания?
AНужно вручную пересоздать Data View, чтобы его увидеть
BОн автоматически попадёт в поиск, так как маска logs-app-* его охватывает
CОн будет виден только в Logstash
DKibana проигнорирует его до перезапуска