Skip to content

Aligning Coralogix and OTel Naming Conventions

OpenTelemetry sometimes introduces breaking changes that, if left unaddressed, can disrupt the experience for customers upgrading to newer versions. To prevent this, enable a transform statement to ensure that span attributes and metric labels conform to Coralogix-supported label conventions.

Usage guidelines

Coralogix APM and the OpenTelemetry Collector currently support the label conventions outlined in the APM label conventions supported by Coralogix section below. If you use labels that do not adhere to Coralogix conventions, utilize a transform processor in the OpenTelemetry Collector to extract the values from your custom labels and map them to the conventions supported by Coralogix.

Align span attributes with Coralogix-supported metric label conventions

Span Metrics rely on metrics directly gathered from the collector. Events2Metrics, on the other hand, are derived from spans that are sent to Coralogix, which are then converted into metrics using the Events2Metrics method. For more detailed information, refer to the Span Metrics and Events2Metrics documentation.

Use the transform/spanmetrics or transform/event2metric processor to align span attributes with Coralogix-supported metric label conventions when collecting metrics through Span Metrics or Events2Metrics. In the next sections, we will explore how to use the transform statement in each of these methods.

Span Metrics

Updating the transform/spanmetrics processor

Add the required transformation as part of the transform/spanmetrics processor. The following example illustrates how to transform attributes into a supported convention.

transform/spanmetrics:
        error_mode: silent
        trace_statements:
        - context: span
          statements:
          - set(attributes["db.namespace"], attributes["db.name"]) where attributes["db.namespace"]
            == nil
          - set(attributes["db.namespace"], attributes["server.address"]) where attributes["db.namespace"]
            == nil
          - set(attributes["db.namespace"], attributes["network.peer.name"]) where attributes["db.namespace"]
            == nil
          - set(attributes["db.namespace"], attributes["net.peer.name"]) where attributes["db.namespace"]
            == nil
          - set(attributes["db.namespace"], attributes["db.system"]) where attributes["db.namespace"]
            == nil
          - set(attributes["db.operation.name"], attributes["db.operation"]) where attributes["db.operation.name"]
            == nil
          - set(attributes["db.collection.name"], attributes["db.sql.table"]) where attributes["db.collection.name"]
            == nil
          - set(attributes["db.collection.name"], attributes["db.cassandra.table"]) where
            attributes["db.collection.name"] == nil
          - set(attributes["db.collection.name"], attributes["db.mongodb.collection"])
            where attributes["db.collection.name"] == nil
          - set(attributes["db.collection.name"], attributes["db.redis.database_index"])
            where attributes["db.collection.name"] == nil
          - set(attributes["db.collection.name"], attributes["db.elasticsearch.path_parts.index"])
            where attributes["db.collection.name"] == nil
          - set(attributes["db.collection.name"], attributes["db.cosmosdb.container"])
            where attributes["db.collection.name"] == nil
          - set(attributes["db.collection.name"], attributes["aws_dynamodb.table_names"])
            where attributes["db.collection.name"] == nil

Adding the transform/spanmetrics to the pipeline

Place the transform/spanmetrics processor above the batch processor in the traces pipeline.

        traces:
          exporters:
          - debug
          - spanmetrics
          - forward/db
          processors:
          - memory_limiter
          - resource/metadata
          - k8sattributes
          - transform/k8s_attributes
          - transform/spanmetrics
          - batch

Events2Metrics

Updating the transform/spanmetrics processor

Add the required transformation as part of the transform/spanmetrics processor. For example, Coralogix uses http.method, whereas another convention uses http.request.method. In this case, map http.request.method to http.method.

transform/event2metric:
    error_mode: silent
    trace_statements:
      - context: span
        statements:
          - set(attributes["http.method"], attributes["http.request.method"]) where attributes["http.method"] == nil

Adding the transform/spanmetrics processor to the pipeline

Add the transform processor above the batch processor within the trace pipeline.

        traces:
          exporters:
          - debug
          - forward/db
          processors:
          - memory_limiter
          - resource/metadata
          - k8sattributes
          - transform/k8s_attributes
          - transform/event2metric
          - batch

APM label conventions supported by Coralogix

Coralogix fully supports OpenTelemetry, including its semantic conventions. However, as the OpenTelemetry specification evolves, new attributes or updates may be introduced that are not yet fully supported. To ensure consistent processing and accurate visualization within Coralogix, we recommend transforming span attributes and metric labels to align with the supported conventions outlined below.

Span Metrics

Service Catalog

Metric Label
duration_ms_sum span_name, service_name, span_kind, status_code, http_method
duration_ms_bucket span_name, service_name, span_kind, status_code, http_method, le
calls_total span_name, service_name, span_kind, status_code, http_method
duration_ms_count span_name, service_name, span_kind, status_code, http_method

Database Catalog

Metric Label
db_calls_total status_code, db_system, db_namespace, span_name, db_operation_name, db_collection_name, service_name
db_duration_ms_sum status_code, db_system, db_namespace, span_name, db_operation_name, db_collection_name, service_name
db_duration_ms_count status_code, db_system, db_namespace, span_name, db_operation_name, db_collection_name, service_name
db_duration_ms_bucket status_code, db_system, db_namespace, span_name, db_operation_name, db_collection_name, service_name, le

Events2Metrics

Service Catalog

Coralogix/process tag OpenTelemetry attribute
servicename service.name
operationname span.name
tags.error error
tags.http.method http.method
tags.span.kind span.kind
tags.peer.service peer.service
tags.cgx.transaction cgx.transaction
tags.cgx.transaction.root cgx.transaction.root
tags.http.status_code http.status_code
tags.rpc.grpc.status_code rpc.grpc.status_code
process.tags.service.version service.version

Database Catalog

Coralogix/process tag OpenTelemetry attribute
servicename service.name
tags.error error
tags.db.system db.system
tags.db.name db.name
tags.db.namespace db.namespace
tags.net.peer.name net.peer.name
tags.network.peer.name net.peer.name
tags.db.sql.table db.sql.table
tags.aws.dynamodb.table_names db.dynamodb.table_names
tags.db.cosmosdb.container db.cosmosdb.container
tags.db.elasticsearch.path_parts.index db.elasticsearch.index
tags.db.redis.database_index db.redis.database_index
tags.db.mongodb.collection db.mongodb.collection
tags.db.cassandra.table db.cassandra.table
tags.db.collection.name db.collection.name
operationname span.name
tags.db.operation db.operation
tags.db.operation.name db.operation.name
tags.db.statement.blueprint.id db.statement.blueprint.id

Additional resources