ExOanda.Telemetry (ExOanda v0.1.1)
View SourceTelemetry configuration and utilities for ExOanda HTTP requests.
This module provides telemetry instrumentation for OANDA API requests using ReqTelemetry.
Telemetry Events
When enabled, this module will emit the following telemetry events:
[:req, :request, :pipeline, :start]- Request pipeline starts[:req, :request, :adapter, :start]- HTTP adapter starts[:req, :request, :adapter, :stop]- HTTP adapter completes[:req, :request, :adapter, :error]- HTTP adapter error[:req, :request, :pipeline, :stop]- Request pipeline completes[:req, :request, :pipeline, :error]- Request pipeline error
Configuration
Telemetry can be configured through the ExOanda.Connection struct:
# Enable telemetry with default settings
conn = %ExOanda.Connection{
telemetry: %ExOanda.Telemetry{
enabled: true,
use_default_logger: false,
options: []
}
}
# Enable telemetry with custom options
conn = %ExOanda.Connection{
telemetry: %ExOanda.Telemetry{
enabled: true,
use_default_logger: true,
options: [
pipeline: true,
adapter: true,
metadata: %{api_version: "v3"}
]
}
}Options
:pipeline(defaulttrue) - Emit pipeline telemetry events:adapter(defaulttrue) - Emit adapter telemetry events:metadata(defaultnil) - User-supplied metadata available in telemetry handlers
Default Logging
When use_default_logger is enabled, ReqTelemetry will automatically attach
a basic logger that outputs request information and timing to the console.
This is useful for development and debugging.
Example log output:
Req:479128347 - GET https://api-fxtrade.oanda.com/v3/accounts (pipeline)
Req:479128347 - GET https://api-fxtrade.oanda.com/v3/accounts (adapter)
Req:479128347 - 200 in 403ms (adapter)
Req:479128347 - 200 in 413ms (pipeline)Usage
This module is used internally by ExOanda when making API requests.
The maybe_attach_telemetry/2 function is called automatically based on
your connection configuration.
Performance Considerations
Telemetry instrumentation adds minimal overhead to requests, but you may want to disable it in production environments where detailed request monitoring isn't needed.