Распределенная трассировка стала важным компонентом современной разработки программного обеспечения, позволяя разработчикам получать представление о производительности и поведении сложных распределенных систем. В этой статье блога мы рассмотрим различные методы добавления распределенной трассировки в исходный код, а также приведем примеры кода. Давайте погрузимся!
- Метод 1: Инструментирование вручную
Инструментирование вручную включает добавление кода трассировки вручную в исходный код. Вот пример использования платформы OpenTelemetry в Python:
import opentelemetry.trace as trace
from opentelemetry.trace import SpanKind
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("my_operation", kind=SpanKind.CLIENT) as span:
# Perform your operation here
span.set_attribute("custom_attribute", "attribute_value")
- Метод 2: Библиотеки APM (мониторинг производительности приложений).
Многие библиотеки APM предоставляют встроенные возможности распределенной трассировки. Вот пример использования клиентской библиотеки Jaeger на Java:
import io.jaegertracing.Configuration;
import io.opentracing.Span;
import io.opentracing.Tracer;
Tracer tracer = Configuration.fromEnv().getTracer();
Span span = tracer.buildSpan("my_operation").start();
// Perform your operation here
span.setTag("custom_attribute", "attribute_value");
span.finish();
- Метод 3: трассировка, специфичная для платформы
Некоторые платформы предлагают встроенную поддержку распределенной трассировки. Вот пример использования веб-фреймворка Django на Python с интеграцией Django OpenTelemetry:
from django.conf import settings
from django_opentelemetry import DjangoOpenTelemetryMiddleware
from opentelemetry.instrumentation.django import DjangoInstrumentor
settings.MIDDLEWARE.insert(0, 'django_opentelemetry.DjangoOpenTelemetryMiddleware')
DjangoInstrumentor().instrument()
# Your Django code here
- Метод 4: шлюз API или прокси-сервер
В архитектуре микросервисов вы можете использовать шлюз API или прокси-сервер для отслеживания между службами. Вот пример использования Envoy Proxy с фильтром OpenTelemetry:
http_filters:
- name: envoy.filters.http.ot_trace
Распределенная трассировка — мощный метод понимания поведения распределенных систем. В этой статье мы рассмотрели несколько методов добавления распределенной трассировки в исходный код, включая ручное инструментирование, библиотеки APM, трассировку для конкретной платформы и подходы API-шлюза/прокси-сервера. Выберите метод, который лучше всего соответствует вашим требованиям, и начните получать ценную информацию о производительности и поведении ваших распределенных приложений.