Logs

Где хранить логи: Loki vs OpenSearch vs VictoriaLogs

Где хранить логи: Loki vs OpenSearch vs VictoriaLogs

Три бэкенда логов — три разные философии индексации, а не три похожих продукта. Loki индексирует только метки и сканирует тело brute-force; OpenSearch строит полнотекстовый инвертированный индекс на всё; VictoriaLogs хранит колоночно и индексирует поля экономно. Отсюда всё расходится: стоимость хранения, язык запросов (LogQL/DSL/LogsQL), ловушки кардинальности, операционная сложность. Разбираем один и тот же запрос на трёх языках, цену каждого подхода и когда что выбирать

Кардинальность и стоимость телеметрии: wide events, сэмплинг, бюджет

Кардинальность и стоимость телеметрии: wide events, сэмплинг, бюджет

Наблюдаемость незаметно становится одной из самых дорогих статей инфраструктуры: один label с user_id взрывает кардинальность метрик, debug-логи растут гигабайтами, трейсы пишутся на 100%. Откуда берётся стоимость каждого столпа, как её резать без потери сигнала (сэмплинг, агрегация, дропы в пайплайне), и почему wide events («observability 2.0») меняют компромисс между кардинальностью и пользой

Логи и корреляция: структурные логи, trace_id и Loki

Логи и корреляция: структурные логи, trace_id и Loki

Структурный лог и коррелируемый лог — не одно и то же: в Go trace_id в stdout приходится добавлять руками, в Java его кладёт агент. Разбираем модель Loki, замеряем последствия высокой кардинальности (2 стрима против 1202), выясняем, почему на OTLP-логах не работает привычный json-парсер, и ловим ошибку корреляции, которая проявляется у каждого шестнадцатого трейса.

slog: структурированное логирование в стандартной библиотеке Go

slog: структурированное логирование в стандартной библиотеке Go

log/slog (Go 1.21) — структурированное логирование в стандартной библиотеке: уровни, атрибуты, группы, JSON и text-хендлеры, With для контекста и связка с context. Как устроены Handler/Record, как писать свой хендлер и почему slog вытесняет самописные обёртки над log — на живых примерах вывода