ELK стек за 10 минут: Elasticsearch, Kibana, Logstash

ELK — это аббревиатура, обозначающая стек из трёх популярных проектов: Elasticsearch, Logstash и Kibana. Его часто называют просто Elasticsearch. Этот стек позволяет собирать логи всех систем и приложений, анализировать их и создавать визуализации для мониторинга приложений, инфраструктуры, устранения неполадок и анализа безопасности.

Elasticsearch

Elasticsearch — распределённый поисковый и аналитический движок на базе Apache Lucene. Он отлично подходит для анализа журналов и поиска благодаря поддержке различных языков, высокой производительности и использованию документов JSON. К ключевым особенностям Elasticsearch относятся:

  • Автоматическая индексация новых JSON-объектов: новые объекты сразу доступны для поиска, ускоряя прототипирование поисковых Big Data решений.
  • Поддержка восточных языков: включает китайский, японский и корейский.
  • Гибкость поисковых фильтров: поддерживает нечёткий поиск и мультитенентность (возможность динамически организовывать несколько поисковых систем в рамках одного объекта).
  • Встроенные анализаторы текста: автоматически выполняют токенизацию, stemming и другие преобразования для решения задач NLP, связанных с поиском данных.

Logstash

Logstash — инструмент с открытым исходным кодом для приёма данных. Он собирает данные из различных источников, преобразует их и отправляет в нужное место назначения. Источники данных могут быть разнообразными: файлы, базы данных или логи. Logstash обладает:

  • Встроенными фильтрами.
  • Поддержкой более 200 подключаемых модулей.
  • Возможностью работы в реальном времени.

Kibana

Kibana — инструмент визуализации и анализа данных для просмотра журналов и событий. Она предлагает:

  • Простые в использовании интерактивные диаграммы.
  • Встроенные агрегаторы и фильтры.
  • Геопространственную поддержку.

Filebeat

Filebeat — агент, устанавливаемый на серверах для отправки различных типов оперативных данных в Elasticsearch.

Работа ELK-стека

  • Logstash: собирает, преобразует и отправляет данные.
  • Elasticsearch: индексирует, анализирует и осуществляет поиск в собранных данных.
  • Kibana: предоставляет визуализацию результатов анализа.

Популярность ELK

ELK популярен, поскольку удовлетворяет потребности в аналитике журналов в условиях миграции IT-инфраструктуры в публичные облака. Он обеспечивает простое и надёжное решение для анализа журналов для разработчиков и DevOps-инженеров, позволяя получать выводы из диагностики сбоев, анализа производительности приложений и мониторинга инфраструктуры.

Преимущества ELK-стека

  • Масштабируемость: кластер Elasticsearch расширяется добавлением новых серверов, а распределение нагрузки происходит автоматически.
  • Отказоустойчивость: при сбоях узлов данные не теряются, а поисковая система продолжает работать.
  • Управляемость: Elasticsearch управляется по HTTP с помощью JSON-запросов через REST API и веб-интерфейс Kibana.
  • Универсальность: Logstash работает со множеством источников данных, а NoSQL-природа Elasticsearch позволяет загружать JSON-объекты, которые автоматически индексируются.

Недостатки и ограничения ELK

  • Высокое потребление ресурсов: использование JVM (Elasticsearch написан на Java) может приводить к недостаточной производительности при высоких нагрузках.
  • Query DSL: внутренний язык запросов Elasticsearch может быть сложным.
  • Безопасность: Elasticsearch не имеет встроенной системы авторизации и управления правами доступа. Это требует дополнительной настройки безопасности, в противном случае база данных может быть уязвима. Примером является крупная утечка данных в 2019 году.

Лицензирование и OpenSearch

В начале 2021 года Elastic NV изменила стратегию лицензирования, новые версии Elasticsearch и Kibana не выходят под лицензией Apache 2.0. В качестве альтернативы с открытым исходным кодом предлагается проект OpenSearch.

Альтернативы

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

Примеры использования Elasticsearch

Elasticsearch используется в таких компаниях, как Альфа-банк (поиск по транзакциям), Kari (интерактивное формирование представления товаров), Facebook, Mozilla, Викимедиа и Netflix.

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

Что будем искать? Например,программа