«Гонец» хранит месяц логов, но команда ищет почти всегда один сервис за последний час. Зачем оплачивать полнотекстовый индекс для каждого поля? Каталог библиотеки можно строить по каждому слову в книге, а можно по автору и жанру, а текст читать только у выбранных книг. Это разные затраты и разная скорость разных вопросов.
Loki: сначала выбери поток
Loki
группирует строки по меткам, например service="payments", env="production". Сжатые блоки логов
обычно живут в object storage, а маленький индекс помогает найти нужные потоки. Grafana показывает
их рядом с метриками и трейсами, агент вроде Grafana Alloy собирает и отправляет записи.
{service="payments", env="production"} |= "Bank gateway timeout"
Это LogQL, не KQL и не Elasticsearch Query DSL. Фрагмент иллюстрирует настоящий синтаксис Loki, но здесь его не исполняет никакой виджет.
Тот же смысл в нашем наборе выражают KQL service.name : payments and message : "Bank gateway timeout" или bool-запрос с term и match_phrase. Способы хранения и поиска при этом разные: одинаковое намерение не означает одинаковый план.
Не делай trace меткой потока
Если каждый trace.id уникален, метка trace создаст множество потоков. Кардинальность важна и в Elasticsearch, но у labels Loki особенно влияет на структуру потоков. trace.id, user id и request id обычно оставляют в тексте или structured metadata, а не индексных labels.
Ниже Elasticsearch считает число разных сервисов и trace в учебных логах. Это измерение формы данных, не имитация Loki и не сравнение скорости продуктов.
Сравни services.value и traces.value. Затем ограничь запрос payments и посмотри, уменьшилась ли кардинальность trace до одного значения. Малое число сервисов не означает малое число запросов. Cardinality в Elasticsearch в общем случае оценочная, на малом учебном наборе модель считает точно.
Другие варианты
| Вариант | Когда исследовать |
|---|---|
| Elasticsearch / OpenSearch | интерактивный поиск по тексту и разным полям |
| Loki + Grafana | запросы начинаются с сервиса и времени, важен компактный индекс |
| ClickHouse | большой поток структурированных событий и SQL-агрегации |
| managed logging | мало людей на эксплуатацию, приемлемы цена и ограничения провайдера |
ClickHouse не даёт весь интерфейс Kibana из коробки; нужны сбор, схема, TTL и инструмент поиска. Loki не «не умеет искать текст»: он фильтрует строки после выбора потоков, но не использует такой же полнотекстовый индекс. Grafana не база логов: она обращается к источникам данных.
Выбирай не по логотипу
- Выпиши десять реальных запросов дежурного и объём за день.
- Задай срок, допустимую задержку и требования к удалению личных данных.
- Оцени вместе хранение, индекс, выходящий трафик и работу команды.
- Проверь запросы и восстановление на стенде, а не по рекламному сравнению.
Не дублируй весь поток в три хранилища «на всякий случай» без цели: стоимость и число копий чувствительных данных вырастут. Последний урок соберёт ошибки, которые ни смена продукта, ни managed-сервис не исправляют сами.
урок из курса
Урок из курса «Elasticsearch и ELK». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.