Last updated: April 18, 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 |
AWS Services
| Condition | Type | UI Label | Name |
|---|---|---|---|
cloud.provider == "aws" + faas.instance set | aws.lambda.function | Lambda Function | <faas.name> (function name) |
aws.ecs.task.arn set | aws.ecs.task | ECS Task | Task ARN or derived name |
aws.ecs.cluster.arn set | aws.ecs.cluster | ECS Cluster | Cluster ARN or derived name |
cloud.provider == "aws" + messaging.system == "aws_sqs" | aws.sqs.queue | SQS Queue | <messaging.destination.name> |
cloud.provider == "aws" + messaging.system == "aws_sns" | aws.sns.topic | SNS Topic | <messaging.destination.name> |
cloud.provider == "aws" + faas.trigger == "http" + API Gateway identifier | aws.api_gateway | API Gateway | API ID from URL or <faas.name> |
Example AWS Lambda name: For a function named user-service-prod, the name will be user-service-prod.
Example ECS Task name: For a task with ARN arn:aws:ecs:us-east-1:123456789012:task/my-cluster/abc123, the name may be derived as my-cluster/abc123.
Example SQS Queue name: For a queue with messaging.destination.name = order-processing-queue, the name will be order-processing-queue.
GCP Services
| Condition | Type | UI Label | Name |
|---|---|---|---|
cloud.provider == "gcp" + faas.instance set | gcp.cloud_run.service | Cloud Run Service | <faas.name> (service name) |
cloud.provider == "gcp" + messaging.system == "gcp_pubsub" | gcp.pubsub.topic | Pub/Sub Topic | <messaging.destination.name> |
cloud.provider == "gcp" + gcp.gcs.bucket.name set | gcp.storage.bucket | Storage Bucket | <gcp.gcs.bucket.name> |
Example Cloud Run name: For a service named api-service in region us-central1, the name will be api-service.
Example Pub/Sub name: For a topic with messaging.destination.name = events-topic, the name will be events-topic.
Example GCS Bucket name: For a bucket named my-data-bucket, the name will be my-data-bucket.
Container and Host
| 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 |
Other Platforms
| Condition | Type | UI Label | Name |
|---|---|---|---|
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 |
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/RUM Applications
| Condition | Type | UI Label | Name |
|---|---|---|---|
telemetry.sdk.language == "webjs" or process.runtime.name == "browser" | browser | Website | Derived from service attributes |
For browser applications, the name is constructed from available service attributes:
- With namespace and name:
<service.namespace>:<service.name> - With name only:
<service.name> - With instance ID only:
<service.instance.id>
Each unique combination of browser attributes (user agent, screen size, etc.) creates a distinct resource. This prevents incorrect merging of telemetry from different browser configurations.
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 from the service triplet. 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.
Best Practices
- Use resource detectors in OpenTelemetry SDKs to automatically populate platform-specific attributes
- For AWS services, enable the AWS resource detector to populate ARNs and service identifiers
- For GCP services, enable the GCP resource detector to populate project and service information
- For Kubernetes, use the K8sAttributes processor in the OpenTelemetry Collector to enrich telemetry with pod, deployment, and namespace metadata
- Set custom names using
dash0.resource.namewhen the computed name isn't suitable for your use case - Monitor resource types using
dash0.resource.typeto ensure resources are being classified correctly - For browser applications, set
service.nameto a meaningful application identifier for better resource naming