TGViewer
DevOps Portal | Linux DevOps Portal | Linux @loose_code · 13.1K subscribers
Post #1562 3.42K
Сегодня разбирается классическая задача распределённых систем: как надёжно стримить логи с нескольких реплик в хронологическом порядке?

Удивительно, но ни один из популярных контейнерных тулов этого не делает.

docker service logs, kubectl logs, stern, kubetail, k9s — все они просто перемешивают потоки по мере поступления. Стандартный костыль – прогонять вывод через | sort 🙃

Чтобы сделать это правильно, нельзя просто сразу печатать строку лога: более медленный поток может прислать запись с более ранним таймстампом. Нужно понять, когда её печатать безопасно.

Для новой команды uc logs используется следующий подход:

1. Low watermark

Трекать минимальный timestamp среди всех лог-стримов и безопасно печатать буферизированные логи с таймстампами ниже этой метки.

watermark = min(latest_timestamp for each stream)
sort and print all buffered logs where timestamp < watermark


2. Heartbeat-таймстампы

Что если контейнер замолчит? Весь поток залипнет, потому что watermark больше не будет сдвигаться.

Решение: периодически отправлять пустые heartbeat-записи с текущим timestamp от серверов. Это своего рода обещание: «У меня нет логов старше этого».

Это позволяет клиенту продвигать watermark сразу, не блокируя вывод. Интервал в 500 мс – 1 с работает хорошо на практике.

Что насчёт несинхронизированных часов?

Много тут не сделать, если не плодить лишнюю сложность. Просто детектируйте ситуацию, предупредите пользователя, и на этом всё.

👉 DevOps Portal
  • ❤ 5
  • 👍 5
  • 🔥 1
More from @loose_code
  1. Sep 30, 2026Архитектура Argo CD: разбор К концу этого материала вы: Поймёте, как Argo CD реально работ…
  2. Sep 26, 2026Docker 101: пробрасываем порт контейнера, чтобы открыть приложение с хоста Новое практичес…
  3. Sep 25, 2026Автоматизация платформы не отбирает у вас интересные задачи. Она забирает рутину. Deckhous…
  4. Sep 25, 2026Этот кейс показывает, как мигрировать с хрупкой инфраструктуры на базе EC2 на AWS EKS с Gi…
  5. Sep 25, 2026ИИ-агенты теперь могут работать как отдельные участники команды в GitLab В SourceCraft поя…
  6. Sep 25, 2026Анатомия Terraform-проекта До сих пор путаетесь в Terraform-файлах и структуре директорий?…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →