Guides

A Comprehensive Guide to OpenTelemetry Service Definitions

In this post, we will outline the OpenTelemetry Semantic Conventions for service-level attributes and provide clear definitions, examples, and best practices for implementation.

Daniel Bright
Senior Solutions Architect
May 29, 2025
3 minutes
Share

See Edge Delta in Action

This is the second entry in an ongoing series about data normalization. Stay tuned for future posts on this topic.

Organizations collect massive volumes of telemetry data from a wide range of sources, but inconsistent data formats often lead to blind spots that obscure visibility and limit insights.

In our first post in the data normalization series, we described the value of using Edge Delta’s Telemetry Pipelines to automatically standardize incoming data onto the OpenTelemetry (OTel) schema for interoperability across diverse systems. 

In this post, we will outline the OpenTelemetry Semantic Conventions for service-level attributes and provide clear definitions, examples, and best practices for implementation. We’ll also explain why standardizing service definitions with OTel offers significant advantages over custom naming conventions, including portability across observability tools, reduced integration costs, and enhanced scalability. 

You’ll come away with a better understanding of how to properly map application and service data onto the OTel schema to enhance your observability workflows.

What Are Service-Level Attributes?

The OTel Semantic Conventions enhance system visibility by defining four key service-level attributes that describe services generating telemetry data. They are shown in the table below, supplemented by an Edge Delta recommended custom attribute, service.technology

These attributes ensure consistency, enable correlation across services, and support advanced observability use cases. For instance, a team that is A/B testing different versions of an e-commerce payment service can use the service.version attribute to accurately identify all log data generated from both versions — and to compare performance and user behavior across deployments.

If you choose to include the optional service.namespace attribute, you’ll be able to link components of an application with other resources — such as network devices and storage arrays. This creates a clearer picture of all affected components, which is essential for troubleshooting service behavior.

Attribute Explanations

In this section, we’ll walk through the four service-level attributes in greater detail. For each attribute, we’ve noted a general purpose, example use case, recommended best practice, and overall benefit. We’ve also noted whether an attribute is required or recommended, and labeled each attribute with either “stable,” “in development,” or “for reference” to indicate if the semantic convention has been fully implemented in OTel.

service.name

  • Status: Required, stable
  • Purpose: Identifies the service generating telemetry, serving as the primary key for observability tools.
  • Use Case: A service that handles order processing might be named order-service, distinguishing it from other services like frontend-proxy or payment-service.
  • Best Practice: Use descriptive, role-based names (e.g., order-processor instead of app). Avoid generic names to reduce ambiguity in large systems. 
  • Benefit: Ensures consistent service identification across tools, enabling end-to-end tracing and metrics correlation.

service.instance.id:

  • Status: Recommended, in development
  • Purpose: Uniquely identifies each instance of a service, which is crucial for horizontal scaling.
  • Use Case: In a Kubernetes cluster, each pod running order-service gets a unique ID (e.g., a UUID or pod name like order-service-pod-123). In non-Kubernetes environments, such as an Amazon EC2 instance, this attribute might point to the instance ID (e.g., i-0abcd1234efgh5678) or a custom UUID generated at startup.
  • Best Practice: Use UUIDs, platform-specific IDs (e.g., Kubernetes pod UID, EC2 instance ID, Docker container ID), or a combination of identifiers (e.g., hostname + PID) to ensure global uniqueness within the namespace and service name.
  • Benefit: Links issues to specific instances, which improves debugging across VMs, serverless functions, or Kubernetes clusters.

service.namespace:

  • Status: Recommended, in development
  • Purpose: Groups related services under a logical namespace, often representing an application or team.
  • Use Case: Services like order-service, frontend-proxy, and product-cache might share service.namespace: "ecommerce" to indicate that they all belong to the same e-commerce platform.
  • Best Practice: Align namespaces with business domains or applications (e.g., ecommerce, finance). Keep names low-cardinality to optimize storage and querying.
  • Benefit: Simplifies correlation of telemetry data across services, enhancing application-level visibility.

service.version:

  • Status: Recommended, stable
  • Purpose: Tracks the version of the service’s code or API, aiding in debugging and rollout tracking.
  • Use Case: A service version might be 1.0.0 for a stable release or a commit hash like a01dbef8a for development builds.
  • Best Practice: Use semantic versioning (e.g., 2.1.0) for releases or Git commit hashes for CI/CD pipelines. Include in all telemetry to track changes.
  • Benefit: Enables comparison of performance or errors across versions, which is critical for A/B testing and upgrades.

