View Source opentelemetry_cowboy (opentelemetry_cowboy v1.0.0)
OpenTelemetry instrumentation for cowboy.
Semantic Conventions
All required and recommended Server HTTP Span semantic conventions are implemented.
Supported opt-in attributes can be configured using the opt_in_attrs option.
Options
Opt-in Semantic Convention Attributes
Otel SemConv requires users to explicitly opt in for any attribute with a
requirement level of opt-in. To ensure compatability, always use the
SemConv attribute.
Example:
OptInAttrs = [{?HTTP_REQUEST_BODY_SIZE, true}]`
opentelemetry_cowboy:setup(#{opt_in_attrs => OptInAttrs)Request and Response Headers as Opt-in Attributes
Request and response header attributes are opt-in and can be set with the
request_headers and response_headers options. Values should be lower-case.
opentelemetry_cowboy:setup(#{request_headers => ["x-customer-id"]})Public Endpoint
Setting an endpoint as public will result in any propagated trace to be added as a link,
rather than a continuation of an existing trace. The public_endpoint option should be set
to true if an endpoint only accepts public traffic to prevent missing root spans. By default,
the endpoint is handled as non-public, resulting in traces being continued rather than linked.
In a mixed traffic environment, an MFA can be supplied to determine whether to
treat a request as public. This function is executed on every request, so refrain
from expensive operations such as lookups to external systems. The function must
be a predicate function of arity-2, accepting the Req from the request as
the first argument and user-supplied options as the second. Any dynamic
information used in comparisons should be supplied at setup time for efficiency.
Example:
-module(public_endpoint).
is_public_request(Req, Opts) ->
# return true if request was public
opentelemetry_cowboy:setup(#{public_endpoint_fn => {public_endpoint, fun is_public_request/2, []}}).
Summary
Functions
Initializes and configures the telemetry handlers.
Functions
-spec setup() -> ok.
Initializes and configures the telemetry handlers.
Supported options:
client_address_headers- Headers to use for extracting original client request address info. Default:[<<"forwarded">>, <<"x-forwarded-for">>]client_headers_sort_fn- Custom client header sort fn. Seeotel_httpfor more info. Default:undefinedhandler_id- Only set when running multiple instances on different endpoints. Default:otel_cowboyopt_in_attrs- Use semantic conventions library to ensure compatability, e.g.[{?HTTP_REQUEST_BODY_SIZE, true}]. Default:[]public_endpoint- Endpoint is public. Propagated traces will be added as a link. Default:falsepublic_endpoint_fn- Default function returnsfalse. See docs for more info.request_headers- List of request headers to add as attributes. (lowercase). Default:[]response_headers- List of response headers to add as attributes. (lowercase). Default:[]scheme_headers- Headers to use for extracting original client request scheme. Default:[<<"forwarded">>, <<"x-forwarded-proto">>]scheme_headers_sort_fn- Custom scheme header sort fn. Seeotel_httpfor more info. Default:undefinedserver_address_headers- Headers to use for extracting original server address info. Default:[<<"forwarded">>, <<"x-forwarded-host">>, <<"host">>]server_address_headers_sort_fn- Custom server header sort fn. Seeotel_httpfor more info. Default:undefined
-spec setup([] | map()) -> ok.