OpenTelemetry
imgproxy can send request traces to an OpenTelemetry collector. To use this feature, do the following:
- Install & configure the OpenTelemetry collector.
- Specify the collector endpoint (
host:port
) withIMGPROXY_OPEN_TELEMETRY_ENDPOINT
and the collector protocol withIMGPROXY_OPEN_TELEMETRY_PROTOCOL
. Supported protocols are:grpc
(default)https
http
.
- (optional) Set the
IMGPROXY_OPEN_TELEMETRY_SERVICE_NAME
environment variable to be the desired service name. - (optional) Set the
IMGPROXY_OPEN_TELEMETRY_PROPAGATORS
environment variable to be the desired list of text map propagators. Supported propagators are:tracecontext
: W3C Trace Contextbaggage
: W3C Baggageb3
: B3 Singleb3multi
: B3 Multijaeger
: Jaegerxray
: AWS X-Rayottrace
: OT Trace
- (optional) Set up TLS certificates or set
IMGPROXY_OPEN_TELEMETRY_GRPC_INSECURE
tofalse
to use secure connection without TLS certificates set. - (optional) Set
IMGPROXY_OPEN_TELEMETRY_ENABLE_METRICS
totrue
to enable sending metrics via OpenTelemetry Metrics API. - (optional) Set
IMGPROXY_OPEN_TELEMETRY_TRACE_ID_GENERATOR
to environment variable to be the desired trace ID generator. Supported values are:xray
: (default) Amazon X-Ray compatible trace ID generatorrandom
: random trace ID generator
imgproxy will send the following info to the collector:
- Response time
- Queue time
- Image downloading time
- Image processing time
- Errors that occurred while downloading and processing an image
If IMGPROXY_OPEN_TELEMETRY_ENABLE_METRICS
is set to true
, imgproxy will also send the following metrics to the collector:
requests_in_progress
: the number of requests currently in progressimages_in_progress
: the number of images currently in progressbuffer_size_bytes
: a histogram of buffer sizes (in bytes)buffer_default_size_bytes
: calibrated default buffer size (in bytes)buffer_max_size_bytes
: calibrated maximum buffer size (in bytes)vips_memory_bytes
: libvips memory usagevips_max_memory_bytes
: libvips maximum memory usagevips_allocs
: the number of active vips allocations- Some useful Go metrics like memstats and goroutines count
TLS Configuration
If your OpenTelemetry collector is secured with TLS, you may need to specify the collector's certificate on the imgproxy side:
IMGPROXY_OPEN_TELEMETRY_SERVER_CERT
: OpenTelemetry collector TLS certificate, PEM-encoded (you can replace line breaks with\n
). Default: blank
If your collector uses mTLS for mutual authentication, you'll also need to specify the client's certificate/key pair:
IMGPROXY_OPEN_TELEMETRY_CLIENT_CERT
: OpenTelemetry client TLS certificate, PEM-encoded (you can replace line breaks with\n
). Default: blankIMGPROXY_OPEN_TELEMETRY_CLIENT_KEY
: OpenTelemetry client TLS key, PEM-encoded (you can replace line breaks with\n
). Default: blank