Instrumentación eBPF con OpenTelemetry

Aprende a usar OpenTelemetry eBPF para instrumentación automática.

Las librerías de OpenTelemetry proporcionan la recolección de telemetría para lenguajes de programación y frameworks populares. Sin embargo, comenzar con trazas distribuidas puede ser complejo. En algunos lenguajes compilados como Go o Rust, debes agregar manualmente tracepoints en el código.

OpenTelemetry eBPF Instrumentation (OBI) es una herramienta de auto-instrumentación para empezar fácilmente con la observabilidad de aplicaciones. OBI usa eBPF para inspeccionar automáticamente los ejecutables de las aplicaciones y la capa de red del sistema operativo, y capturar spans de traza relacionados con transacciones web y métricas RED (Rate, Errors, Duration) para servicios HTTP/S y gRPC en Linux. Toda la captura de datos ocurre sin modificaciones al código o configuración de la aplicación.

OBI ofrece las siguientes características:

  • Amplio soporte de lenguajes: Java, .NET, Go, Python, Ruby, Node.js, C, C++ y Rust
  • Ligero: No requiere cambios en el código, ni instalar librerías, ni reinicios
  • Instrumentación eficiente: Las trazas y métricas son capturadas por probes eBPF con mínima sobrecarga
  • Trazas distribuidas: Los spans de traza se capturan y reportan a un Collector
  • Kubernetes-nativo: Auto-instrumentación sin configuración para aplicaciones en Kubernetes
  • Visibilidad en comunicaciones cifradas: Captura transacciones sobre TLS/SSL sin descifrado
  • Propagación de contexto: Propaga el contexto de trazas entre servicios automáticamente
  • Soporte de protocolos: HTTP/S, gRPC y gRPC-Web
  • Métricas de baja cardinalidad: Métricas compatibles con Prometheus de baja cardinalidad
  • Observabilidad de red: Captura flujos de red entre servicios
  • Trazas de base de datos: Captura consultas y conexiones de bases de datos

Requisitos

OBI requiere lo siguiente para ejecutarse:

  • Kernel de Linux versión 5.8 o posterior (o 4.18 en RHEL)
  • Procesador x86_64 o arm64
  • Soporte en tiempo de ejecución para eBPF (la mayoría de las distribuciones modernas de Linux lo incluyen)
  • Privilegios administrativos (acceso root) o capacidades específicas listadas en la referencia de configuración
Arquitectura eBPF de OBI

Compatibilidad

OBI ha sido probado en:

  • Ubuntu 20.04 LTS, 21.04, 22.04 LTS y 23.04

  • CentOS 7, 8 y 9

  • AlmaLinux 8, 9

  • Rocky Linux 8, 9

  • Red Hat Enterprise Linux 8, 9

  • Debian 11, 12

  • openSUSE Leap 15.3, 15.4

  • SUSE Linux Enterprise Server 15 SP4

  • Para instrumentar programas en Go, compílalos con al menos Go 1.17. OBI soporta aplicaciones Go construidas con una versión no anterior a 3 versiones detrás de la estable actual.

  • Derechos de acceso administrativo para ejecutar OBI.

Limitaciones

OBI también tiene limitaciones. Solo proporciona métricas genéricas e información de spans de traza a nivel de transacción. Aún se recomienda usar agentes de lenguaje e instrumentación manual para atributos y eventos personalizados.

Aunque la mayoría de los programas eBPF requieren privilegios elevados, OBI permite especificar permisos más finos como CAP_DAC_READ_SEARCH, CAP_SYS_PTRACE, CAP_PERFMON, CAP_BPF, CAP_CHECKPOINT_RESTORE. Algunas funciones (por ejemplo network observability probes con Linux Traffic Control) requieren CAP_NET_ADMIN.

Para una lista completa de capacidades requeridas por OBI, consulta Seguridad, permisos y capacidades.

Primeros pasos con OBI

  • Sigue la documentación de configuración para comenzar con OBI ya sea con Docker o Kubernetes.

Configure OBI

Learn how to configure OBI.

Network metrics

Configuring OBI to observe point-to-point network metrics.

OBI Configuración

Aprende como configurar y ejecutar OBI.

Métricas exportadas por OBI

Obtener información sobre las métricas HTTP/gRPC que OBI puede exportar.

Measuring total request times, instead of service times

How to measure total request times from the point of view of the client

Seguridad, permisos y capacidades de OBI

Privilegios y capacidades requeridos por OBI

Trazas distribuidas con OBI

Más información sobre la compatibilidad con trazas distribuidas de OBI.

OBI and Cilium compatibility

Compatibility notes when running OBI alongside Cilium

OBI metrics cardinality

Overview of how to calculate the cardinality of metrics produced by a default OBI installation, considering the size and complexity of the instrumented environment.