Environment Variables
Host, Kubernetes, and cloud identity
Resource attributes follow OpenTelemetry semantic conventions for host, K8s, and cloud:
Discovery order (later tiers only fill missing fields; never blocks startup; never emits
"unknown"):
- Explicit
OTEL_RESOURCE_ATTRIBUTES(wins via SDKWithFromEnv) - Kubernetes Node
GET(needsgetonnodes+K8S_NODE_NAME) — OpenCost-style labels / providerID - Parallel AWS / GCP / Azure instance metadata (short timeout)
- DMI
sys_vendorhint for provider only
cloud.provider + host.type + cloud.region as join keys for future UI cost attribution. The collector does not compute prices.
Kubernetes is detected via KUBERNETES_SERVICE_HOST. On GKE, AKS, and EKS the cluster name is read from the instance metadata service (short timeout; failures are ignored). Self-managed clusters should set k8s.cluster.name via OTEL_RESOURCE_ATTRIBUTES or K8S_CLUSTER_NAME.
Recommended Kubernetes DaemonSet (OTel-native)
K8S_NODE_NAME (without packing it into OTEL_RESOURCE_ATTRIBUTES), the collector still maps it to host.name and k8s.node.name automatically.
For K8s node label / providerID discovery, grant the DaemonSet ServiceAccount:
On EKS, pods without
hostNetwork may fail IMDSv2 when the node httpPutResponseHopLimit is 1. Prefer K8s node lookup (above), raise the hop limit to 2+, or run with hostNetwork: true. Timeouts are soft-fail and do not stop the collector.Common configurations
Minimal - send to a local OTel Collector
Production - with service name, environment, and auth header
HTTP/protobuf instead of gRPC
Disable eBPF CUDA tracing
On Linux, eBPF CUDA tracing is on by default. It discoverslibcudart from the filesystem and from /proc/*/maps (no CUDA volume mount required when Docker --pid=host / Kubernetes hostPID: true is set). Soft-fails without CAP_BPF + CAP_PERFMON (or root). Containers typically also need --ulimit memlock=-1:-1 so BPF maps can be created. Set false to skip:
libcudart.
Notes
OTEL_METRIC_EXPORT_INTERVALis in milliseconds per the OTel spec. For a 30-second interval, set30000.deployment.environmentis extracted fromOTEL_RESOURCE_ATTRIBUTESand attached as a resource attribute. Any key-value pairs inOTEL_RESOURCE_ATTRIBUTESare also forwarded to the OTel SDK resource viaresource.WithFromEnv().- If
OTEL_EXPORTER_OTLP_ENDPOINTis not set, the collector starts but no metrics are exported. Check the logs for a warning. - Auto-detected
host.name/k8s.*attributes are logged at startup asresolved resource identity.

