OpenTelemetry (OTel) — CNCF-graduated vendor-neutral standard и tooling для collection + export observability data. Combines OpenTracing + OpenCensus (слияние 2019). Support: metrics, logs, traces через single SDK для 15+ languages. Auto-instrumentation для popular frameworks (Express, FastAPI, Django, Spring). Export в любой backend: Jaeger, Prometheus, Datadog, New Relic, Grafana Tempo.
Ниже: подробности, пример, смежные термины, FAQ.
Бесплатный онлайн-инструмент — проверка HTTP-заголовков: результат мгновенно, без регистрации.
// Node.js Express auto-instrumentation
const { NodeSDK } = require('@opentelemetry/sdk-node');
const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node');
const sdk = new NodeSDK({
instrumentations: [getNodeAutoInstrumentations()],
});
sdk.start(); // Now all Express routes auto-tracedOpenTelemetry — это стандарт открытого исходного кода для мониторинга и наблюдаемости распределённых систем, который предоставляет разработчикам инструменты для сбора, обработки и передачи метрик, трассировок и логов. Он объединяет лучшие практики из существующих систем, таких как OpenTracing и OpenCensus, и предлагает единый API и SDK для работы с различными платформами.
Используя OpenTelemetry, вы можете легко интегрировать наблюдаемость в свои приложения, что позволяет лучше понимать их поведение и производительность. Стандарт поддерживает множество языков программирования, включая Java, Python, JavaScript и Go, что делает его универсальным решением для разных стеков технологий.
Настройка OpenTelemetry состоит из нескольких шагов. Рассмотрим пример настройки для простого приложения на Python.
pip install opentelemetry-api opentelemetry-sdk opentelemetry-instrumentation-flaskfrom opentelemetry import trace
from opentelemetry.ext.flask import FlaskInstrumentor
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.resources import Resource
from opentelemetry.exporter.zipkin import ZipkinSpanExporter
from opentelemetry.sdk.trace.export import BatchSpanProcessorresource = Resource.create({"service.name": "my-python-app"})
trace.set_tracer_provider(TracerProvider(resource=resource))
zipkin_exporter = ZipkinSpanExporter(service_name="my-python-app")
trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(zipkin_exporter))app = Flask(__name__)
FlaskInstrumentor().instrument_app(app)Этот пример показывает, как легко интегрировать OpenTelemetry в ваше приложение, обеспечивая тем самым высокую степень наблюдаемости.
OpenTelemetry предлагает множество преимуществ для разработчиков и организаций, стремящихся улучшить свою наблюдаемость:
Использование OpenTelemetry позволяет вам не только собирать данные о работе вашего приложения, но и анализировать их, что в конечном итоге помогает принимать более обоснованные решения для оптимизации производительности.
OTel — open standard, vendor-neutral. Datadog agent — vendor-specific, более deep integrations. OTel migration easier if switch vendors.
2-5% CPU overhead с auto-instrumentation. Sampling (1-10% traces) снижает.
Tracing — stable с 2021. Metrics — stable с 2023. Logs — stable с 2024. All three usable в prod.
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.