Перейти к содержанию

Beyla: eBPF автоинструментирование


Классическая проблема: нужно инструментировать приложения. Добавлять OpenTelemetry SDK. Вставлять в код вызовы AsyncSpan, Context Propagation, семплирующие библиотеки метрик.

А если приложение легаси (старый Python 2)? А если это проприетарное ПО? А если команда не SRE и "изменять код не имеем права"? Ответ: Beyla.

Beyla — это агент eBPF (extended Berkeley Packet Filter), который, работая внутри ядра Linux, автоматически генерирует трейсы, метрики и карту сервиса для приложений без изменения исходного кода (zero-code instrumentation). Он буквально слушает TCP/UDP-пакеты, понимает, какие сервисы общаются, и строит всё автоматически.


Как это технически возможно

eBPF запускает программу внутри ядра Linux перед TCP-стеком. Бейла перехватывает каждый пакет и обрабатывает:

  • Клиент → API-GW → backend. Beyla строит трейс (span) для каждого hop'а.
  • Без SDK. Без заголовков TraceContext. Beyla внедряет их сам в HTTP-заголовки.


RED-метрики, сгенерированные Beyla

RED metrics (Rate, Errors, Duration) вычисляются автоматически и отправляются в Prometheus/Mimir. Для каждого сервиса Beyla генерирует:

  • beyla_http_server_request_duration_seconds_count
  • beyla_http_server_request_duration_seconds_sum

Это стандартные гистограммы Prometheus. Подхватываются Grafana как любой источник метрик.

Карта сервиса автоматически генерируется. В Grafana появляется трафаретная карта всех взаимодействий сервисов, включая легаси, которые никто не инструментировал.

Итог: Beyla — это как Google Maps для микросервисов. Без карты теряешься, строишь её вручную — долго и ошибочно. Запустил Beyla — получил живую карту сервиса.


Далее: OpenTelemetry и Grafana