nginxinc / nginx-otel

Apache License 2.0
168 stars 19 forks source link

Honor OTEL_RESOURCE_ATTRIBUTES environment variable #40

Open zakimaksyutov opened 9 months ago

zakimaksyutov commented 9 months ago

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.

p-pautov commented 9 months ago

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.

JPeer264 commented 6 months ago

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