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