nginx-otel icon indicating copy to clipboard operation
nginx-otel copied to clipboard

Honor OTEL_RESOURCE_ATTRIBUTES environment variable

Open zakimaksyutov opened this issue 1 year ago • 5 comments

In my Kubernetes setup every pod gets OTEL_RESOURCE_ATTRIBUTES environment variable set which contains everything needed to troubleshoot/monitor our microservices. Every app instrumented with Open Telemetry automatically picks up these resource attributes. But Nginx does not. As a result, through it emits spans and participated in distributed tracing, it doesn't contain everything.

Describe the solution you'd like

nginx-otel module to honor OTEL_RESOURCE_ATTRIBUTES environment variable and emits them as Resource object.

According to Open Telemetry spec, all producers must honor this environment variable.

Describe alternatives you've considered

The closest - with otel_span_attr it is potentially possible to inject needed information as span attribute. But this still will not be resource attribute and as a result not aligned with the rest of applications. This also will require nginx.conf changes every time we decide to add something to OTEL_RESOURCE_ATTRIBUTES.

zakimaksyutov avatar Feb 28 '24 18:02 zakimaksyutov

There is #32 to support custom resource attributes via config, but supporting environment variables like OTEL_RESOURCE_ATTRIBUTES and OTEL_SERVICE_NAME makes sense as well.

p-pautov avatar Feb 29 '24 05:02 p-pautov

It would also be nice to have the exporter (OTEL_EXPORTER_OTLP_ENDPOINT) and its headers (OTEL_EXPORTER_OTLP_HEADERS) to be configurable via environment variables: https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/.

JPeer264 avatar May 02 '24 18:05 JPeer264