Implement and troubleshoot Dynatrace integration using OpenTelemetry, OneAgent, Dynatrace Operator, OTLP ingestion, log ingestion, and environment-aware support practices. Use when the story needs Dynatrace-specific support on top of a broader observability design.
Implement and troubleshoot Dynatrace-specific observability support while keeping instrumentation as vendor-neutral as practical.
Follow docs/guidelines/shared-operating-policy.md#extension-pack-activation-rule — this skill belongs to the observability extension pack.
# Validate existing Dynatrace integration points
rg -n "dynatrace|DT_|DYNATRACE|otlphttp/dynatrace" . --type-list
# Validate OpenTelemetry Collector config with Dynatrace exporter
otelcol validate --config observability/otel-collector.yaml
otelcol-contrib validate --config observability/otel-collector.yaml
# Test connectivity to Dynatrace OTLP endpoint (requires curl and active token)
curl -v -X POST "https://<DT_ENVIRONMENT>.live.dynatrace.com/api/v2/otlp/v1/traces" \
-H "Authorization: Api-Token ${DT_API_TOKEN}" \
-H "Content-Type: application/x-protobuf" \
--data-binary @- << 'EOF'
# Empty protobuf for connectivity test
EOF
# List Dynatrace Operator resources in Kubernetes (if applicable)
kubectl get dynatraceapiaudits,dynakubes -A
kubectl describe dynakube -n dynatrace
# Check OneAgent/Operator pod status and logs
kubectl logs -n dynatrace -l app.kubernetes.io/name=dynatrace-operator --tail=50
kubectl logs -n dynatrace-oneagent -l dynatrace=oneagent --tail=50
# Verify Dynatrace token scopes (from environment/API)
# Token must have: metrics.ingest, logs.ingest, events.ingest (for minimal access)
echo "For OTLP: required scopes are 'metrics.ingest', 'logs.ingest', 'events.ingest'"
# Check environment and endpoint configuration
env | grep -i dynatrace
env | grep -i dt_
# Validate collector export path in logs
otelcol --config observability/otel-collector.yaml 2>&1 | grep -i "dynatrace\|exporting\|error"
# If OTLP export fails, check Dynatrace endpoint reachability
dig +short <DT_ENVIRONMENT>.live.dynatrace.com
nc -zv <DT_ENVIRONMENT>.live.dynatrace.com 443
# Inspect collector metrics for export status
curl -s http://localhost:8888/metrics | grep 'otelcol_exporter_sent_spans'
# Check for authentication failures in Dynatrace logs
# (requires Dynatrace credentials/API access)
curl -s "https://<DT_ENVIRONMENT>.live.dynatrace.com/api/v1/problem/feed?since=<TIMESTAMP>" \
-H "Authorization: Api-Token ${DT_API_TOKEN}" | jq '.result[] | select(.title | contains("OTLP"))'