Если вы связаны с эксплуатацией IT, то наверняка сталкивались либо со Splunk, либо с ELK, либо с обоими продуктами. Это два основных игрока на рынке продуктов по лог-менеджменту и операционной аналитике данных.
В нашем блоге мы пишем о Splunk и нам часто задают вопрос, чем же Splunk лучше ELK? За что мы должны платить деньги за лицензию, если есть хороший open source конкурент? На эту тему отрывками в комментариях сказано уже очень много, но мы решили все объединить и посвятить этому вопросу отдельную статью.
Для тех, кто незнаком со Splunk или ELK, немного расскажем о них.
Splunk
Это проприентарный инструмент для работы с машинными данными, который предлагает пользователям, администраторам и разработчикам возможность мгновенно получать и анализировать все данные, созданные приложениями, серверами, сетевыми устройствами в ИТ-инфраструктуре и любый другие машинные данные.
Splunk Enterprise получает машинные данные и превращает их в мощную оперативную аналитику, предоставляя информацию в реальном времени с помощью диаграмм, алертов, отчетов и т. д.
ELK
Стек ELK состоит из компонентов с открытым исходным кодом: elasticsearch (инструмента текстового поиска), Logstash и Beats (инструменты отправки данных) и Kibana (инструмент визуализации данных). Вместе они обеспечивают полностью рабочий инструмент для анализа данных в реальном времени. Несмотря на то, что все они созданы для совместной работы, каждый из них представляет собой отдельный проект.
ELK предоставляет аналогичные функции для оперативного анализа, такие как создание отчетов, оповещения, поиск в журналах и т. д.
Open source – значит дешевле?
Зачастую на подсознательном уровне мы отождествляем open source с бесплатными решениями, но надо помнить, что цена проекта складывается далеко не только из стоимости лицензии, но и из множества других затрат, например:
• Стоимость оборудования;
• ЗП сотрудников;
• Затраты на внедрение и интеграцию;
• Расходы на дополнительные фичи;
• Расходы на поддержку;
• Плата за риски;
• И тд.
Зачастую может оказаться так, что затраты на лицензию проприентарных решений, частично или полностью окупаются за счет сокращения других статей затрат по сравнению с open source.
Лицензия
В Splunk цена за лицензию рассчитывается из количества гигабайтов данных, загруженных в день, независимо от количества узлов или пользователей. Покупая любую по размеру лицензию, вы покупаете сразу весь встроенный функционал, возможность использовать бесплатно большую (более 1000) базу приложений и инструкций-документаций. Также есть бесплатная лицензия, которая позволяет загружать до 500 мб в день, но имеет несколько функциональных ограничений.
ELK использует модель, приближенную к модели ценообразования Freemium, в которой бесплатно содержатся только базовые функции, а за остальное придется платить. Если вы хотите настроить безопасность, оповещения, отчеты, использовать алгоритмы машинного обучения и тд, то вам необходимо докупать годовую подписку на пакет X-pack, стоимость на которую будет рассчитываться исходя из количество узлов в системе.
Требуемое оборудование
Есть ли разница в требуемом оборудовании? Да, есть и существенная. Одной из особенностей хранения данных в ELK, является то, что вместе с сырыми данным хранятся эти же данные разбитые на поля и всевозможные добавленные поля и геометки. Все это может увеличить требуемое место для хранения на дисках до 10 раз по сравнению со Splunk, который хранит только сжатые сырые данные, а вся остальная информация прикрепляется только в процессе поиска. Да и вообще, если взять и поставить параллельно Splunk и ELK, то для нормальной работы ELK потребует гораздо больше ресурсов чем Splunk.
Скорость внедрения
Помимо очевидных затрат на оборудование существуют неявные затраты или, так называемая, упущенная выгода за время внедрения системы. Если сравнивать процесс развертывания и требуемые ресурсы: временные, человеческие или технологические, то Splunk заметно выигрывает у ELK.
Устанавливая один экземпляр Splunk, вы получаете сразу же готовое решение, которое включает в себя и возможность загрузки данных и индексирования, и поисковый интерфейс, более 1000 созданных и поддерживаемых компанией приложений, которые могут автоматизировать загрузку или анализ определенных типов данных. После установки одного экземпляра сразу можно начинать решать поставленные задачи. При необходимости, для повышения производительности и отказоустойчивости, архитектура может быть расширена до кластера, в котором каждому экземпляру Splunk будет присвоена своя роль: Indexer, Search Head, Cluster Master, о том, как развернуть кластер, мы писали здесь.
В случае ELK, инструмент состоит из отдельных модулей, таких как ElasticSearch – отвечающий за хранение данных, Kibana — это пользовательский интерфейс для поиска, просмотра данных и визуализации, а Logstash — это инструменты для отправки данных к ElasticSearch. Для получения первых результатов необходимо настроить все компоненты, а также для различных дополнительных возможностей необходимо либо самому писать надстройки, либо прикручивать уже написанные кем-то надстройки, за поддержку и качество которых зачастую никто не отвечает и не несет ответственности.
С точки зрения загрузки данных, ElasticSearch требует определения правил разбиения, идентификации всех полей, разделения данных до их загрузки. То есть вы должны знать о данных все, до того, как их загрузите в систему. Иначе придется менять структуру данных с помощью довольно сложных запросов JSON. Это существенно тормозит процесс. В Splunk можно загружать абсолютно любые данные, изначально он определит у них только 3 параметра: host, source и sourcetype, а далее можно выделять поля и изменять их в любой момент времени, когда вы поймете что именно вам нужно от этих данных.
Язык
Splunk использует свой язык запросов SPL, который сочетает возможности языка SQL с конвейерным синтаксисом Unix. SPL позволяет осуществлять поиск по данным и фильтрацию, трансформировать данные и добавлять новые поля, работать с временными рядами, строить визуализации и применять алгоритмы машинного обучения.
В работе ELK используются разные языки: Lucene для текстового поиска, JSON для разделения данных на объекты и Timelion для работы с временными рядами.
Сторонники ELK, отмечают, что удобнее использовать уже известные языки, чем учить новый, созданный конкретно для одного продукта. Хотя, честно говоря, SPL – язык довольно несложный и имеет множество схожего синтаксиса с другими языками, а также имеет подробную документацию, которая позволит быстро разобраться с ним.
Интересный факт: в последних версиях ELK появился экспериментальный язык Kuery, созданный специально для Kibana. Разработчики отмечают, что в будущих релизах язык может быть полностью изменен или удален, но в целом тенденция к специализации языка под конкретный продукт заметна.
Управление доступом
С точки зрения безопасности, управление доступом является важным элементом системы. Возможность разделения пользователей по ролям, с разным уровнем доступа доступно из коробочного решения Splunk, в ELK подобный инструмент доступен при подписке на пакет X-Pack.
Риски
ELK = elasticsearch + logstash + kibana. Это три разных предприятия («проекта»), которые имеют симбиотические отношения. Опора на три разных предприятия с открытым исходным кодом для одного решения несет значительный операционный и юридический риск для компании.
Splunk, Inc. является крупной публично зарегистрированной компанией с большими оборотами и стабильным положением на рынке ценных бумаг. Поэтому Splunk можно назвать жизнеспособным и стабильным корпоративным партнером, представляющим небольшой риск для компании.
Заключение
В целом, и Splunk, и ELK являются мощными инструментами по операционной аналитике, имеющие свои плюсы и минусы. Принимая решение о том какой инструмент выбрать, необходимо внимательно оценить все требования к проекту, поставленные задачи и на основе них рассчитать затраты на внедрение и последующую поддержку, а также оценить свою готовность и способность к внедрению каждого инструмента.
Очень ждем ваши комментарии на данную тему!
Автор: JuliaKoroleva