A user was attempting to onboard Python-based microservices and NGINX to Splunk Observability Cloud. While the Python services successfully appeared in the APM Service Map, the NGINX service remained absent.
The user followed standard helm commands to install the splunk-otel-collector and applied a Kubernetes patch to enable Python instrumentation. For NGINX, the user attempted to use the Kubernetes annotation instrumentation.opentelemetry.io/inject-nginx: "true", expecting it to enable NGINX traces in APM. Despite NGINX metrics potentially being visible in Infrastructure Monitoring, the NGINX service did not appear in the APM Service Map.
During investigation, internal logs from the OpenTelemetry Operator sometimes showed errors such as "error":"no OpenTelemetry Instrumentation instances available", indicating that the operator was not properly injecting or applying the expected instrumentation to the NGINX deployment. Attempts to align the NGINX version with those explicitly supported by the OpenTelemetry Operator (e.g., downgrading to NGINX 1.23.1) also did not resolve the issue of missing APM traces.
To determine if a user is encountering this specific issue, the following steps can be taken:
Verify NGINX Presence in Infrastructure Monitoring vs. APM:
Review Kubernetes Annotations for NGINX:
instrumentation.opentelemetry.io/inject-nginx: "true" annotation.Examine OpenTelemetry Operator Logs:
"error":"no OpenTelemetry Instrumentation instances available"
kubectl logs -l app.kubernetes.io/name=opentelemetry-operator -n opentelemetry-operator-system
(Adjust label and namespace as per deployment)Confirm NGINX Role:
Consult Splunk OpenTelemetry Collector NGINX Documentation:
The issue of NGINX traces not appearing in the Splunk APM Service Map, despite attempts at auto-instrumentation, is typically resolved by understanding and correctly implementing Splunk's specific NGINX auto-instrumentation capabilities rather than relying on generic OpenTelemetry Operator annotations.
Here's how to address this:
Understand Splunk's NGINX Auto-Instrumentation:
instrumentation.opentelemetry.io/inject-nginx: "true" annotation provided by the OpenTelemetry Operator is primarily designed for nginx-ingress-controller and is maintained by the broader OpenTelemetry community. Splunk does not officially support or validate this specific method for general NGINX trace auto-instrumentation within its Observability Cloud ecosystem.Refer to Official Splunk Documentation:
agent.discovery.enabled=true and nginx: enabled: true under the appropriate sections) to ensure NGINX traces are collected and sent to APM.Implement Splunk-Specific Configuration:
splunk-otel-collector installation or upgrade.Consider Manual Instrumentation (If Applicable):
| Revision | Publish Date | Comments |
|---|---|---|
1.0 |
01-Oct-2026
|
Initial Release |