Распределённая трассировка и события
Дополните набор инструментов наблюдаемости распределённой трассировкой потоков запросов и событиями Kubernetes для получения сигналов на уровне кластера.
«Распределённая трассировка и события» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Три основы наблюдаемости
Наблюдаемость опирается на три основы: журналы, метрики и трассировки. Вы уже познакомились с журналами и метриками; в этом уроке добавляются трассировки и события Kubernetes.
Что такое распределённая трассировка
Распределённая трассировка отслеживает один запрос, пока он проходит через несколько служб. Она показывает, где расходуется время и какая служба вызвала ошибку.
Интервалы и трассировки
Трассировка — это полный путь запроса. Каждый шаг представляет собой интервал с временем начала, длительностью и метаданными. Интервалы вкладываются друг в друга, образуя дерево.
# A trace for one checkout request
# trace_id: abc123
# span: api-gateway (40ms)
# span: order-service (25ms)
# span: db-query (15ms)
# span: payment-service (10ms)Передача контекста
Чтобы трассировка работала, службы передают контекст трассировки в заголовках запроса, поэтому каждый переход связывается с одной и той же трассировкой.
# W3C Trace Context header
traceparent: 00-abc123def456-00f067aa0ba902b7-01OpenTelemetry
OpenTelemetry (OTel) — это стандарт инструментирования приложений и экспорта трассировок. Сборщик OTel может работать в кластере, принимая и передавая интервалы.
Системы хранения трассировок
Интервалы отправляются в систему хранения, например Jaeger или Tempo, которая сохраняет и визуализирует трассировки, позволяя подробно исследовать медленные запросы.
# deploy a collector that exports to Jaeger
kubectl get pods -n observability -l app=otel-collectorСобытия Kubernetes
Отдельно от трассировок приложений Kubernetes создаёт события, описывающие действия кластера: планирование, загрузку образов, сбои проверок и многое другое.
kubectl get events --sort-by=.lastTimestampПросмотр событий ресурса
kubectl describe показывает события, связанные с конкретным объектом. Часто это самый быстрый способ понять, почему под не может продолжить работу.
kubectl describe pod my-app
# Events:
# Warning FailedScheduling no nodes available
# Normal Scheduled assigned to node-2
# Warning BackOff restarting failed containerСобытия существуют недолго
По умолчанию события удаляются примерно через час. Чтобы сохранять историю кластера надолго, экспортируйте их в систему журналирования или хранилище событий, иначе важная информация будет потеряна.
Сопоставление сигналов
Настоящая сила проявляется при сопоставлении всех источников: всплеск метрики приводит Вас к трассировке, трассировка указывает на службу, а её журналы и события объясняют первопричину.
Когда стоит использовать трассировку
- Запрос выполняется медленно, но Вы не знаете, какая служба виновата
- Ошибки появляются глубоко в цепочке микрослужб
- Вам нужно понять зависимости между службами
Быстрая проверка
Проверьте свои знания о трассировке.
Итоги
Вы добавили третью основу наблюдаемости: распределённая трассировка отслеживает запросы между службами с помощью интервалов и передачи контекста, часто через OpenTelemetry в Jaeger или Tempo. Вы также научились читать недолговечные события Kubernetes для диагностики на уровне кластера и сопоставлять журналы, метрики, трассировки и события.
Часто задаваемые вопросы
Урок «Распределённая трассировка и события» бесплатный?
Да — полный текст урока «Распределённая трассировка и события» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Распределённая трассировка и события»?
Дополните набор инструментов наблюдаемости распределённой трассировкой потоков запросов и событиями Kubernetes для получения сигналов на уровне кластера. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Распределённая трассировка и события»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Журналирование с помощью kubectl logs
- Показатели с Prometheus и Grafana
- Проверки работоспособности: пробы активности и готовности
- Распределённая трассировка и события