nginxinc/nginx-otel

Honor OTEL_RESOURCE_ATTRIBUTES environment variable

Opened this issue · 2 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.

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.

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/.