1. Le principe #
Les métriques RED de n'importe quel service.
Ce que fait Beyla #
Beyla s'attache aux processus ciblés et observe leurs requêtes HTTP, HTTP/2, gRPC, SQL, Redis ou Kafka (côté serveur et client). Il en déduit les métriques RED (Rate, Errors, Duration) et des spans au format OpenTelemetry.
À savoir : En 2025, Grafana Labs a donné le cœur de Beyla au projet OpenTelemetry sous le nom OpenTelemetry eBPF Instrumentation (OBI). Beyla reste la distribution de Grafana, avec la même configuration ; Alloy l'embarque dans le composant beyla.ebpf.2. Configurer Beyla #
Cibler, exporter.
Variables d'environnement #
docker run --rm --privileged --pid=host \
-e BEYLA_OPEN_PORT=8080 \
-e BEYLA_PROMETHEUS_PORT=9400 \
-e OTEL_EXPORTER_OTLP_ENDPOINT=http://alloy:4318 \
-e BEYLA_TRACE_PRINTER=text \
grafana/beyla:latest| Variable | Rôle |
|---|---|
BEYLA_OPEN_PORT | Instrumenter le processus qui écoute sur ce port |
BEYLA_EXECUTABLE_NAME | Ou cibler par nom d'exécutable |
BEYLA_PROMETHEUS_PORT | Exposer les métriques sur /metrics |
OTEL_EXPORTER_OTLP_ENDPOINT | Envoyer métriques et traces en OTLP |
BEYLA_TRACE_PRINTER | Afficher les spans dans la console (diagnostic) |
OTEL_SERVICE_NAME | Forcer le nom du service |
Fichier de configuration #
# beyla.yml
discovery:
instrument:
- open_ports: 8080-8089
- exe_path: "*/java"
routes:
patterns: [/api/orders/{id}, /api/users/{id}] # éviter la cardinalité des URL
unmatched: heuristic
prometheus_export:
port: 9400
otel_traces_export:
endpoint: http://tempo:4318Erreur Courante : Sansroutes, chaque URL distincte (/orders/123,/orders/124...) peut devenir une valeur de label. Déclarez les gabarits de routes ou laissez l'heuristique les regrouper.
3. Métriques et traces produites #
Les conventions OpenTelemetry.
Métriques #
| Métrique Prometheus | Contenu |
|---|---|
http_server_request_duration_seconds | Durée des requêtes HTTP reçues (histogramme) |
http_client_request_duration_seconds | Durée des requêtes HTTP émises |
rpc_server_duration_seconds | Durée des appels gRPC |
db_client_operation_duration_seconds | Durée des requêtes SQL |
# Taux d'erreurs 5xx par route
sum by (http_route) (rate(http_server_request_duration_seconds_count{http_response_status_code=~"5.."}[5m]))
/ sum by (http_route) (rate(http_server_request_duration_seconds_count[5m]))Côté traces, Beyla propage le contexte W3C (traceparent) pour plusieurs langages, ce qui permet des traces distribuées entre services instrumentés par eBPF.
Bonne Pratique : Commencez par Beyla pour couvrir tous les services en une journée, puis ajoutez un SDK OpenTelemetry là où vous avez besoin de spans métier détaillés.
4. Sur Kubernetes #
DaemonSet et découverte.
Helm #
helm install beyla grafana/beyla -n beyla --create-namespace -f values.yaml# values.yaml (extrait)
config:
data:
discovery:
instrument:
- k8s_namespace: boutique
attributes:
kubernetes: { enable: true }
prometheus_export: { port: 9090, path: /metrics }Beyla ajoute les métadonnées Kubernetes (namespace, pod, deployment) aux métriques et traces : c'est elles qui servent de service_name par défaut.
