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_countbeyla_http_server_request_duration_seconds_sum
Это стандартные гистограммы Prometheus. Подхватываются Grafana как любой источник метрик.
Карта сервиса автоматически генерируется. В Grafana появляется трафаретная карта всех взаимодействий сервисов, включая легаси, которые никто не инструментировал.
Итог: Beyla — это как Google Maps для микросервисов. Без карты теряешься, строишь её вручную — долго и ошибочно. Запустил Beyla — получил живую карту сервиса.
Далее: OpenTelemetry и Grafana