Skip to content
EN

Что такое OpenTelemetry

Коротко:

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.

Проверить свой сайт →

Подробности

  • SDK (в app): generates spans, metrics
  • Collector: receives from SDK, processes (sampling, filtering), exports
  • Exporters: Jaeger, Prometheus, OTLP (open protocol), vendor-specific
  • Auto-instrumentation: drop-in для Express, Flask, Django, FastAPI, Spring, Rails
  • Context propagation: trace_id через HTTP headers (W3C Trace Context)

Пример

// 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-traced

Смежные термины

Что такое OpenTelemetry?

OpenTelemetry — это стандарт открытого исходного кода для мониторинга и наблюдаемости распределённых систем, который предоставляет разработчикам инструменты для сбора, обработки и передачи метрик, трассировок и логов. Он объединяет лучшие практики из существующих систем, таких как OpenTracing и OpenCensus, и предлагает единый API и SDK для работы с различными платформами.

Используя OpenTelemetry, вы можете легко интегрировать наблюдаемость в свои приложения, что позволяет лучше понимать их поведение и производительность. Стандарт поддерживает множество языков программирования, включая Java, Python, JavaScript и Go, что делает его универсальным решением для разных стеков технологий.

Как настроить OpenTelemetry для вашего приложения?

Настройка OpenTelemetry состоит из нескольких шагов. Рассмотрим пример настройки для простого приложения на Python.

  1. Установите зависимости: Для начала вам необходимо установить библиотеку OpenTelemetry. Это можно сделать с помощью pip:
pip install opentelemetry-api opentelemetry-sdk opentelemetry-instrumentation-flask
  1. Импортируйте необходимые модули: В вашем приложении импортируйте необходимые модули для инициализации OpenTelemetry:
from 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 BatchSpanProcessor
  1. Настройте провайдер трассировок: Создайте и настройте провайдер трассировок:
resource = 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))
  1. Инструментируйте ваше приложение: Теперь можно инструментировать ваше Flask-приложение:
app = Flask(__name__)
FlaskInstrumentor().instrument_app(app)
  1. Запустите приложение: После этого ваше приложение будет автоматически собирать и отправлять трассировки в указанный экспортер, в данном случае — Zipkin. Запустите приложение и проверьте, что данные поступают корректно.

Этот пример показывает, как легко интегрировать OpenTelemetry в ваше приложение, обеспечивая тем самым высокую степень наблюдаемости.

Преимущества использования OpenTelemetry

OpenTelemetry предлагает множество преимуществ для разработчиков и организаций, стремящихся улучшить свою наблюдаемость:

  • Единый стандарт: OpenTelemetry объединяет различные инструменты мониторинга под одним стандартом, что упрощает интеграцию и использование.
  • Поддержка множества платформ: Стандарт поддерживает множество языков программирования и фреймворков, что делает его универсальным решением для различных приложений.
  • Гибкость: OpenTelemetry позволяет настраивать сбор данных в зависимости от потребностей вашего проекта, включая выбор экспортеров и форматов данных.
  • Сообщество: Как проект с открытым исходным кодом, OpenTelemetry активно поддерживается сообществом, что обеспечивает регулярные обновления и улучшения.

Использование OpenTelemetry позволяет вам не только собирать данные о работе вашего приложения, но и анализировать их, что в конечном итоге помогает принимать более обоснованные решения для оптимизации производительности.

Больше по теме

Часто задаваемые вопросы

OpenTelemetry vs Datadog agent?

OTel — open standard, vendor-neutral. Datadog agent — vendor-specific, более deep integrations. OTel migration easier if switch vendors.

Производительность overhead?

2-5% CPU overhead с auto-instrumentation. Sampling (1-10% traces) снижает.

Stable release?

Tracing — stable с 2021. Metrics — stable с 2023. Logs — stable с 2024. All three usable в prod.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.