OpenTelemetry instrumentation for the Nova web framework.
Automatic HTTP request tracing and metrics following the OTel HTTP semantic conventions.
Add to your dependencies in rebar.config:
{deps, [
{opentelemetry_nova, "~> 0.1"}
]}.Call setup/0 during application startup:
opentelemetry_nova:setup().Or with Prometheus export:
opentelemetry_nova:setup(#{prometheus => #{port => 9464}}).Server spans are created for every HTTP request with the following attributes:
| Attribute | Source |
|---|---|
http.request.method |
Request method |
http.response.status_code |
Response status code |
http.route |
Matched route template (e.g. /users/:id) |
url.path |
Request path |
url.scheme |
http or https |
server.address |
Host header |
server.port |
Server port |
client.address |
X-Forwarded-For / Forwarded header, or peer IP |
network.peer.address |
Peer IP address |
network.peer.port |
Peer port |
network.protocol.version |
HTTP version (1.0, 1.1, 2, 3) |
user_agent.original |
User-Agent header |
error.type |
Status code as string on 5xx errors |
nova.app |
Nova application name |
nova.controller |
Controller module |
nova.action |
Action function |
Span names follow the {METHOD} {route} convention (e.g. GET /users/:id).
| Metric | Type | Attributes |
|---|---|---|
http.server.request.duration |
Histogram (seconds) | method, scheme, host, port, status, route, error.type |
http.server.active_requests |
UpDown Counter | method, scheme, host, port |
http.server.request.body.size |
Histogram (bytes) | method, scheme, host, port, status, route, error.type |
http.server.response.body.size |
Histogram (bytes) | method, scheme, host, port, status, route, error.type |
otel_nova_stream_h— Cowboy stream handler for HTTP tracing and metricsotel_nova_plugin— Nova plugin for span enrichment with route and controller infootel_nova_prom_exporter— Prometheus exporter with delta-to-cumulative conversionotel_nova_prom_server— HTTP server for Prometheus scraping
MIT