Альтернативы: Loki, Grafana и когда что

ELK — не единственный путь; у Grafana Loki другой подход к индексации, и иногда он выгоднее.

Grafana Loki — система логирования, которая индексирует только метки (labels) логов, а не их содержимое, что делает её дешевле в хранении, но компромиссной в полнотекстовом поиске.

Главное отличие подхода

Elasticsearch индексирует всё содержимое каждого лога — отсюда мощный полнотекстовый поиск, но и высокая стоимость хранения и вычислений (инвертированный индекс по всему тексту велик). Loki переворачивает идею: он индексирует только небольшой набор меток ({app="checkout", level="error"}), а само тело лога хранит сжатым и не индексирует. Поиск по тексту внутри выбранного по меткам потока делается перебором на лету.

  Elasticsearch:  индексирует ВЕСЬ текст
     дорого хранить, но любой полнотекст быстр

  Loki:           индексирует только МЕТКИ {app, level}
     дёшево хранить, текст ищется перебором
     внутри отобранного по меткам потока

Loki + Grafana как стек

Loki создан Grafana Labs и идеально стыкуется с Grafana и Prometheus: те же метки, тот же интерфейс. Сборщик у Loki — Promtail (или тот же Fluent Bit). Получается «лёгкий» стек логов, естественный для тех, у кого мониторинг уже на Prometheus+Grafana (наш отдельный учебник): логи и метрики смотрятся в одном Grafana-дашборде с общими метками.

Сравнение по сути

КритерийELKLoki
Индексациявесь тексттолько метки
Полнотекст. поискмощный, быстрыйперебор, медленнее на больших объёмах
Стоимость хранениявышениже
Аналитика/дашбордыбогатые (Kibana)проще (Grafana)
ЭкосистемасамостоятельнаяPrometheus + Grafana

Как работает под капотом: цена индекса

Корень различий — что вы платите за инвертированный индекс. ELK строит его по всем токенам всех логов: дорого по диску и CPU при записи, зато запрос «найди слово X где угодно» мгновенен. Loki строит индекс только по меткам: дёшево, но запрос «найди слово X» вынужден прочитать и просканировать все логи подходящих по меткам потоков за период. Поэтому Loki блистает, когда вы хорошо разметили логи метками и обычно знаете, где искать (сервис, уровень), и проседает на «полнотекстовом поиске по всему сразу».

Другие альтернативы

Кратко: облачные (Datadog, Splunk, Grafana Cloud) — не надо эксплуатировать самим, но дорого по подписке; ClickHouse — колоночная БД, в которую всё чаще складывают логи ради дешёвой аналитики на огромных объёмах; Vector — современный сборщик/конвейер (альтернатива Logstash/Fluentd). Рынок широк, ELK — не догма.

Когда что выбирать

  • ELK/OpenSearch — нужен мощный полнотекстовый поиск и богатая аналитика по содержимому логов, ищете «иголку в стоге» по произвольному тексту, готовы платить за хранение.
  • Loki — уже живёте в Prometheus+Grafana, логи хорошо размечаются метками, важна дешевизна хранения, полнотекст по всему массиву не критичен.

Как не ошибиться с выбором

Выбор системы логирования стоит делать не по моде, а по нескольким честным вопросам о вашем профиле. Насколько часто вам нужен полнотекстовый поиск по произвольному содержимому, а не по заранее известным меткам? Какой у вас объём логов и насколько критична стоимость хранения? Есть ли у вас уже мониторинг на Prometheus+Grafana, в который логи органично впишутся? Какая экспертиза у команды — кто будет это эксплуатировать? Ответы обычно довольно быстро склоняют чашу: команда с богатым полнотекстовым поиском и аналитикой и без привязки к Grafana тяготеет к ELK; команда, живущая в Grafana, с дисциплинированной разметкой логов метками и чувствительная к цене — к Loki.

Важно и то, что выбор не обязан быть единственным и вечным. Многие зрелые организации используют несколько систем одновременно: ELK для логов, требующих мощного поиска и SIEM, Loki для объёмных инфраструктурных логов, где хватает поиска по меткам, и облачный сервис для команд, не желающих эксплуатировать стек самим. Системы логирования — это инструменты под задачи, а не религия; навык инженера эксплуатации не в верности одному стеку, а в умении подобрать подходящий под конкретный профиль логов и осознанно взвесить компромиссы каждого.

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

  • Брать ELK по инерции. Если у вас мониторинг на Grafana и небольшие, хорошо размеченные логи, Loki может быть в разы дешевле при том же удобстве.
  • Брать Loki ради полнотекста. Если ключевая задача — искать произвольный текст по всему объёму, Loki будет медленным; это сценарий ELK.
  • Игнорировать стоимость хранения. На больших объёмах разница в цене индексации между подходами — это реальные деньги; считайте её до выбора.

Итоги

  • Loki индексирует только метки (дёшево, но полнотекст — перебором), ELK индексирует весь текст (дорого, но поиск мощный).
  • Loki естественен в экосистеме Prometheus+Grafana; ELK самодостаточен с Kibana.
  • Есть и другие пути: облачные сервисы, ClickHouse для аналитики, Vector как сборщик.
  • Выбор — про баланс «мощь полнотекстового поиска» против «стоимость хранения» под ваш профиль логов.
Проверьте себя
1. В чём ключевое отличие подхода Loki от Elasticsearch?
ALoki не хранит логи вообще
BLoki индексирует только метки (labels), а не всё содержимое логов, что дешевле в хранении, но слабее в полнотекстовом поиске
CLoki индексирует текст в два раза быстрее
DLoki написан на том же движке, что ES
2. В какой ситуации Loki+Grafana обычно предпочтительнее ELK?
AКогда нужен мощный полнотекстовый поиск по всему массиву
BКогда мониторинг уже на Prometheus+Grafana, логи хорошо размечены метками и важна дешевизна хранения
CКогда логов очень мало
DКогда нужна максимальная аналитика по содержимому
3. Почему полнотекстовый поиск по всему массиву в Loki медленнее, чем в ELK?
ALoki использует медленный диск
BLoki не индексирует содержимое, поэтому поиск слова вынужден просканировать все логи подходящих по меткам потоков за период
CLoki не поддерживает поиск
DGrafana ограничивает скорость