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 хранит только метаданные; новые индексы под маску подхватываются автоматически.
- Избегайте слишком широких масок и конфликтов типов полей между индексами.