mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-05 04:56:10 +02:00
Added a test suite under addons/otel/test/ for the OpenTelemetry filter. Five scenarios exercise different filter capabilities: standalone (sa) covers all hook points including idle-timeout heartbeats, metrics and log records; compact (cmp) covers the full request/response lifecycle with ACL-based error handling; context (ctx) tests explicit inject/extract propagation through numbered context variables; frontend/backend (fe/be) tests distributed tracing across two HAProxy instances; and empty tests bare filter initialisation with no active scopes. A performance benchmarking script (test-speed.sh) uses wrk to measure throughput and latency at different rate-limit settings (100% through 0%, disabled, and filter-off). Each scenario includes comprehensive YAML exporter definitions covering OTLP file/gRPC/HTTP, ostream, memory, Zipkin, and Elasticsearch backends.
82 lines
2.7 KiB
INI
82 lines
2.7 KiB
INI
[otel-test-cmp]
|
|
otel-instrumentation otel-test-instrumentation
|
|
config cmp/otel.yml
|
|
# log localhost:514 local7 debug
|
|
option dontlog-normal
|
|
option hard-errors
|
|
no option disabled
|
|
rate-limit 100.0
|
|
|
|
scopes client_session_start
|
|
scopes frontend_tcp_request
|
|
scopes frontend_http_request
|
|
scopes backend_tcp_request
|
|
scopes backend_http_request
|
|
scopes server_unavailable
|
|
|
|
scopes server_session_start
|
|
scopes tcp_response
|
|
scopes http_response http_response-error server_session_end client_session_end
|
|
|
|
otel-scope client_session_start
|
|
span "HAProxy session" root
|
|
baggage "haproxy_id" var(sess.otel.uuid)
|
|
span "Client session" parent "HAProxy session"
|
|
otel-event on-client-session-start
|
|
|
|
otel-scope frontend_tcp_request
|
|
span "Frontend TCP request" parent "Client session"
|
|
otel-event on-frontend-tcp-request
|
|
|
|
otel-scope frontend_http_request
|
|
span "Frontend HTTP request" parent "Frontend TCP request"
|
|
attribute "http.method" method
|
|
attribute "http.url" url
|
|
attribute "http.version" str("HTTP/") req.ver
|
|
finish "Frontend TCP request"
|
|
otel-event on-frontend-http-request
|
|
|
|
otel-scope backend_tcp_request
|
|
span "Backend TCP request" parent "Frontend HTTP request"
|
|
finish "Frontend HTTP request"
|
|
otel-event on-backend-tcp-request
|
|
|
|
otel-scope backend_http_request
|
|
span "Backend HTTP request" parent "Backend TCP request"
|
|
finish "Backend TCP request"
|
|
otel-event on-backend-http-request
|
|
|
|
otel-scope server_unavailable
|
|
span "HAProxy session"
|
|
status "error" str("503 Service Unavailable")
|
|
finish *
|
|
otel-event on-server-unavailable
|
|
|
|
otel-scope server_session_start
|
|
span "Server session" parent "HAProxy session"
|
|
finish "Backend HTTP request"
|
|
otel-event on-server-session-start
|
|
|
|
otel-scope tcp_response
|
|
span "TCP response" parent "Server session"
|
|
otel-event on-tcp-response
|
|
|
|
otel-scope http_response
|
|
span "HTTP response" parent "TCP response"
|
|
attribute "http.status_code" status
|
|
finish "TCP response"
|
|
otel-event on-http-response
|
|
|
|
otel-scope http_response-error
|
|
span "HTTP response"
|
|
status "error" str("!acl-http-status-ok")
|
|
otel-event on-http-response if !acl-http-status-ok
|
|
|
|
otel-scope server_session_end
|
|
finish "HTTP response" "Server session"
|
|
otel-event on-http-response
|
|
|
|
otel-scope client_session_end
|
|
finish "*"
|
|
otel-event on-http-response
|