Telemetry instrumentation for the Cowboy HTTP server.
This package contains a cowboy_stream handler that will instrument each request and emit telemetry events.
Configure your cowboy server with the cowboy_telemetry_h stream handler first.
cowboy:start_clear(http, [{port, Port}], #{
env => #{dispatch => Dispatch},
stream_handlers => [cowboy_telemetry_h, cowboy_stream_h]
}.A span event emitted at the beginning of a request.
measurements:#{system_time => erlang:system_time()}metadata:#{stream_id => cowboy_stream:streamid(), req => cowboy_req:req()}
A span event emitted at the end of a request.
measurements:measurements()metadata:metadata()
If the request is terminated early - by the client or by the server - before a response is sent, the metadata will also contain an error:
metadata:metadata()+#{error => cowboy_stream:reason()}
A span event emitted if the request process exits.
measurements:measurements()metadata:metadata()+#{kind => exit, stacktrace => list()}
A single event emitted when Cowboy itself returns an early_error response before executing any handlers.
measurements:#{system_time => erlang:system_time(), resp_body_length => non_neg_integer()}metadata:metadata()withoutprocsorinformational
measurements():duration :: req_start - req_endseecowboy_metrics_hreq_body_duration :: req_body_start - req_body_endseecowboy_metrics_hresp_duration :: resp_start - resp_endseecowboy_metrics_hreq_body_length :: non_neg_integer()resp_body_length :: non_neg_integer()
metadata():pid,streamid,req,resp_headers,resp_status,refanduser_datafromcowboy_metrics_h:metrics()
cowboy_metrics_h:metrics(): Defined incowboy_metrics_h
Note:
- The
telemetryhandlers are executed from the cowboy connection process, not from the request process.