Last updated: March 3, 2026
Identify Resources by Name and Type
When Dash0 identifies a resource through resource equality, it also assigns a human-readable name and type based on the available resource attributes. These are stored as dash0.resource.name and dash0.resource.type resource attributes and appear throughout the Dash0 UI—on the Map, in span detail panels, in the Log explorer, in alert notifications, and more.
How Names and Types are Determined
Naming and typing rules follow the same precedence order as resource equality rules. Each equality rule has a corresponding naming rule that uses a subset of the same attribute keys. Names prefer human-readable values (e.g., k8s.pod.name) over UIDs, falling back to UIDs when names aren't available.
User-Defined Override
If a resource already contains dash0.resource.name or dash0.resource.type attributes, those values take precedence over all computed rules. This gives you full control over how a resource appears in Dash0.
Naming Rules by Technology
Rules are listed in descending order of precedence.
Kubernetes Workloads
| Condition | Type | UI Label | Name |
|---|---|---|---|
k8s.pod.name or k8s.pod.uid set | k8s.pod | Pod | Pod name or UID |
k8s.job.name or k8s.job.uid set | k8s.job | Job | Job name or UID |
k8s.cronjob.name or k8s.cronjob.uid set | k8s.cronjob | CronJob | CronJob name or UID |
k8s.daemonset.name or k8s.daemonset.uid set | k8s.daemonset | DaemonSet | DaemonSet name or UID |
k8s.replicaset.name or k8s.replicaset.uid set | k8s.replicaset | ReplicaSet | ReplicaSet name or UID |
k8s.deployment.name or k8s.deployment.uid set | k8s.deployment | Deployment | Deployment name or UID |
k8s.statefulset.name or k8s.statefulset.uid set | k8s.statefulset | StatefulSet | StatefulSet name or UID |
k8s.namespace.name or k8s.namespace.uid set | k8s.namespace | Namespace | Namespace name |
k8s.node.name or k8s.node.uid set (no workload attrs) | k8s.node | Node | Node name or UID |
k8s.cluster.name, aws.eks.cluster.arn, or k8s.cluster.uid set | k8s.cluster | Cluster | Cluster name, ARN, or UID |
Other Infrastructure
| Condition | Type | UI Label | Name |
|---|---|---|---|
container.name or container.id set (non-K8s) | container | Container | Container name or ID |
host.name or host.id set | host | Host | Host name or ID |
heroku.app.id set | heroku.dyno | Heroku Dyno | <heroku.app.id>:<service.instance.id> |
cicd.pipeline.name set | cicd.pipeline | CI/CD Pipeline | Pipeline name |
Vercel
| Condition | Type | UI Label | Name |
|---|---|---|---|
cloud.provider == "Vercel" + faas.name + cloud.region | vercel.function | Vercel Function | <faas.name> (<cloud.region>) |
cloud.provider == "Vercel" + faas.name (no region) | vercel.function | Vercel Function | <faas.name> |
Browser
| Condition | Type | UI Label | Name |
|---|---|---|---|
telemetry.sdk.language == "webjs" or process.runtime.name == "browser" | browser | Website | Service namespace/name/instance.id combination |
Fallback Rules
When none of the technology-specific rules match, Dash0 falls back to service-based naming:
- Service with namespace or instance ID: If
service.namespaceand/orservice.instance.idare set, the name is built as<service.namespace>:<service.name>. No type is assigned. - Service name only: If only
service.nameis set, it becomes the resource name. No type is assigned. - No attributes match: The resource is named
unknownand nodash0.resource.typeis set.
With OpenTelemetry moving toward SDK-set service.instance.id attributes, service-based naming is intentionally low priority. Use the technology-specific rules or dash0.resource.name for more meaningful names.