service.technology:

  • Status: Optional, for reference
  • Purpose: Indicates the technology stack of the service. While service.technology is not part of the official OTel Semantic Conventions, Edge Delta recommends using it to improve visibility in mixed-technology environments.
  • Use Case: For a .NET service like order-service (see below), set service.technology: "dotnet" to align with telemetry.sdk.language: "dotnet". Similarly, frontend-proxy might use service.technology: "nginx".
  • Best Practice: Use consistent, lowercase values that match common technology identifiers (e.g., dotnet, nginx, redis). Align with telemetry.sdk.language where applicable.
  • Benefit: Enhances filtering and debugging in observability tools — especially in mixed-technology environments — by clearly identifying the underlying stack.

OTel Service Definition Example

Below is an example OTel-based service definition for a .NET order-service within an e-commerce platform, shown in JSON format. This service processes customer orders in a production environment on an EC2 instance, alongside other services like frontend-proxy (NGINX) and product-cache (Redis).

JSON Format:

{
  "resource": {
    "application.name": "ecommerce-platform",
    "service.name": "order-service",
    "service.namespace": "ecommerce",
    "service.version": "1.0.0",
    "service.instance.id": "i-0abcd1234efgh5678",
    "service.technology": "dotnet",
    "environment": "Production",
    "telemetry.sdk.language": "dotnet",
    "telemetry.sdk.name": "serilog",
    "telemetry.sdk.version": "4.1.1"
  }
}

Context:

  • The order-service is part of the ecommerce-platform application, grouped under the ecommerce namespace.
  • It runs on .NET, with service.technology: "dotnet" clarifying the stack.
  • The service.instance.id is an EC2 instance ID (i-0abcd1234efgh5678), demonstrating a non-Kubernetes deployment scenario.
  • This setup reflects a typical e-commerce architecture, ensuring relevance to a broad audience.

With this service definition in place, telemetry data can be grouped together by any combination of these fields for more precise enrichment and optimization. For instance, the service.namespace attribute can be used to extract metrics and patterns from all logs originating solely from the "ecommerce" namespace, which provides a more granular view into the workflows running within it.

Benefits of OTel Standardization Over Custom Naming

OTel Semantic Conventions offer significant advantages over custom naming conventions, particularly for organizations seeking interoperable observability at scale. Below are some key benefits:

  • Interoperability Across Tools:
  • OTel Standardization: Ensures telemetry data is portable across observability backends (such as Jaeger, Prometheus, New Relic, or Datadog), which helps teams avoid vendor lock-in.
  • Custom Naming: Makes data less portable and requires proprietary mappings, which increases integration costs and complexity.
  • Consistency and Scalability:
  • OTel Standardization: Attributes like service.name and service.namespace facilitate consistency across teams and services, which simplifies monitoring in large systems.
  • Custom Naming: Leads to inconsistencies (e.g., app1, service2) that can cause confusion, friction, and data fragmentation.
  • Cost Savings:
  • OTel Standardization: OTel’s open-source nature eliminates licensing costs associated with proprietary telemetry solutions.
  • Custom Naming: Involves significant manual processing overhead. It also increases cardinality for unnecessary metrics and logs, thereby inflating downstream data volumes.  
  • Future-Proofing:
  • OTel Standardization: OpenTelemetry is actively maintained by a large community, which helps ensure compatibility with emerging technologies and standards.
  • Custom Naming: Custom solutions risk obsolescence as tools evolve and require costly reworks.
  • Enhanced Debugging and Insights:
  • OTel Standardization: Attributes like service.version, service.instance.id, and service.technology enable precise debugging (e.g., identifying a faulty instance, version, or technology-specific issue).
  • Custom Naming: Lacks granularity, hindering root-cause analysis.

Wrapping Up

OTel Semantic Conventions enable organizations to implement scalable, interoperable, and cost-effective observability strategies. These standards ensure consistent telemetry across services, streamline debugging, and future-proof systems by reducing complexity and eliminating vendor lock-in. 

If you’re interested in learning more about accelerating OTel adoption with Edge Delta, get hands-on in our free-to-use playground environment, or schedule a demo with an expert to see how we can support your team’s unique needs.

Stay in Touch

Sign up for our newsletter to be the first to know about new articles.